Let's Encrypt,免费好用的 HTTPS 证书
Posted 忘忧般若汤
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Let's Encrypt,免费好用的 HTTPS 证书相关的知识,希望对你有一定的参考价值。
https://imququ.com/post/letsencrypt-certificate.html
1、
openssl genrsa 4096 > account.key
2、私钥
openssl genrsa 4096 > domain.key
3、csr文件生成
openssl.cnf文件位置,可以用
find / -name ‘openssl.cnf‘
查找
DNS域名,可以多个,都要可以访问
openssl req -new -sha256 -key domain.key -subj "/" -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:yoursite.com,DNS:www.yoursite.com")) > domain.csr
4.1、验证准备
目录
mkdir ~/www/challenges/
访问引导,注意目录
server {
listen 80; server_name www.yoursite.com yoursite.com; #验证访问 location ^~ /.well-known/acme-challenge/ { alias /home/xxx/www/challenges/; try_files $uri =404; } location / {
#其他访问转向https rewrite ^/(.*)$ https://yoursite.com/$1 permanent; } }
4.2 脚本文件
https://github.com/diafygi/acme-tiny
5 验证
注意用到了1、2的两个文件,并提供验证目录
python acme_tiny.py --account-key ./account.key --csr ./domain.csr --acme-dir ~/www/challenges/ > ./signed.crt
通过验证后,当前目录下就会生成一个 signed.crt
证书文件。
6 合并证书
wget -O - https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem > intermediate.pem cat signed.crt intermediate.pem > chained.pem
7开启(nginx配置,其他和http配置一样)
server { server_name YOUR_DOMAINNAME_HERE; listen 443; ssl on; ssl_certificate ~/www/ssl/chained.pem; ssl_certificate_key ~/www/ssl/domain.key; }
6自动更新脚本
Let‘s Encrypt 签发的证书只有 90 天有效期,用脚本定期更新。
脚本内容和上面步骤一样,验证并获得证书,合并证书,最后重载nginx,注意目录
#!/bin/bash cd /home/xxx/www/ssl/ python acme_tiny.py --account-key account.key --csr domain.csr --acme-dir /home/xxx/www/challenges/ > signed.crt || exit wget -O - https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem > intermediate.pem cat signed.crt intermediate.pem > chained.pem service nginx reload
7定期执行脚本
可执行权限
chmod a+x renew_cert.sh
定期执行(每月一次)
0 0 1 * * /home/xxx/shell/renew_cert.sh >/dev/null 2>&1
以上是关于Let's Encrypt,免费好用的 HTTPS 证书的主要内容,如果未能解决你的问题,请参考以下文章
let's encrypt生成免费https证书 ubuntu+tomcat+nginx+let's encrypt
免费SSL证书Let's Encrypt(certbot)安装使用教程