这仅仅是个笔记,虽然阿里云和腾讯云等云厂商都提供了为期一年的证书,不过长远并不看好
关于 Let’s Encrypt 的介绍自己看官网好了,比较蛋疼是其签发的证书只有 90 天,不过很多人根据 ACME 协议写了可以快速使用的客户端
我用的是 acme.sh,以下备注下常用的操作
安装
curl https://get.acme.sh | sh
签发
使用 acme.sh 有很多种签发证书的方式,考虑到便利,这里使用 DNS API 的方式
拿 CloudFlare 举例,需要先拿到 Global API Key,然后
export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export CF_Email="xxxx@sss.com"
acme.sh --issue --dns dns_cf \
-d example.com \
-d www.example.com
之后,每 60 天会自动 renew 一次的
使用
acme.sh --install-cert
--key-file /path/to/ssl.key \
--fullchain-file /path/to/ssl.crt \
-d example.com \
-d www.example.com
配合 Nginx
server {
listen 80;
listen 443 ssl http2;
server_name example.com;
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";
ssl_prefer_server_ciphers on;
ssl_certificate /path/to/ssl.crt;
ssl_certificate_key /path/to/ssl.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_ciphers 'EECDH+AESGCM:AES256+EECDH';
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
}
最后,来一个 A+