1、准备证书与私钥
demo.crt demo.key
2. 合并证书
(1)由于openssl没有提供windows版本的安装包,可以选择其他开源平台提供的工具。例如可以下载Win64OpenSSL-3_0_0.msi,安装之后才能执行openssl命令。
(2)需要将demo.crt和demo.key两个文件拷贝至OpenSSL/bin目录下,生成的demo.p12也会在bin目录下。
(3)cmd进入到OpenSSL/bin后执行openssl命令。
#openssl pkcs12 -export -in demo.crt -inkey demo.key -out demo.p12 -name demo
注意:
1、 demo.crt 是你的证书
2、 demo.key 是你的私钥
3、 demo.p12 是合并后的证书
4、-name 后面的demo是指定的别名,后面配置tomcat8.5之后的版本需要用到,要记住
5、执行这条命令要设置一个导出密码,后面要用到,要记住,最好6位以上
3.生成keystore文件
(1)安装openjdk version "16"以上版本
原因:如果试图在带有openjdk-1.8.0的计算机上执行keytool命令,可能会出现以下错误。要避免此错误,请从具有openjdk version "16"的计算机上执行keytool命令
keytool error: java.io.IOException: parseAlgParameters failed: ObjectIdentifier() -- data isn't an object ID (tag = 48)
keytool error: java.io.IOException: parseAlgParameters failed: ObjectIdentifier() -- data isn't an object ID (tag = 48)
(2)将第二步生成的demo.p12拷贝至Java\jdk-16.0.2\bin目录下,然后cmd进入到bin目录后执行keytool命令。
#keytool -importkeystore -srckeystore demo.p12 -srcstoretype PKCS12 -destkeystore demo.jks
注意:
1、demo.p12 是第二步生成的证书名
2、demo.jks 是生成的keystore文件名
3、执行这条命令会首先让你设置一个密码,这个密码后面配置会用到,要记住。然后验证上一步设置的密码。推荐该步骤设置的密码与上一步一致,如果不一致可能会出现错误详见 java.security.UnrecoverableKeyException: Cannot recover key -
4.配置tomcat
注意:配置tomcat之前需要将第三步生成的demo.jks拷贝至Tomcat \conf目录下,否则tomcat找不到jks文件。
tomcat 8.5 之前
<Connector SSLEnabled="true" acceptCount="100" clientAuth="false"
disableUploadTimeout="true" enableLookups="false" maxThreads="25"
port="443" keystoreFile="demo.jks" keystorePass="123456"
protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https"
secure="true" sslProtocol="TLS" />
tomcat 8.5 之后
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="demo.jks"
certificateKeyAlias="demo"
certificateKeystorePassword="123456"
type="RSA" />
</SSLHostConfig>
</Connector>
注意:
1、demo.jks 是你前面步骤生成的storekey文件的路径
2、123456 是前面第3步设置的密码
3、tomcat8.5之后有一个certificateKeyAlias这个是2步设置-name的值
参考文章:https://blog.csdn.net/u011719271/article/details/53784785