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

vltsax25  于 2023-02-23  发布在  其他
关注(0)|答案(2)|浏览(160)

我想生成一个自签名SSL证书,并将其用于Tomcat。
我该怎么做呢?

093gszye

093gszye1#

如果出于开发目的要生成用于Tomcat的SSL证书,可以使用这一行程序(需要您的计算机上有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

这将使用tomcatkeyAlias生成密码为changemekeystore.jks文件,该文件对于localhost有效期为9999天
tomcat/conf/server.xml中,您需要像<Connector>中那样指定它

keyAlias="tomcat"
    keystoreFile="/path/to/my/keystore.jks"
    keystorePass="changeme"
    • 自Tomcat 8以来**

根据the documentation
NIO和NIO2 SSL配置属性已弃用,而改用缺省的SSLHostConfig
这意味着现在应将上述值作为connector/SSLHostConfig/Certificate的属性,并使用以下名称:

certificateKeyAlias="tomcat"
    certificateKeystoreFile="/path/to/my/keystore.jks"
    certificateKeystorePassword="changeme"
vhmi4jdf

vhmi4jdf2#

生成自签名SSL证书并添加到JAVA信任库以便与Tomcat一起使用

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

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

  • 其中,365表示证书的有效天数。
  • 上面的命令导出证书,别名为 tomcat
  • 自签名的.jks是密钥存储文件。
  • 输入密钥库的口令。请记下此口令,因为配置服务器时需要此口令。

默认情况下,密钥存储区密码设置为ChangeIt;您可以使用密钥工具实用程序的 -storepasswd 选项将其更改为更安全的内容。
1.当提示输入名字和姓氏时,请输入服务器的域名。例如,myserver或myserver.mycompany.com
1.输入其他详细信息,如组织单位、组织、城市、州和国家(地区)。
1.确认输入的信息正确无误。
1.当提示输入 tomcat 的“Enter key”密码时,按Enter键以使用与密钥存储区密码相同的密码。

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

keytool -list -v -keystore selfsigned.jks

  • “密钥工具”实用程序的 -list 选项列出指定密钥存储文件的内容。
  • -v 选项通知Key Tool实用程序以人类可读的形式显示证书指纹。
  • 出现提示时,输入在步骤2中记下的密钥库密码。将显示有关生成的证书的基本信息。
  • 验证证书的指纹。(验证“所有者”和“颁发者”是否相同。此外,您应看到在步骤3和4中提供的信息)除非指纹匹配,否则不要接受证书并将其安装到应用程序的信任存储区中。
  • 使用密钥工具实用程序的 -export 选项将证书从密钥存储区导出到单独的证书文件,然后可以从该文件将证书导入应用程序的信任存储区。* 例如,以下命令将上面显示的别名为tomcat的证书从密钥存储区(selfsigned.jks)导出到名为selfsigned.cer的证书文件:*

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

  • password 是密钥库密码,请输入步骤2中记录的密钥库密码。
  • 键工具实用程序将使用以下输出进行响应
  • 证书存储在自签名.cer文件中 *
  • 验证证书文件的内容。
  • 您可以仔细检查证书文件的内容,以确保它包含正确的证书。
  • 密钥工具实用程序的 -printcert 选项列出指定证书文件的内容。例如,以下命令列出在上一步中创建的证书文件selfsigned.cer:

keytool -printcert -v -file selfsigned.cer

  • 同样,-v 选项告诉Key Tool实用程序以人类可读的形式显示证书的指纹。
  • 检查keytool -printcert 命令的输出,确保证书正确。
  • 如果应用程序的信任存储区中存在过期证书,则必须使用以下步骤将其删除,否则直接跳至下一步骤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

  • 将证书导入应用程序的信任存储区。密钥工具实用程序的 -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服务器使用。

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"/>

相关问题