我想生成自签名SSL证书,并将其与Tomcat一起使用。
我该怎么做?
答案 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证书。
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 <password> -alias tomcat -file selfsigned.cer
密码是密钥库密码,请输入在步骤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_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 Server使用。
在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是服务器,则不应编辑仅与密钥库一起使用的信任区