【每日阅读】2020年10月9日-Let’s Encrypt!

真诚的希望您能留言与我交流,这会对我有非常大的帮助!

先解释一下什么是Let’s Encrypt。这是一个让所有人免费用上https证书的机构,可以通过命令在linux机器直接生成证书供网站使用。每个证书最长90天有效期。

所以文本就介绍如何申请、如何自动更新证书。

首次配置

参考:

https://github.com/diafygi/acme-tiny

https://imququ.com/post/letsencrypt-certificate.html

# 用于在Let's Encrypt申请证书的账号
openssl genrsa 4096 > account.key
# 网站私钥
openssl genrsa 4096 > domain.key
​
# 下面这两个命令,挑选一个使用
# openssl > 1.1.1使用:
openssl req -new -sha256 -key domain.key -subj "/" -addext "subjectAltName = DNS:yoursite.com, DNS:www.yoursite.com" > domain.csr
# 我的腾讯云服务器使用了下面这个
# openssl < 1.1.1使用(这个ssl配置文件路径因不同机器可能不同,多找找,例如/etc/ssl/openssl.cnf、/usr/local/openssl/ssl/openssl.cnf):
openssl req -new -sha256 -key domain.key -subj "/" -reqexts SAN -config <(cat /usr/local/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:geekgao.cn,DNS:www.geekgao.cn")) > domain.csr
​
mkdir -p /var/www/challenges/
# 配置好nginx,因为Let's Encrypt要请求来验证这个域名在你的控制范围内
server {
    listen 80;
    server_name yoursite.com www.yoursite.com;
​
    # 为了得到证书
    location /.well-known/acme-challenge/ {
        alias /var/www/challenges/;
        try_files $uri =404;
    }
​
    # 确保其他路径转到https去处理
    location / {
        return 301 https://$host$request_uri;
    }
    
    ...the rest of your config
}
# 让上面的nginx配置生效
nginx -s reload
​
# 获取acme_tiny.py脚本
wget https://raw.githubusercontent.com/diafygi/acme-tiny/master/acme_tiny.py
​
# 申请证书,这步结束就有证书了,把signed_chain.crt和domain.key配置在nginx内即可!
python acme_tiny.py --account-key account.key --csr domain.csr --acme-dir /var/www/challenges/ > signed_chain.crt
【每日阅读】2020年10月9日-Let’s Encrypt!插图(1)

配置自动更新

证书只有90天有效期,配置好脚本让服务器自动获取新的证书,解放双手。

#!/usr/bin/sh
python /root/cert/acme_tiny.py --account-key /root/cert/account.key --csr /root/cert/domain.csr --acme-dir /var/www/challenges/ > /root/cert/signed_chain.crt.tmp || exit
mv /root/cert/signed_chain.crt.tmp /root/cert/signed_chain.crt
nginx -s reload
# crontab -e,每月1号凌晨1点50自动更新(随便写的时间,防止和其他太多人一起请求新证书网络拥挤)
50 1 9 * * /root/cert/renew_cert.sh 2>> /root/cert/acme_tiny.log

原创文章,作者:geekgao,如若转载,请注明出处:https://www.geekgao.cn/archives/2581

发表评论

电子邮件地址不会被公开。 必填项已用*标注

GitHub
分享本页
返回顶部