java - 别名 "tomcat"不能识别 key 条目

标签 java web-services ssl tomcat keytool

我通过使用 生成 csr 来请求证书。 openssl .我有私钥文件。现在我想将证书安装在要在 tomcat 中使用的 keystore 中。我尝试了以下方法:

  • 使用以下命令创建 p12 文件:openssl pkcs12 -export -in website_com.crt -inkey website_com.key -name tomcat -out website_com.p12
  • 使用以下命令将其导入 keystore :keytool -importkeystore -deststorepass mypass -destkeystore somename.jks -srckeystore website_com.p12 -srcstoretype PKCS12

  • 导入成功,并在 somename.jks 中创建了 tomcat 别名。用于 ssl 端口的 Tomcat 连接器:
    < Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
                   maxThreads="150" SSLEnabled="true" URIEncoding="UTF-8">
        <!--    <SSLHostConfig sslProtocol="TLS" sslEnabledProtocols="TLSv1.2"  -->    
            <SSLHostConfig protocols="TLSv1.3"
                ciphers="TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384, 
                TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384, TLS_DHE_DSS_WITH_AES_256_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
                TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA,
                TLS_DHE_DSS_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
                TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_DSS_WITH_AES_128_CBC_SHA256,
                TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA,
                TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
                TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_RSA_WITH_AES_256_GCM_SHA384,
                TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384, TLS_DHE_DSS_WITH_AES_256_GCM_SHA384,
                TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256,
                TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_DSS_WITH_AES_128_GCM_SHA256, TLS_EMPTY_RENEGOTIATION_INFO_SCSVF">
                <Certificate certificateKeystoreFile="D:\apache-tomcat-9.0.37\conf\somename.jks"
                             certificateKeystorePassword="mypass"
                             certificateKeyAlias="tomcat"
                             type="RSA" />
            </SSLHostConfig>
        </Connector>
    
    终端窗口截图enter image description here
    知道我在做什么错吗?
    P.S 无法生成新的 CSR 并请求新的证书

    最佳答案

    我通过使用第一步生成的 p12 文件而不是使用 .jks 文件解决了这个问题。

    < Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
                   maxThreads="150" SSLEnabled="true" URIEncoding="UTF-8">
            <SSLHostConfig protocols="TLSv1.3"
                <Certificate certificateKeystoreFile="D:\apache-tomcat-9.0.37\conf\somename.p12"
                             CertificateKeystorePassword="mypass"
                             certificateKeystoreType="PKCS12"
                             type="RSA" />
            </SSLHostConfig>
        </Connector>
    

    关于java - 别名 "tomcat"不能识别 key 条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67209643/

    相关文章:

    java - Android 倒计时计时器

    java - 如何将 ArrayList 添加到 jtable?

    azure - 为什么此 Azure 网站“仅有时”无法显示中间 SSL 证书?

    objective-c - SSL 身份验证在 iOS 模拟器中崩溃

    node.js - 如何配置axios使用SSL证书?

    java - Selenium 快速查找元素是否存在的方法

    java - 如何使用正则表达式从路径中获取最后两个目录?

    java - Stringtoword vector 无法正常工作 weka

    web-services - 建立一个大规模的网络服务

    android - 我是否应该在参数中传递数据库用户和密码来调用 Web 服务以从数据库中获取数据