https越来越流行了,但免费的证书一般是一年有效期。一般是够用了,但懒人都想一劳永逸,
有个免费证书颁发机构是letsencrypt。它是开源,并且完全免费的,它颁发的证书已经被几乎所有的浏览器所认可。证书90天有效期,支持自动续订。
自己的服务器使用docker进行部署的,基本上有新项目都强迫症般docker化。letsencrypt这肯定支持docker运行的。
本地使用Nginx反向代理的,比如我的一个域名https://git.dxgz.work/
location ~ /.well-kNown{ # https证书自动更新 proxy_pass http://127.0.0.1:88; # certon自动更新接口 }
88端口是cerbot的容器的端口,重载配置
sudo /usr/sbin/Nginx -s reload # 这个是装在主机的Nginx重载命令
docker exec -it Nginx.web /usr/sbin/Nginx -s reload # 我是使用docker的,要用这个命令
certbot第一次运行时需要配置域名和邮箱地址,之后使用renew就可以了
docker run -it --rm -p 88:80 --name certbot \ -v "/data/ssl:/etc/letsencrypt" \ certbot/certbot \ certonly --standalone \ --email `你的邮箱地址` \ -d `你的域名地址` -d www.`你的域名地址`
上述命令将域名的ssl证书放在本地 /data/ssl
因为有效期限制,需要配置自动更新,比如这样,放到crontab定时任务中
renew_cert.sh
# 运行docker-更新证书 cd /data/letsencrypt && docker-compose up # reload Nginx 配置,加载新证书 #docker exec -it Nginx.web /usr/sbin/Nginx -t docker exec -it Nginx.web /usr/sbin/Nginx -s reload
上面的docker-compose.yml内容
version: '3' services: web: image: certbot/certbot container_name: certbot.ssl.web volumes: - /data/ssl:/etc/letsencrypt ports: - "88:80" command: renew
crontab -e 添加一个定时任务,当然了,docker是需要root权限启动的,或者配置了普通用户运行
0 0 * * * /data/letsencrypt/renew_cert.sh > /dev/null 2>&1
每天凌晨0点运行
得到证书后,配置Nginx,请参考我的另一博客
以上
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。