0

我正在尝试为我的应用程序设置 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 上运行。

我的配置哪里可能出错?

非常感谢您的宝贵时间。

4

2 回答 2

1

通过首先打开 HTTPS 端口 443/8443 创建新的 Amazon EC2 安全组,然后使用该新创建的安全组启动新的 Amazon EC2 实例来解决该问题。

似乎如果您创建没有 HTTPS 端口 443/8443 的 Amazon EC2 安全组,然后将其分配给实例。之后,您将该安全组更改为包括 HTTPS 端口 443/8443,HTTPS 端口不起作用。

于 2012-06-26T08:10:31.623 回答
0

我有同样的问题,我的应用程序使用 Https,我想将 Tomcat 的端口从 443 重定向到 8443。

最后这对我有用:

/sbin/iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8443

/sbin/service iptables 保存

于 2014-09-11T22:15:06.783 回答