【问题标题】:HTTPS Connection Times out after Tomcat 8 SSL ConfigTomcat 8 SSL 配置后 HTTPS 连接超时
【发布时间】:2016-01-27 03:37:29
【问题描述】:

我以前从未设置过 SSL/TLS,它不起作用,我不知道如何调试它。最初的谷歌搜索没有出现选项。这是我所做的:

  1. 使用openSSL生成私钥和CSR

    openssl req -out CSR.csr -new -newkey rsa:2048 -nodes -keyout privateKey.key

  2. 让我的 csr 签名并从startssl.com 下载证书(第一年免费)

  3. 将根证书、中间证书和我的域证书安装到 .keystore 中,例如:

    keytool -import -trustcacerts -alias root -file root.crt -keystore .keystore

    keytool -import -trustcacerts -alias middle -file intermediate.crt -keystore .keystore

    keytool -import -trustcacerts -alias tomcat -file mydomain.crt -keystore .keystore

  4. 添加了 tomcat 连接器(如下所示,但我必须删除 xml 尖括号或堆栈溢出不会显示它)

    连接器 SSLEnabled="true" acceptCount="100" clientAuth="false" disableUploadTimeout="true" enableLookups="false" maxThreads="25" port="8443" keystoreFile="/home/ec2-user/.keystore" keystorePass="password" protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https" secure="true" sslProtocol="TLS "

  5. 反弹的tomcat,服务器启动成功,服务http请求

  6. 打开catalina.out看到如下错误

    java.io.IOException: 别名 tomcat 不能识别键 进入

  7. 有人建议我通过将根连接到中间证书然后使用下面的命令来创建一个 .pkcs12 文件

    openssl pkcs12 -in mydomain.crt -certfile CA.crt -chain -inkey privateKey.key -out tomcat.p12

  8. 很遗憾,这导致了以下错误:

4294956672:error:0D0680A8:asn1 编码例程:ASN1_CHECK_TLEN:错误 标签:tasn_dec.c:1201: 4294956672:error:0D07803A:asn1 编码 例程:ASN1_ITEM_EX_D2I:嵌套 asn1 错误:tasn_dec.c:374:Type =PKCS12

  1. 然后我尝试将私钥、域、中间和根证书串联成一个.pem文件,然后将其转换为x509

  2. 然后我尝试在 jks & tomcat 中使用 x509 证书,但我得到了同样的错误

java.io.IOException: 别名 tomcat 不能识别关键条目

通过谷歌阅读这篇文章让我更加困惑 - 我阅读了这些关于如何做到这一点的非常自信的教程,它们似乎完全错了。在哪里可以找到有关如何设置的准确指南。

【问题讨论】:

  • 好的,很好,这就是我正在阅读的内容。我尝试创建 pkcs12,但遇到了一些关于证书链的错误,我还没有时间解决这个问题。我看到的一个指南说使用 openssl 根证书,但它不再与 open ssl 捆绑在一起。

标签: tomcat ssl https


【解决方案1】:
  1. 连接 PEM 格式证书链。

    cat 2_host.domain.net.crt 1_Intermediate.crt CA.crt > fullchain.crt

  2. 将 PEM 格式全链转换为 PKCS12

    openssl pkcs12 -export -out tomcat.p12 -inkey ../ssh.key -in fullchain.crt

  3. 检查tomcat.pk12

    keytool -list -keystore tomcat.p12 -storetype PKCS12
    keytool -list -keystore tomcat.p12 -storetype PKCS12 -v

  4. 将 PKCS12 转换为 PKS

    keytool -importkeystore -srckeystore tomcat.p12 -srcstoretype PKCS12 -srcalias 1 -destkeystore tomcat.jks -deststoretype JKS -destalias tomcat

  5. tomcat server.xml 文件
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
           SSLVerifyClient="optional"
           keystoreFile="tomcat.jks"
           keystoreType="JKS"
           keystorePass="mypass"
           clientAuth="false" sslProtocol="TLS" />
  1. 测试tomcat配置

    configtest.sh

【讨论】:

  • 2_host.domain.net.crt 1_Intermediate.crt CA.crt 来自startssl.com
  • configtest.sh 是一件非常重要的事情!
【解决方案2】:

您已导入的条目是 证书 - 为此,您还需要拥有私钥。

要正确设置它,您需要利用类似 openssl 的 PKCS12 功能来创建 PKCS#12 格式存档,然后将其导入包含 PKCS#12 内容的 JKS 文件 (.keystore)。

您可能需要先连接 mydomain.crt+intermediate.crt。

编辑

希望能更清楚地说明这一点:

  1. 将来自 CA 的 middle.crt+root.crt 连接到一个文件 CA.crt 中
  2. 运行 openssl pkcs12 -in mydomain.crt -certfile CA.crt -chain -inkey privateKey.key -out tomcat.p12

完成后,您可以使用 keytool 进行验证

keytool -list -keystore tomcat.p12 -storetype PKCS12

如果您将其视为 privateKeyEntry - 您就是其中的大部分。

keytool -list -keystore tomcat.p12 -storetype PKCS12 -v

将列出入口证书和任何链信息。如果这吐出了您的证书 + 链(应该是一个别名中的 3 个条目),那么您可以将其导入 JKS 文件。

keytool -importkeystore -srckeystore tomcat.p12 -srcstoretype PKCS12 -srcalias 1 -destkeystore tomcat.jks -deststoretype JKS -destalias tomcat

按照提示完成即可。

编辑 2

证书的顺序很重要 - cat mydomain.crt middle.crt root.crt > 全链.crt

以下内容可能会有所帮助 openssl pkcs12 -certfile full-chain.crt -chain -inkey privateKey.key -out tomcat.p12

【讨论】:

  • 大声笑,看到我不小心在上面发表的评论。 CA 给了我一个根证书、中间证书和域证书。我应该将它们连接在一起制作 pkcs12 吗?
  • 这看起来很简单,但似乎每一步都失败了?我将root.crt 和intermediate.crt 复制/粘贴到一个文本板中。我尝试使用和不使用开始和结束证书标签。然后我运行命令并得到以下信息: $ openssl pkcs12 -in domain.com.crt -certfile concat.crt -chain -inkey privateKey.key -out tomcat.p12 4294956672:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1201:4294956672:error:0D07803A:asn1 编码例程:ASN1_ITEM_EX_D2I:nested asn1 错误:tasn_dec.c:374:Type=PKCS12
  • 我会在我上班时将其转换为聊天记录
  • 我无法构建证书包,所以我从头开始并从密钥工具生成了我的私钥和 csr。我想我在创建私钥时搞砸了它阻止了一切,我不确定我到底做错了什么。我想如果我可以创建 pkcs12 来帮助修复它。
  • 我只是去startssl.com支持并获得他们对整个过程的说明才能做到这一点
猜你喜欢
  • 2016-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-24
  • 1970-01-01
  • 1970-01-01
  • 2021-03-07
相关资源
最近更新 更多