【发布时间】:2015-05-08 08:52:59
【问题描述】:
有数百个在 tomcat 上安装 SSL 的指南,但我找不到任何一个可以回答这些关键问题。
安装SSL有两种方式:一种是给我们keytool,另一种是简单的把cert文件放在FS上,把server.xml指向这些文件(不使用keytool)。
如果有人知道答案,我将非常感激以下问题:
- 使用更复杂的密钥工具是否有任何优势,而不是将证书放在 FS 上,例如在 /etc/ssl
- 如果使用 keytool,您必须提供“-keystore xxx.jks”。 xxx.jks 应该放在哪里,例如/root, /home/tomcat7, /etc /var/lib/tomcat7?我只能找到一个说明如何设置密钥库的指南,并说将其放入 tomcat 目录中,这似乎很疯狂,因为当我们升级 tomcat 时,我们会丢失证书,但如果这是一个硬性要求,那么我们可以做到.
- 如果使用keytool,哪个用户应该使用该工具来导入证书、tomcat7或root?
- 他们提供的示例展示了如何将证书导入用于生成原始 csr 的密钥库。我们没有使用它来生成 csr(我们从第 3 方获得了证书)。这是否意味着我们不能使用密钥库,或者需要先生成一个虚拟 csr?
我们不知道哪个 CA 用于颁发证书,因此无法在那里寻找答案。我们有 3 个文件:gd_bundle-g2-g1.crt、our.crt 和 our.key
我们使用 java 7。
----- 更新 1 ------
收到建议说我们不能对现有的密钥/crt 文件使用 keytool(我们认为是由 go daddy 发布的),我们尝试了将密钥/证书直接放入 server.xml 的旧方法,这肯定曾经有效使用旧版本的 tomcat:
我们得到这个错误:
java.io.FileNotFoundException: /usr/share/tomcat7/.keystore (No such file or directory)
---- 更新 2 -----
我们找到了this post,它展示了如何将现有证书与 tomcat 一起使用:
openssl pkcs12 -export -in mycert.crt -inkey mykey.key -out our.p12 -name tomcat -CAfile myCA.crt -caname root -chain
然后编辑server.xml:
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="200" scheme="https" secure="true"
keystoreType="PKCS12"
keystoreFile="/etc/ssl/our.p12" keystorePass=""
clientAuth="false" sslProtocol="TLS" />
但是,这会在 catalina.out 中带来此消息:
SEVERE: Failed to initialize end point associated with ProtocolHandler ["http-bio-443"]
java.net.SocketException: No such file or directory
----- 更新 3 -----
所以我们不知道为什么 433 失败(端口 80 有效,443 上没有其他内容,我们以 root 身份启动它),但是如果我们将其更改为 8443,tomcat 启动时没有错误(万岁!) ,但是当我们导航到 www.oursite.com/ourwebapp:8443 时,我们得到 404。如果我们尝试 https://www.oursite.com/ourwebapp:8443,我们会从 chrome 得到“此网页不可用”。
netstat -a
显示它正在监听端口 8443(和 80,但在 443 上什么都没有)
有什么想法吗?
【问题讨论】:
-
这绝对是主题,不,它不是太宽泛。请不要投票关闭。
-
this answer中给出了你的终极问题的解决方案。