如何创建自签名SSL证书以与Tomcat一起使用?

Bra*_*rks 3 tomcat ssl-certificate

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

我怎样才能做到这一点?

Bra*_*rks 10

如果要为开发目的生成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 -validity 9999 -storepass changeme - keypass changeme

这会产生一个keystore.jks与密码文件changeme使用keyAliastomcat是有效的9999天localhost

在你的tomcat/conf/server.xml,你需要在你的中指定它<Connector>

    keyAlias="tomcat"
    keystoreFile="/path/to/my/keystore.jks"
    keystorePass="changeme"
Run Code Online (Sandbox Code Playgroud)


Hum*_*nce 5

生成自签名的SSL证书并添加到JAVA信任库

  1. 运行以下命令以生成SSL证书。

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

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

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

    • selfsigned.jks是密钥存储文件。

  2. 输入密钥库的密码。请记下此密码,因为在配置服务器时需要此密码。

默认情况下,密钥存储区密码设置为changeit。您可以使用“密钥工具”实用程序的-storepasswd选项将其更改为更安全的名称。

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

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

  3. 确认输入的信息正确无误。

  4. 当提示您输入tomcat的 “ Enter key”密码时,请按Enter以使用与密钥存储区密码相同的密码。

  5. 运行此命令以验证密钥存储区的内容。

    keytool -list -v -keystore selfsigned.jks

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

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

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

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

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

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

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

    • 关键工具实用程序将响应以下输出

      证书存储在文件selfsigned.cer中

  9. 验证证书文件的内容。

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

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

      keytool -printcert -v -file selfsigned.cer

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

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

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


从JAVA信任库中删除SSL证书并删除它。

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

    keytool -delete -noprompt -trustcacerts -alias tomcat -file selfsigned.cer -keystore "$JAVA_HOME/jre/lib/security/cacerts"

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

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

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

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

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

    rm -f selfsigned.cer

    从密钥库中删除SSL证书并删除它。

  • 运行以下命令以从密钥库中删除证书。

    keytool -delete -noprompt -trustcacerts -alias tomcat -keystore selfsigned.jks

  • 密钥工具实用程序提示您输入密钥存储文件的密码:

    输入密钥库密码:

  • 运行以下命令以确认是否从密钥库中删除了证书。

    keytool -list -keystore keytool -list -keystore selfsigned.jks | grep tomcat

  • 密钥工具实用程序提示您输入密钥存储文件的密码:

    输入密钥库密码:

  • 运行以下命令从系统中删除密钥存储文件。

    rm -f selfsigned.jks


  1. 将证书导入到应用程序的信任库中。密钥工具实用程序的-import选项从指定的信任存储区中的证书文件安装证书。

    • 例如,如果客户端应用程序的信任库保存在$ JAVA_HOME / jre / lib / security / cacerts文件中,则以下命令将从上面创建的文件selfsigned.cer安装证书:

      keytool -import -noprompt -trustcacerts -alias tomcat -file selfsigned.cer -keystore "$JAVA_HOME/jre/lib/security/cacerts" -storepass changeit

    • 密钥工具实用程序将响应以下输出:

      证书已添加到密钥库

证书现已完成,可以由Apache Tomcat Server使用。

  1. 在tomcat server.xml中,在文件中查找Connector标签,添加密钥存储文件路径及其密码。请参考以下配置。

    <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"/>
    
    Run Code Online (Sandbox Code Playgroud)