【发布时间】:2014-05-13 01:22:18
【问题描述】:
我正在尝试让 CA 证书/SSL 在带有 Ubuntu 和 Tomcat 7.0.52 的 AWS EC2 实例上运行。浏览器连接失败。以下是我所经历的步骤:
keytool -genkey -alias mydomain -keyalg RSA -keystore mydomain.keystore -keysize 2048
<fill out information>
keytool -certreq -keyalg RSA -alias mydomain -file certreq.csr -keystore ../mydomain.keystore
将 csr 提交到 ssls.com/Geotrust,然后收到: 捆绑.crt www.mydomain.net.crt
将证书导入密钥库:
keytool -import -trustcacerts -alias root -keystore ../mydomain.keystore -file bundle.crt
keytool -import -alias mydomain -keystore ../mydomain.keystore -file www.mydomain.net.crt
接下来,更新 $TOMCAT_HOME/config/server.xml:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" />
<Connector port="8443" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="/home/ubuntu/mydomain.keystore"
keystorePass="xxxxxxx"
clientAuth="false" sslProtocol="TLS" />
然后重启tomcat。
具有安全组的 EC2 实例设置为允许端口 80 和 443。
ipables 对重定向 80->8080 和 443->8443 所做的更改:
sudo iptables -t nat -n -L PREROUTING --line-numbers
Chain PREROUTING (policy ACCEPT)
num target prot opt source destination
1 REDIRECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 redir ports 8443
2 REDIRECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 redir ports 8080
www.mydomain.net 的 DNS 尚未到位,因此我目前正在使用修改后的 /etc/hosts 进行测试:
54.200.126.130 www.mydomain.net
54.200.126.130 mydomain.net
sslscan 不返回任何有效密码。它们都被列为“拒绝”。
openssl 测试:
openssl s_client -connect www.mydomain.net:443
CONNECTED(00000003)
64007:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:s23_clnt.c:602:
切换到使用 keytool 生成的自签名证书可以正常工作(除了强制性的浏览器警告)。所以看来问题一定出在证书和/或密钥库上,但我不确定问题是什么。
【问题讨论】:
-
谢谢!这篇文章对我的帮助最大的是让我意识到我需要在端口 80 和 443(EC2 安全组)上开放流量,并且还需要修改 iptables。
标签: tomcat ssl amazon-ec2