在 Amazon EC2 中使用 tomcat 的 Spring 安全登录 https 不起作用
Posted
技术标签:
【中文标题】在 Amazon EC2 中使用 tomcat 的 Spring 安全登录 https 不起作用【英文标题】:Spring security login https with tomcat in Amazon EC2 not working 【发布时间】:2012-06-26 15:15:38 【问题描述】:我正在尝试为我的应用程序设置 https 登录。在我的本地 Ubuntu 环境中,它运行良好,但是当我将所有内容部署到 Amazon EC2 Ubuntu 时,我无法让它运行。
以下是我所做的:
1 .使用以下方法生成密钥库:
keytool -genkey -alias tomcat -keyalg RSA -keystore /etc/tomcat6/keystore
2 。修改 tomcat server.xml 文件以包含:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
URIEncoding="UTF-8"
redirectPort="8443" />
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/etc/tomcat6/keystore"
keystorePass="tomcat"/>
3 .修改了我的 spring xml 文件以包含:
<http auto-config="false" entry-point-ref="delegatingAEP">
...
<port-mappings>
<port-mapping http="8080" https="8443"/>
</port-mappings>
...
<intercept-url pattern="/login" access="IS_AUTHENTICATED_ANONYMOUSLY" requires-channel="https"/>
<intercept-url pattern="/j_spring_security_check" access="IS_AUTHENTICATED_ANONYMOUSLY" requires-channel="https"/>
...
</http>
4 .对于我的 Amazon EC2 实例,我在 EC2 安全组中打开了 HTTPS 端口 8443。我的本地 Ubuntu 实例不需要。
5 .重新启动Tomcat。当我尝试在 Amazon EC2 中访问 http://www.mysite.com:8080/ 时,它被成功重定向到 https://www.mysite.com:8443/login,但是内容为“此网页不可用”。
相同的配置在我的本地 Ubuntu 中运行良好。我的本地服务器和 Amazon Ec2 服务器都在 Ubuntu 11.10 上运行。
我的配置哪里可能出错?
非常感谢您的宝贵时间。
【问题讨论】:
【参考方案1】:我有同样的问题,我的应用程序使用 Https,我想将 Tomcat 的端口从 443 重定向到 8443。
最后这对我有用:
/sbin/iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8443
/sbin/service iptables 保存
【讨论】:
【参考方案2】:通过首先打开 HTTPS 端口 443/8443 创建新的 Amazon EC2 安全组,然后使用新创建的安全组启动新的 Amazon EC2 实例来解决问题。
似乎如果您创建没有 HTTPS 端口 443/8443 的 Amazon EC2 安全组,然后将其分配给实例。之后您更改该安全组以包括 HTTPS 端口 443/8443,HTTPS 端口不起作用。
【讨论】:
以上是关于在 Amazon EC2 中使用 tomcat 的 Spring 安全登录 https 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
在 Amazon EC2 上运行的 Tomcat 在 AWS 之外无法访问
在 amazon ec2 (beanstalk) 上编辑已部署文件的权限
如何在 Amazon EC2 上部署 Java webapp,以便您可以有效地使用自动缩放?
如何在 Amazon EC2 上部署 Java webapp,以便您可以有效地使用自动缩放?
使用 Ansible playbook 在 AWS (Amazon) ec2 中部署 Play Framework 应用程序