在 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 FTP 写入权限 [关闭]

在 amazon ec2 (beanstalk) 上编辑已部署文件的权限

如何在 Amazon EC2 上部署 Java webapp,以便您可以有效地使用自动缩放?

如何在 Amazon EC2 上部署 Java webapp,以便您可以有效地使用自动缩放?

使用 Ansible playbook 在 AWS (Amazon) ec2 中部署 Play Framework 应用程序