如何创建用于Tomcat的自签名SSL证书?

如何创建用于Tomcat的自签名SSL证书?,tomcat,ssl-certificate,Tomcat,Ssl Certificate,我想生成一个自签名SSL证书,并将其与Tomcat一起使用 如何实现这一点?如果您希望生成用于开发目的的SSL证书,以便与tomcat一起使用,您可以使用此一行程序(在您的机器上需要JDK,因此不使用openssl) keytool-genkey-keyalg RSA-noprompt-alias tomcat-dname “CN=localhost,OU=NA,O=NA,L=NA,S=NA,C=NA”-keystore keystore.jks -有效期9999-storepass chang

我想生成一个自签名SSL证书,并将其与Tomcat一起使用


如何实现这一点?

如果您希望生成用于开发目的的SSL证书,以便与tomcat一起使用,您可以使用此一行程序(在您的机器上需要JDK,因此不使用openssl)

keytool-genkey-keyalg RSA-noprompt-alias tomcat-dname “CN=localhost,OU=NA,O=NA,L=NA,S=NA,C=NA”-keystore keystore.jks -有效期9999-storepass changeme-keypass changeme

这将使用
tomcat
keyalis
生成密码为
changeme
keyalis
文件,该文件对
localhost
有效9999天

在您的
tomcat/conf/server.xml
中,您需要像在

自Tomcat 8以来

根据:

NIO和NIO2 SSL配置属性已被弃用,取而代之的是默认的SSLHostConfig

这意味着上述值现在应作为connector/SSLHostConfig/Certificate的属性,并具有以下名称:

    certificateKeyAlias="tomcat"
    certificateKeystoreFile="/path/to/my/keystore.jks"
    certificateKeystorePassword="changeme"
生成自签名SSL证书并添加到JAVA truststore以与Tomcat一起使用
  • 运行以下命令以生成SSL证书

    keytool-genkey-keyalg RSA-alias tomcat-keystore selfsigned.jks-validity 365-keysize 2048

    • 其中,365表示证书有效的天数

    • 上面的命令导出别名为tomcat的证书

    • selfsigned.jks是密钥存储文件

  • 输入密钥库的密码。请注意此密码,因为您需要此密码来配置服务器

  • 默认情况下,密钥存储密码设置为changeit;你可以使用 键工具实用程序的-storepasswd选项将其更改为其他内容 安全

  • 当提示输入名字和姓氏时,请输入服务器的域名。例如,myserver或myserver.mycompany.com

  • 输入其他详细信息,例如组织单位、组织、城市、州和国家

  • 确认输入的信息正确无误

  • 当提示输入tomcat的“Enter key”密码时,按Enter键使用与密钥存储密码相同的密码

  • 运行此命令以验证密钥存储的内容

    keytool-list-v-keystore selfsigned.jks

    • 密钥工具实用程序的-list选项列出指定密钥存储文件的内容

    • v选项告诉密钥工具实用程序以人类可读的形式显示证书指纹

  • 出现提示时,输入步骤2中记录的密钥库密码。将显示有关生成的证书的基本信息

  • 验证证书的指纹。(验证“所有者”和“发行人”是否相同。此外,您应该看到您在步骤3和4中提供的信息) 除非指纹匹配,否则不要接受证书并将其安装到应用程序的信任存储中。

  • 使用密钥工具实用程序的-export选项将证书从密钥存储导出到一个单独的证书文件,然后从该文件将其导入到应用程序的信任存储中。 例如,以下命令将上述别名为tomcat的证书从密钥存储(selfsigned.jks)导出到名为selfsigned.cer的证书文件:

    keytool-export-keystore selfsigned.jks-storepass-alias tomcat-file selfsigned.cer

    • password是密钥库密码,请输入步骤2中记录的密钥库密码

    • 钥匙工具实用程序以以下输出响应

      存储在selfsigned.cer文件中的证书

  • 验证证书文件的内容

    • 您可以仔细检查证书文件的内容,以确保它包含正确的证书

    • 密钥工具实用程序的-printcert选项列出指定证书文件的内容。例如,以下命令列出了在上一步中创建的证书文件selfsigned.cer:

      keytool-printcert-v-file selfsigned.cer

    • v选项再次告诉密钥工具实用程序以人类可读的形式显示证书的指纹

    • 检查keytool-printcert命令的输出,以确保证书是正确的

  • 如果应用程序的信任存储中存在过期证书,则必须使用以下步骤将其删除,否则直接跳到下一步骤13以导入证书


  • 从JAVA信任库中删除SSL证书并将其删除。

    • 运行以下命令从JAVA信任存储中删除证书

      keytool-delete-noprompt-trustcacerts-alias tomcat-file selfsigned.cer-keystore“$JAVA\u HOME/jre/lib/security/cacerts”

    • 出现提示时,输入密码(默认情况下,密码为changeit)

    • 运行以下命令以确认是否从JAVA信任存储中删除了证书

      keytool-list-keystore“$JAVA_HOME/jre/lib/security/cacerts”| grep tomcat

    • 出现提示时,输入密码(默认情况下,密码为changeit)

    • 运行以下命令从系统中删除证书文件

      rm-f自签名.cer

      从密钥存储中删除SSL证书并将其删除。

    • 运行以下命令从密钥存储中删除证书

      keytool-delete-noprompt-trustcacerts-alias tomcat-keyst
      
          certificateKeyAlias="tomcat"
          certificateKeystoreFile="/path/to/my/keystore.jks"
          certificateKeystorePassword="changeme"
      
      <Connector port="8080" protocol="HTTP/1.1"
                 redirectPort="443"
                 disableUploadTimeout="false"/>
      <Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
                maxThreads="150" scheme="https" secure="true"
                keystoreFile="selfsigned.jks" keystorePass="<password>"
                clientAuth="false" acceptCount="100"/>