Just4U 不会算圈图的程序猿不是个好厨子

LetsEncrypt申请泛域名

2020-03-01

1. certbot客户端申请泛域名

以前用的acme.sh客户端,不过这次申请泛域名的时候有个SOURCEIP的参数实在不知道是干嘛的,尝试了好几个都报错, 然后换了certbot,发现这个更简单更方便。

域名就以本网站的域名whatsroot.xyz为例。

  • 使用git下载客户端: git clone https://github.com/certbot/certbot.git

  • 生成证书: ./certbot-auto certonly --manual --preferred-challenges=dns --server https://acme-v02.api.letsencrypt.org/directory --agree-tos -d *.whatsroot.xyz

大部分参数的解释certbot-auto -h一下就能找到,其中certonly表示仅仅获取或更新证书,但是不安装证书, --manual表示使用交互模式或使用shell脚本, --preferred-challenges表示使用dns的方式验证域名,在这里有说明,Getting certificates章节。 --server 的作用是指定证书生产的服务器,这里有说明,在Changing the ACME Server章节有介绍。 注意文档里说,如果使用--server指定一个较新的证书颁发机构地址,可能会获取到泛域名证书。所以如果不指定acme-v02而是使用默认的acme-v01就无法获取泛域名? 我没测试,有兴趣的可以测试下。--agree-tos是同意ACME服务器的订阅,所以交互的时候还会让你输入Email地址。-d 后面即为域名,注意书写格式,表示泛域名。

  • 交互过程 上一步回车之后会进入几个交互界面,询问是否可以绑定IP,可能还有让你输入联系的Email等,主要注意的是在类似于Please deploy a DNS TXT record under the name... 即需要你在DNS中添加TXT记录这一步,需要先去DNS那里添加一个记录。比如我用的namecheap的DNS,进到域名设置这里添加一个记录,类型选txt,域名填_acme-challenge, 之后把下面的那传值填好,保存即可。注意添加域名时只需要填_acme-challenge就好了,不要把_acme-challenge.whatsroot.xyz全都填上。然后稍等几分钟, 我的namecheap亲测几秒后就可以,国内的可能稍有延迟。之后继续,直到出现”congratulations !…“说明证书申请成功。

2. 自动更新

到目前为止证书申请成功,由于certbot申请泛域名证书时有一步是在dns中添加txt记录,这一步需要手动去DNS提供商那里去添加,所以没法直接添加corntab中直接自动更新。 当然也有解决办法,就是利用DNS提供商那里的API,然后实现自动更新。开启DNS API可能需要申请, 比如我用的namecheap家的还需要账户要大于50刀余额或者近两年消费满50刀才能申请开启,不过即便我开启了API我也没找到具体是哪个API可以直接添加一个txt记录。 实在想使用自动更新的小伙伴可以去看看github上这个项目(https://github.com/ywdblog/certbot-letencrypt-wildcardcertificates-alydns-au)。

手动更新只需要certbot-auto renew即可。

3. 安装证书

使用certbot安装证书非常简单,比如我用nginx的话,直接在certbot文件夹下执行:certbot-auto --nginx即可,剩下的按照提示来就可以了。 由于申请了泛域名,所以可以给多个域名及二级域名安装证书。安装好证书后,启动nginx,设置好dns在chrome浏览器访问下就能看到是否成功了。

还需要注意:生成的证书默认在/etc/letsencrypt/live/你的域名/ 文件夹下,同时在/etc/letsencrypt/live/目录下有个README文件,可以打开看下, 里面有对各个文件的说明:

`[cert name]/privkey.pem`  : the private key for your certificate.
`[cert name]/fullchain.pem`: the certificate file used in most server software.
`[cert name]/chain.pem`    : used for OCSP stapling in Nginx >=1.3.7.
`[cert name]/cert.pem`     : will break many server configurations, and should not be used

所以常用的就是证书文件[cert name]/fullchain.pem及key文件[cert name]/privkey.pem,你的key文件应该保密且备份好。 但是/etc/letsencrypt/下的文件在不了解的情况下不要移动,否则可能导致找不到证书。

如果申请了多个证书,想安装某个域名的证书时也可以直接用certbot-auto --nginx -d your-domain的方式。

4. github博客

这个博客就是用github pages + Jekyll 搭建的,然后使用了namecheap家的域名。由于github禁止了百度的爬虫,所以在CODING上做了镜像, 使用DNSPod国内IP走CODING,国外IP走github,但是CODING的pages服务升级,个人域名改变,加上namecheap家的DNS服务太弱了, 没法区分国内国外IP,所以没办法添加两条解析,目前使用的为couldflare的免费cdn,效果不明显,且好像没有解决百度搜索的问题。

5. 一些其他上网服务

能申请证书之后其他在vps上的服务就顺利多了,教程也非常多,就不介绍了。


上一篇 J1939 入门教程

Comments

Content