Let’s Encrypt是一个非盈利的,免费的CA,可以提供免费HTTPS认证服务。 提供了一套完整的工具,基于这套工具,我们可以免费来搭建HTTPS网站。
1 安装Certbot
sudo apt-get install certbot python3-certbot-nginx -y
2 申请证书
每个-d后面是一个域名
sudo certbot certonly --nginx --email email@example.com --agree-tos -d example.com -d www.example.com
申请成功后证书的保存目录:/etc/letsencrypt/live/example.com/
3 修改nginx配置文件
在server {} 内增加https配置
listen 443 ssl http2;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_ecdh_curve X25519:secp384r1;
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1440m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5; ssl_prefer_server_ciphers on;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
add_header Strict-Transport-Security "max-age=31536000; preload";
4 重载nginx配置
sudo systemctl reload nginx
5 检查是否自动启动更新
证书有效期为90天,目前certbot工具每天检查两次,在小于30天的时候会自动更新证书。通过以下命令可以看到运行状态。
sudo systemctl status certbot.timer