Tomcat 8 SSL配置后{HTTPS}连接超时

时间:2016-01-27 03:37:30

标签: tomcat ssl https

我以前从未设置过SSL / TLS,它不能正常工作,我不知道如何调试它。初始的谷歌搜索没有出现选择。这就是我所做的:

  1. 使用openSSL生成私钥和CSR

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

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

  3. 将root,intermediate和my domain cert安装到.keystore中,如:

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

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

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

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

    连接器SSLEnabled =" true" acceptCount =" 100" clientAuth ="假" disableUploadTimeout ="真" enableLookups ="假" maxThreads =" 25"    端口=" 8443" keystoreFile =" /home/ec2-user/.keystore" keystorePass ="密码"协议=" org.apache.coyote.http11.Http11NioProtocol"方案=" HTTPS"固定="真" 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. 不幸的是,这导致了以下错误:

  9.   

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

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

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

    3.   

      java.io.IOException:别名tomcat不识别密钥条目

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

2 个答案:

答案 0 :(得分:1)

  1. 连接PEM格式证书链。
      

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

  2. 将PEM格式的fullchain转换为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 -ssccalias 1 -destkeystore tomcat.jks -deststoretype JKS -destalias tomcat

  5. tomcat server.xml文件
  6. $ kill 1234
    1. 测试tomcat配置
        

      configtest.sh

答案 1 :(得分:0)

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

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

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

修改

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

  1. 将CA中的intermediate.crt + root.crt连接到一个文件CA.crt
  2. 运行openssl pkcs12 -in mydomain.crt -certfile CA.crt -chain -inkey privateKey.key -out tomcat.p12
  3. 完成后,您可以使用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 -ssccalias 1 -destkeystore tomcat.jks -deststoretype JKS -destalias tomcat

    按照提示操作,您应该完成。

    编辑2

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

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