Java Tomcat上的证书配置

Java Tomcat上的证书配置,java,tomcat,ssl-certificate,tomcat8,keytool,Java,Tomcat,Ssl Certificate,Tomcat8,Keytool,首先,我知道已经有人问过类似的问题,我尝试按照建议进行故障排除,但没有任何运气。所以,我认为我最好还是发帖子寻求帮助。提前感谢您的帮助 问题:我做错了什么?我应该检查什么/哪里 目标:我正在尝试在Tomcat上设置证书。我有Tomcat 8.5,%JAVA\u HOME%=“C:\Program Files\JAVA\jdk1.8.0\u 121”和我用以下命令生成的证书: keytool -genkeypair -alias cert -keyalg RSA -keysize 2048 -si

首先,我知道已经有人问过类似的问题,我尝试按照建议进行故障排除,但没有任何运气。所以,我认为我最好还是发帖子寻求帮助。提前感谢您的帮助

问题:我做错了什么?我应该检查什么/哪里

目标:我正在尝试在Tomcat上设置证书。我有Tomcat 8.5,%JAVA\u HOME%=“C:\Program Files\JAVA\jdk1.8.0\u 121”和我用以下命令生成的证书:

keytool -genkeypair -alias cert -keyalg RSA -keysize 2048 -sigalg SHA256withRSA -keypass 123456 -storepass 123456 -keystore d:\cert.jks
并填写我的姓名和其他信息等来生成密钥对

我看到很多YouTube视频和其他说明提到“genkey”而不是“genkeypair”,但这台计算机上没有这个选项。无论如何,我通过添加以下内容修改了server.xml文件:

<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true">
  <SSLHostConfig>
    <Certificate certificateKeystoreFile="D:\cert.jks" type="RSA" keystorePass="123456" />
  </SSLHostConfig>
</Connector>

问题就在这里。密钥库类型是JKS,而不是RSA1。密钥对类型为RSA

您可能还必须将密钥对/证书项重命名为“tomcat”或tomcat 8中的默认值,或者告诉tomcat使用别名“cert”(糟糕的选择)

  • 因为您没有为
    keytool
    指定任何其他类型

  • FWIW,我可以让它与HTTP/1.1协议一起工作-更简单

    基本上,被取代了

    <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true">
      <SSLHostConfig>
        <Certificate certificateKeystoreFile="D:\cert.jks" type="RSA" keystorePass="123456" />
      </SSLHostConfig>
    </Connector>
    
    
    
    用这个

    <Connector port="443" protocol="HTTP/1.1"
                   maxThreads="150" SSLEnabled="true" scheme="https" secure="true" 
                   clienAuth="false" sslProtocol="TLS" keystoreFile="/conf/.keystore" keystorePass="123456" />
    
    
    

    继续阅读更多关于Tomcat和商店类型的内容。这里有一条有趣的线索:

    谢谢@EJP。请在这里耐心等待我-第一次使用Tomcat。您的意思是,既然文件名是cert.jks,type的值应该是jks吗?下面是server.xml模板的示例:文件名与此无关。由于在使用keytool时没有指定备用密钥库类型,因此它生成的默认密钥库类型是JKS。我不知道你为什么要发布与我已经指出的错误相同的摘录。谢谢你的澄清。我第二次发布的只是server.xml中的原始模板。只是想确保我理解正确。抱歉,如果这让你生气了。你应该在第一时间发布,或者当你重新发布时,你应该说明原因。否则就毫无意义了。你已经发布了,我也引用了。再次感谢你的帮助。再次抱歉,你对我所做的感到恼火。虽然投票结果为“-1”,但我发现这个回答很有用
    <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true">
      <SSLHostConfig>
        <Certificate certificateKeystoreFile="D:\cert.jks" type="RSA" keystorePass="123456" />
      </SSLHostConfig>
    </Connector>
    
    <Connector port="443" protocol="HTTP/1.1"
                   maxThreads="150" SSLEnabled="true" scheme="https" secure="true" 
                   clienAuth="false" sslProtocol="TLS" keystoreFile="/conf/.keystore" keystorePass="123456" />