前言
在家里搭建了几个服务,需要在外网访问,使用lets encrypt申请的证书,之前是每个域名单独申请的,这样比较麻烦,更新的时候也要每个都更新,于是重新申请了通配符证书,一个就搞定了。
certbot的安装比较繁琐,还好官方提供了docker镜像,申请和更新都能使用docker搞定。
lets encrypt普通的申请方式需要能够从外网访问到80端口,由于我是在家里的环境使用,宽带公司一般默认是封了80和443端口,所以需要使用DNS验证的方式进行申请。
证书申请
$ docker pull certbot/certbot
$ docker run -it --name certbot --network host -v /etc/letsencrypt:/etc/letsencrypt certbot/certbot certonly --manual --preferred-challenges=dns
!注意,如果不是使用的dns申请的,则需要使用到主机的80端口,由于使用端口映射的方式会一直占用端口,所以可以使用主机网络,增加--network host参数
然后输入你的域名,注意*不能忽略
然后根据输出添加一条类型为TXT的域名解析记录,添加完成后,回到终端回车完成申请
证书更新
$ docker run -it --name certbot -v /etc/letsencrypt:/etc/letsencrypt certbot/certbot renew