Let’s Encrypt 免费申请泛域名 SSL 证书教程
很早以前就开始使用 Let's Encrypt 免费 ssl 证书,虽然每隔 90 天就要重新申请验证,不过由于其免费而且网上提供了定时任务脚本,每隔90天可以自动续约实现永久使用,所以也是非常方便。很早以前使用的是 dns 验证的方法,有几个子域名,就填写几个子域名,然后通过验证dns进行申请。这样方法比较麻烦, 以后如果重新添加了新的子域名还得重新进行申请验证,比较麻烦。
好在今年三月份 Let's Encrypt 就推出了泛域名证书,不过由于太懒,一直没有去申请,最近重新注册了一个新域名,便用这个域名申请下 Let's Encrypt 的泛域名证书,这里简单的记录下步骤。
该方法使用的是 https://github.com/Neilpang/acme.sh 的脚本。
安装acme.sh
以下命令请在Linux系统执行,root和普通用户均可安装。
#安装 curl https://get.acme.sh | sh #让alias生效 source ~/.bashrc
设置DNS API
不同域名服务商设置 DNS API 不一样,我的域名在 name.com 服务商上,name.com获取 api 的操作如下:
登录后台:https://www.name.com/account/settings/api
同意协议后,输入 Token Name ,然后生成 Token 即可:
获取你的 namecom用户名(是用户名,不是 Token Name) 和 Token ,然后运行如下命令:
export Namecom_Username="testuser" export Namecom_Token="xxxxxxxxxxxxxxxxxxxx"
接着运行如下命令:
acme.sh --issue --dns dns_namecom -d example.com -d www.example.com
注意:其中的 example.com 改为你自己的域名。因为我们要申请泛域名,所以 www 改为 * 即可,比如我的如下:
acme.sh –issue –dns dns_namecom -d 9xxx89.xyz -d *.9xxx89.xyz
如果你是阿里云、腾讯云、或者其他域名服务商,更多的 DNS API 设置方法参考这篇文章:
https://github.com/Neilpang/acme.sh/blob/master/dnsapi/README.md
上面的文章列举了 53 个常见域名服务商设置 DNS API 的方法,请根据你的域名服务商详细对照着修改,虽然是英文,不过细心查看,操作起来非常容易。
复制证书
然后复制证书,默认生成的证书都放在安装目录下: ~/.acme.sh/,但是官方文档不建议直接使用该目录下的证书,因为这里面的文件都内部使用,而且可能会引起目录结构的变化。正确的使用方法是使用 –installcert 命令,并指定目标位置, 然后证书文件会被copy到相应的位置, 如下:
acme.sh –installcert -d <domain>.com \
–key-file /etc/nginx/ssl/<domain>.key \
–fullchain-file /etc/nginx/ssl/fullchain.cer \
–reloadcmd "service nginx force-reload"
比如我的:
acme.sh –installcert -d 9xxx89.xyz \
–key-file /usr/local/nginx/ssl/ 9xxx89.xyz.key \
–fullchain-file /usr/local/nginx/ssl/fullchain.cer \
–reloadcmd "service nginx force-reload"
注意,上面的命令 service nginx force-reload 是强制重启 nginx 的操作,可能会报错,报错直接略过,你直接手动修改 nginx 的配置文件,然后重新启动 nginx 即可。
然后修改nginx配置文件,这里附上一份参考,nginx默认的 https 配置,只修改了 ssl_certificate 和 ssl_certificate_key,你可以根据你自己的实际情况重新编辑修改 :
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /usr/local/nginx/ssl/fullchain.cer;
ssl_certificate_key /usr/local/nginx/ssl/978789.xyz.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
参考文章:
https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E
本文地址:https://coderschool.cn/2904.html,转载请注明。
下一篇:已是最新文章