Let's Encrypt:初次使用免费的ssl证书,并生成java用的 jks(keystore) 文件

现在都流行 https,今天晚上花了二个小时,学习了一下,这里做个学习总结:

因为刚开始接触,就使用免费的:Let's Encrypt

Let's Encrypt证书特点:

1. 现在主流的浏览器(chrome, firefox, ie)都支持 Let's Encrypt 证书。

2. 申请ssl证书简单快捷,用户名都不需要注册就能获取。

3. 免费证书有效期: 3 个月,到期后需要重新获取证书,重新安装。

我是根据 http://www.itbulu.com/ssl-for-free.html 提供的信息来操作的:

从 https://www.sslforfree.com 获取免费ssl证书。

只需简单的上传一个文件,验证一下网站的所有者就可以了。

注意:下载的文件存放在 /.well-known/acme-challenge/   由于文件夹[.well-known]中含有一个小数点,所以在iis中需要配置一下MIME类型,否则上传的验证文件无法访问。

获取到的证书文件有3个:

ca_bundle.crt

certificate.crt

private.key

由于我是在 iis 上使用,iis 安装ssl证书需要的是一个 .pfx 文件。这需要使用 openssl.exe 生成一个 .pfx 文件。

好在我电脑上原来有一个自已编译的 openssl.exe,刚好能用上。

根据 www.sslforfree.com 的提示,执行下列命令生成 certificate_combined.pfx:

openssl pkcs12 -export -out "certificate_combined.pfx" -inkey "private.key" -in "certificate.crt" -certfile ca_bundle.crt

输入一个密码,然后再重复输入一次密码,就 生成 certificate_combined.pfx 文件了。

然后在iis上,在一个站点上点右键,查看【属性,配置服务器证书,选择【从 .pfx 文件导入证书】。

这样就完成了 http -> https 的升级。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

将 cert 和 key 文件转换成java使用的 jks(keystore)文件的方法:


1. 生成 PKCS#12 文件

openssl pkcs12 -export -in "certificate.crt" -inkey "private.key" -certfile "ca_bundle.crt" -out "qlz.p12" -name "qlz"

验证文件(测试用,这一步不重要): keytool -rfc -list -keystore qlz.p12 -storetype pkcs12

2. 生成 jks 文件 (参考: https://stackoverflow.com/questions/11952274/how-can-i-create-keystore-from-an-existing-certificate-abc-crt-and-abc-key-fil)

keytool -importkeystore -srckeystore qlz.p12 -srcstoretype PKCS12 -destkeystore qlz.jks -deststoretype JKS

完工,生成的 qlz.jks 就可以供 java 直接使用。

 --------------------------------------------------------------------------------------------------------------------------------------------------------------------

需要注意的地方:

1. 如果有多个站点,其中一个开启了https,就会占用 443 端口。另一个站点如果同时想开启https,就会提示失败,因为无法开启443端口了。

查了一下相关资料,说是 iiis 6,因为使用ssl,无法读取请求的主机头(host),所以只能读取配置的第一个ssl证书,如果有多个ssl证书,就无法正确与host相匹配了。 好像说 iis8开启一个功能*SNI (Server Name Indication),就能解决这个问题。

2. 每隔3个月,证书到期一次,需要重复操作一次,更新证书。

原文地址:https://www.cnblogs.com/personnel/p/7795557.html