使用LetsEncrypt的免费SSL证书(付费的好贵😢),使用acme.sh
脚本提供的API完成。
一、安装acme.sh
acme.sh
的github仓库中的wiki提供了四种安装方法,可以自行查看,这里个人使用第一种方法:
1 | curl https://get.acme.sh | sh -s email=my@example.com |
通过curl命令直接下载安装。
二、使用dnsapi生成证书
dnsapi生成证书的方法会因为dns服务提供商的不同而不同,具体请查阅wiki。
本人所使用的dns服务提供商为Hurricane Electric,此服务提供商使用dnsapi生成证书的方法如下:
1 | export HE_Username="yourusername" |
先定义两个变量分别为Hurricane Electric的账号和密码,然后直接输入以下命令生成证书:
1 | acme.sh --issue --dns dns_he -d example.com -d www.example.com |
此处仅生成一级域名example.com
的证书和二级域名www.example.com
的证书,若想申请所有二级域名的证书,可以使用通配符*.example.com
。
三、安装证书
默认生成的证书位于~/.acme.sh/
下,此处的文件为内部使用,结构可能发生变化,一般不直接使用此处的证书文件,而是将其copy安装到其他路径。此处分apache和nginx两种copy方法,由于个人使用的是静态博客,仅为nginx驱动,所以使用nginx方法,apache方法可以自行去acme.sh的github仓库查看。nginx方法如下:
1 | acme.sh --install-cert -d example.com \ |
此处原本的--reloadcmd
为service nginx force-reload
,但个人使用时提示nginx.service未处于活跃状态,故更换为nginx -s reload
。
安装完成后就可以将key.pem
和cert.pem
的文件路径填入nginx的配置文件中了。由于使用的是dnsapi方法生成证书,此方法会自动更新证书,不需要担心证书过期。
四、过程中遇到的问题
LetEncrypt在申请证书连续失败次数过多时会拒绝证书颁发服务,所以如果连续五次生成证书失败,之后再生成会提示errorcode:429
,此时只需要等待1个小时之后再重新进行操作即可。
发布时间: 2021-06-14
最后更新: 2024-05-12
本文标题: 在服务器上申请SSL证书——使用API完成
本文链接: https://cloudflare.luhawxem.com/2021/06/13/InstallAndGenerateSSLCertificate/
版权声明: 本作品采用 CC BY-NC-SA 4.0 许可协议进行许可。转载请注明出处!