阿里云服务器 Certbot 申请 LetsEncrypt 泛域名免费证书
准备工作
首先,要有一个域名,且使用 阿里云DNS 提供解析服务。系统Centos 7.6以上 查看系统版本命令:lsb_release -a
其次,要在阿里云 https://ram.console.aliyun.com/ 创建一个子账号并配置 RAM 权限 AliyunDNSFullAccess,并为子账号生成AccessKey用于通过API管理DNS解析。
1.安装Python
这里我使用了 Python 虚拟环境的方式安装 Certbot,这样的好处是 pip 安装任何依赖包不会对当前系统造成任何影响
yum install python36 -y
2.配置环境(一步一步执行)
mkdir -p /opt/soft/tool/certbot/
cd /opt/soft/tool/certbot/
python3 -m venv venv
source venv/bin/activate
3.安装certbot-nginx
pip install certbot certbot-nginx certbot-dns-aliyun
下列错误解决 执行:pip install --upgrade pip 后再执行步骤3 遇到下列问题忽略,输入你的邮箱即可
4.配置AK(全部粘贴)
cat > /opt/soft/tool/certbot/credentials.ini <<EOF
certbot_dns_aliyun:dns_aliyun_access_key = *********
certbot_dns_aliyun:dns_aliyun_access_key_secret = ***********
EOF
chmod 600 /opt/soft/tool/certbot/credentials.ini #赋予文本权限
5.申请证书 my.com是你在nginx解析的域名(全部粘贴)
/opt/soft/tool/certbot/venv/bin/certbot certonly \
-a certbot-dns-aliyun:dns-aliyun \
--certbot-dns-aliyun:dns-aliyun-credentials /opt/soft/tool/certbot/credentials.ini \
-d my.com \
-d "*.my.com"
成功申请后,会有提示证书的存放位置。
6.在nginx配置证书(文本贴入nginx.conf)
server {
listen 443 ssl;
server_name my.com;
client_max_body_size 80M;
ssl_certificate /etc/letsencrypt/live/my.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/my.com/privkey.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!kEDH!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Real-IP $remote_addr;
proxy_redirect off;
proxy_connect_timeout 20;
proxy_send_timeout 60;
proxy_read_timeout 60;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
}
7.因为Certbox颁发证书有效期90天,所有需要Centos自动续签
echo "0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && /opt/soft/tool/certbot/venv/bin/certbot renew -q" | sudo tee -a /etc/crontab > /dev/null
|