阿里云通过DNS申请https证书
最近想给自己写一个网站,其实早的时候,服务器上面已近部署了几个http任务,也可以跑,只不过现在
需要部署一些更加严格的消息,觉得http的安全性差了点,怕那天泄露了消息,晚上睡不好。
没办法那就上https吧,先花看188大洋,在阿里云买了一个最便宜的域名10年的使用权.
由于网站给自己使用,而且服务器上面还跑着其它任务,为了避免被攻击,没有开放80以及443端口,所以对于https的免费证书申请只能通过DNS认证
由于什么都是第一次,刚开始借助的都是GPT的推荐,经过本人的测试,记录以下简化版本
首先是通过pip命令安装需要的工具
pip install certbot-dns-aliyun
该项目的github地址:https://github.com/tengattack/certbot-dns-aliyun
只要安装这个就好了,不需要再安装certbot,因为这个环境下,已经帮你装好了certbot
获取阿里云API密钥
登录到阿里云控制台,创建一个RAM用户,并为其分配AliyunDNSFullAccess权限。然后获取该用户的Access Key ID和Access Key Secret。
dns_aliyun_access_key = YOUR_ACCESS_KEY_ID dns_aliyun_access_key_secret = YOUR_ACCESS_KEY_SECRET 确保这个文件的权限是安全的,只能由root用户读取
sudo chmod 600 /etc/letsencrypt/aliyun.ini
最后通过这条命令来获取证书:、certbot certonly --authenticator=dns-aliyun --dns-aliyun-credentials /etc/letsencrypt/aliyun.ini --dns-aliyun-propagation-seconds 60 -d example.com -d www.example.com
其中--dns-aliyun-propagation-seconds参数为获取证书与阿里云交互的时间的秒数。
配置Web服务器使用证书 Certbot成功生成证书后,您需要配置Web服务器使用这些证书。证书文件通常位于/etc/letsencrypt/live/example.com/目录下。
以下是Nginx和Apache的配置示例: Nginx 编辑Nginx配置文件,例如/etc/nginx/sites-available/default:
nginx 复制代码 server { listen 443 ssl; server_name example.com www.example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # 其他SSL配置 }
重新启动Nginx使配置生效:sudo systemctl restart nginx
最后是证书的更新,证书的有效期是三个月。通过 bash 复制代码 certbot renew 的命令可以更新证书,
假如证书需要更新,会自动更新。证书更新之后,还需要重启nginx的服务,certbot提供了钩子函数,可以在更新结束后执行指定的命令。
certbot renew --quiet --deploy-hook "your command "
如果想强制测试更新证书,并执行钩子命令的情况,
用sudo certbot renew --force-renewal --deploy-hook "docker restart nginx"
这个命令也可以测试