【问题标题】:Install SSL on EC2 Tomcat server在 EC2 Tomcat 服务器上安装 SSL
【发布时间】: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


【解决方案1】:

Tomcat 文档谈到 keyAlias:“如果未指定,将使用在密钥库中读取的第一个密钥。”,但这是一个很好的问题。但是,它并没有解决我所有的问题。我联系了 GeoTrust,他们建议下载 PKCS #7 证书,该证书有效。奇怪的是,鉴于 tomcat 文档说“Tomcat 目前仅在 JKS、PKCS11 或 PKCS12 格式的密钥库上运行”。最后是与 CA 的两次支持聊天,有赏金的堆栈溢出帖子,几个小时的 openssl 和 keytool 测试。经验教训:看起来 CA,因为他们接到了支持电话,所以有最好的文档(不是 tomcat)。

https://knowledge.geotrust.com/support/knowledge-base/index?page=content&id=SO15323

【讨论】:

    【解决方案2】:

    除非您在 Connector. 上指定 keyAlias 属性,否则 Tomat 假定密钥库别名为“tomcat”,只需添加 keyAlias=mydomain,或使用 keytool. 将别名重命名为“tomcat”

    【讨论】:

    • 来自 keyAlias 上的 tomcat 文档:“如果未指定,将使用在密钥库中读取的第一个密钥。”
    • 无论如何都给了你信任,因为你让我通过了第一个障碍。希望 SO 能更好地处理这个问题。
    • 文档可能会这么说,但我的经验不是它实际上是这样工作的。
    • 经过这次经历,我相信你。我认为tomcat 应该修复或删除他们的SSL 文档。最好没有,那就错了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    • 2018-03-17
    • 1970-01-01
    • 2018-02-05
    • 2013-03-24
    • 1970-01-01
    • 2019-04-01
    相关资源
    最近更新 更多