zoukankan      html  css  js  c++  java
  • 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个月,证书到期一次,需要重复操作一次,更新证书。

  • 相关阅读:
    react 给选中的li添加样式
    纯css实现移动端横向滑动列表
    从一个Git仓库转移到另外一个仓库
    create-react-app 创建react项目 多页面应用
    JetBrains出品,一款好用到爆的数据库工具
    gloox环境搭建并运行example(小白教程,有图版本)
    Dubbo服务注册原理
    永久解决 matplotlib 图例中文方块错误
    对称二叉树
    SpringBoot运行原理
  • 原文地址:https://www.cnblogs.com/personnel/p/7795557.html
Copyright © 2011-2022 走看看