通常,在创建HTTPS的服务器的时候都需要一个网站的SSL证书文件,但是在网上找到的文档基本上都是在介绍怎么自己用keytools创建一个证书,但是这种方法申请的证书根本不会被广大网民的浏览器认证,所以想要创建一个大家都能访问的HTTPS服务,则从一个受信任的机构去申请一个证书。
而从认证网站上下载的证书中并不会包括TOMCAT可以使用的jks证书文件,那么必须要先将证书转换为TOMCAT可以使用的格式。
一般来说,我们拿到的证书文件如下:(temp是文件名同样也是我们以下示例中的证书名)
1. temp.crt(自己网站的证书文件)
2. temp.key (可选,私钥,可以自己通过crt生成)
3. root.crt(可选,证书认证机构自己的根证书)
第一步:
合并证书,生成temp.p12文件
命令行输入:
openssl pkcs12 -export -in temp.crt -inkey temp.key -out temp.p12 -name temp
此时会提示你创建自己的密钥和重复输入,这个密码请记住,下面我们还会使用
第二步:
生成 keystore 文件(jks) 需要输入上一步的导出密码,及指定新的 keystore 密码 后面几步的导入需要用到这个密码。
<pre name="code" class="plain">keytool -importkeystore -srckeystore temp.p12 -srcstoretype PKCS12 -destkeystore temp.jks
此时会提示你输入第一步的密码,并且输入新的 keystore 密码
第三步 (可选):
生成公钥
<pre name="code" class="plain">openssl rsa -in temp.key -out temp_public.key
第四步(可选) :
合并颁发机构的根证书(即添加信任)
alias:信任的证书的描述
ca.crt:要添加的信任证书 同样可以是pem等格式
<pre name="code" class="plain">keytool -keystore temp.jks -import -trustcacerts -alias alias -file ca.crt
附录:
TOMCAT配置:
/data/app/test/temp.jks:你证书文件
123456:你的证书密码
<Connector port="8080" protocol="HTTP/1.1"
SSLEnabled="true" maxThreads="25" scheme="https"
secure="true" clientAuth="true" sslProtocol="TLS"
keystoreFile="/data/app/test/temp.jks" keystorePass="123456" />