• [转]部署Let’s Encrypt免费SSL证书&&自动续期


    最近公司网站要用https,从自己摸索到找到国内的免费证书到选购正式的收费证书,最后老板说:太贵!不要。一脸懵逼的听老板提到Let’s Encrypt证书,没办法,用呗。之前是有一些了解,国外发布的一款纯免费证书,只是觉得天下没有免费的午餐,免费和收费的差距肯定还是有的。于是,硬着头皮开始鼓捣Let’s Encrypt证书。
     
    前言
    Let's Encrypt 作为新的证书颁发机构,免费,自动,开放,这三点对于个人用户来说尤为重要。免费自不用说,自动更是免去了很多过程和麻烦。官网目前推荐的获取和安装方式是 certbot ,只需要简单运行一些命令并作一些配置即可。
     
    前提
    1.需要有域名,它会生成指定域名的证书。(填IP会报错不支持的)
    1.需要在域名指向的服务器上能访问https。(不然会报找不到443端口的错误)
    2.需要linux环境。
     
    部署
    获取Let's Encrypt
    ##获取
    wget https://dl.eff.org/certbot-auto  
    ##设置为可执行
    chmod a+x certbot-auto
     
    执行自动部署
    ./certbot-auto
    部署过程中会下载一大堆的依赖包,不需要紧张。如果需要确认,(输入"y")确认就好了
    这里注意下,在执行过程中,会卡在'Installing Python packages',等待一段时间下载Phthon lib
     
    如果等待很长时间都不动, 等不及了就修改pip下载源。
    vi ~/.pip/pip.conf
    #如果文件不存在则创建
    mkdir ~/.pip
    vi pip.conf
    在里面修改或写入下面内容
    [global]
    index-url = http://mirrors.aliyun.com/pypi/simple/
    [install]
    trusted-host=mirrors.aliyun.com
    重新执行自动部署
    ./certbot-auto
    重新部署依然会在'Installing Python packages'卡一会儿,但不会很久,五分钟以内吧。
    依赖包下载完后会进入交互界面,依次是: 填写邮箱、域名(多域名用空格或逗号隔开)、条款确认、验证域名所有权(这一步可以选择第一种方式,手动选择tomcat的root目录)
    执行成功后会显示
    Congratulations! Your certificate and chain have been saved at  
    /etc/letsencrypt/live/xxx.com/fullchain.pem. Your cert will
    expire on 2016-10-05. To obtain a new or tweaked version of this
    certificate in the future, simply run certbot-auto again. To
    non-interactively renew *all* of your certificates, run
    "certbot-auto renew"
    此时的生成的证书文件(.pem)都已经在如下路径了
    /etc/letsencrypt/
    #主要用到的文件(.pem)在
    /etc/letsencrypt/live/xxxxx(域名)/
     
     
    自动续期
    Let's Encrypt申请的证书会有三个月的有效期,可以到期前手动续约,也可以自己写定时脚本任务自动续约。嫌手动麻烦,就写了个简单的续期脚本。
     
    1、脚本
    #/bin/sh
    #续期   说明:只用renew的话,会先检查证书是否需要更新,大概是距离到期还有三天或者十几天之内才会执行更新,否则会提示不需要更新。(昨天更新了证书,今天直接用renew,提示不允许更新)
    #这里方便测试,增加参数--force-renew,能够强制立即更新(但好像也会有检查,时间会变短,比如我刚才更新过了,马上再次执行会报错并提示不需要更新)。
    ./certbot-auto renew --force-renew
    #生成p12
    cd /mnt/web/letsTemp &&  openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out fullchain_and_key.p12 -name tomcat -passin passyourPKCS12pass  -passout pass:yourPKCS12pass  
    #移动新生成的证书文件
    cp /etc/letsencrypt/live/yourDomain/fullchain.pem /mnt/web/letsTemp
    cp /etc/letsencrypt/live/yourDomain/privkey.pem /mnt/web/letsTemp
    #生成jks文件
    #备份并删除原jks文件
    mv /mnt/web/letsTemp/MyDSKeyStore.jks /mnt/web/letsTemp/MyDSKeyStore`date '+%Y-%m-%d'`.jks
    cd /mnt/web/letsTemp && keytool -importkeystore -deststorepass yourKeyPass  -destkeypass yourKeyPass  -destkeystore MyDSKeyStore.jks -srckeystore fullchain_and_key.p12 -srcstoretype PKCS12 -srcstorepass yourPKCS12pass  -alias tomcat
    #重启服务器
    /mnt/web/tomcat/tomcat8/bin/restartup.sh
     
     
    2、定时任务
    脚本有了,还需要在linux中添加一个定期执行脚本的任务,这里用linux自带的cron来处理这部分。
    crontab -e
    在打开的编辑器中添加如下内容(每个月1号凌晨3点更新)
    0    0  3 *  *  sh /mnt/web/lets/ssl_auto_auth.sh >/dev/null 2>&1 &
     
    最后
    感谢下面两个博文作者提供的帮助。
    http://ju.outofmemory.cn/entry/269602
    https://melo.myds.me/wordpress/lets-encrypt-for-tomcat-7-on-ds/
    https://github.com/letsencrypt/boulder/issues/1517
    [from:http://www.linuxdiyf.com/linux/24147.html]
     
  • 相关阅读:
    C#各版本新特性
    ubantu操作积累
    C# System.Net.Http.HttpClient使用说明
    IIS下VUE跳转
    融合主流的技术 分布式中间件+微服务+微架构架构
    论减少代码中return语句的骚操作
    shell脚本--多个代码库批量pull最新master代码
    SpringBoot单元测试
    Qt音视频开发36-USB摄像头解码qcamera方案
    Qt音视频开发35-Onvif图片参数
  • 原文地址:https://www.cnblogs.com/lzpong/p/6433189.html
Copyright © 2020-2023  润新知