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

时间:2017-03-01 20:24:19

标签: tomcat ssl-certificate

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

我该怎么做?

3 个答案:

答案 0 :(得分:8)

如果您想为开发目的生成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生成keyAlias个密码为tomcat的{​​{1}}个文件,localhost <有效期为9999天< / p>

tomcat/conf/server.xml中,您需要在<Connector>

中明确指定
    keyAlias="tomcat"
    keystoreFile="/path/to/my/keystore.jks"
    keystorePass="changeme"

答案 1 :(得分:2)

要生成自签名的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

    • 密码是密钥库密码,请输入在步骤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 中,则以下命令将从文件自签名中安装证书。上面创建的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"/>
    

答案 2 :(得分:0)

如果Tomcat是服务器,则不应编辑仅与密钥库一起使用的信任区