内容简介:上篇,我们科普了https的简单概念 本篇,我们介绍r基于 acme.sh从Letsencrypt生成免费的泛域名证书执行上述命令后,会在安装完后执行
上篇,我们科普了https的简单概念 本篇,我们介绍r基于 acme.sh从Letsencrypt生成免费的泛域名证书
环境
centos7.2 nginx 1.10.1 acme.sh v2.8.0
一、 安装acme.sh
# 安装依赖环境 yum -y install curl cron socat # 下载并安装acme.sh curl https://get.acme.sh | sh 复制代码
执行上述命令后,会在 /root 文件夹下建立一个 .acme.sh 的目录
安装完后执行 acme.sh ,提示命令没找到。执行如下指令即可
source ~/.bashrc 复制代码
二、申请域名解析服务商API token ,完成DNS验证
DNS验证的意义在于证明域名的所有人是你,而不是别人。
acme.sh 是通过操作当前域名的DNS解析记录,来自动完成DNS校验的,这样省了我们很多力气,而且不容易出错。
但是 acme.sh 不是随随便便就就能操作当前域名的DNS解析记录的,必须通过当前域名的 域名注册服务商 授权才可以。这就需要用到了 API token
目前 acme.sh 支持的域名注册服务商有阿里云,亚马逊AWS,微软Azure,DNSPod等
如果当前域名是在腾讯云上注册的:
本人的域名就是在腾讯云上注册的,先说下本人所经历的一些波折:
本人的域名是在腾讯云上面注册的,于是 想当然的 以为域名的 注册服务商 就是 腾讯云 ,然而没找到 acme.sh 对腾讯云的支持的配置项,让我百思不得其解。 后来看腾讯云后台,看到域名解析服务器地址是 f1g1ns1.dnspod.net ,猜想莫非腾讯云背后用的是委托dnspod来进行域名解析的? 然后发现了 《DNSPod并入腾讯云,创始人吴洪声离开》 这条新闻, 才知道dnspod和腾讯云是一家 。 换句话说,如果你的域名是托管在了腾讯云上面的,那么你域名的解析服务商就是DNSPod。 你可以用腾讯云的账号或者腾讯云绑定的QQ,微信登录dsnpod的后台。
登录dnspod后台。如果域名是在腾讯云上注册的,那么可以用腾讯云的账号密码或者腾讯云绑定的QQ、微信登录。
点击左侧的安全设置,『创建API Token』。
创建成功后,千万记着把ID和Token记录下来,因为窗口一旦关闭信息就无法找回了。
执行如下命令,把DP_Id和DP_Key的值替换成你刚刚申请的id和token(注意空格和中英文引号)
export DP_Id="xxxxxxxx" export DP_Key="xxxxxxxxxxxxxxxxxxxxxxxxxxxx" 复制代码
如果当前域名是在阿里云上注册的:
请先前往阿里云后台获取App_Key跟App_Secret 。,然后执行以下脚本
# 替换成从阿里云后台获取的密钥 export Ali_Key="xxxx" export Ali_Secret="xxxxxxxxxxxxxxxxxxxxxxxxxxx" 复制代码
三、生成泛域名证书
acme.sh --issue --dns dns_dp -d msh.com -d *.msh.com 复制代码
正常情况下,该命令执行成功需要120秒。
如果这个过程中报错,可以加上debug参数,重新执行一遍,查看更详尽的错误原因(90%的问题都在于token不合法)
acme.sh --issue --dns dns_dp -d msh.com -d *.msh.com --debug 2 复制代码
四、复制证书到指定位置
**疑惑:**为什么要把 acme.sh 生成的证书位置从默认生成位置拷贝到其它地方? **解疑:**因为 acme.sh 生成的文件夹结构可能会变,所以需要将证书复制到别的位置
**疑惑:**为什么不能手动通过 mv 或者 cp 命令来复制证书到指定位置? **解疑:**SSL证书是有有效期的,到期 acme.sh 会自动更新你的安全证书,并重启 nginx 服务器,让证书生效。所以你必须告诉 acme.sh 你指定的SSL证书存放位置,以及重启 nginx 服务器的命令。通过 --installcert 参数,指定的所有参数都会被自动记录下来, 并在将来证书自动更新以后, 被再次自动调用.
如下,本人指定的证书存放目录为 /mycertify/ssl 重启nginx服务器的命令为 /usr/local/nginx/sbin/nginx -s reload
完整的安装证书命令如下:
acme.sh --installcert -d msh.com --key-file /mycertify/ssl/msh.com.key --fullchain-file /mycertify/ssl/msh.com.cer --reloadcmd "/usr/local/nginx/sbin/nginx -s reload" 复制代码
至此,通过 acme.sh 生成泛域名证书大功告成。
下篇,我们讲解如何通过生成的SSL证书,基于nginx配置全站https
以上所述就是小编给大家介绍的《全站HTTPS升级系列(二)基于 acme.sh从Letsencrypt生成免费的泛域名证书》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 某鱼直播数据全站爬取
- 基于haproxy的全站https
- Python爬虫---爬取腾讯动漫全站漫画
- DNSPod将对全站SSL证书进行升级
- 58 全站用户行为数据仓库建设及实践
- MrDoc 0.5.1 版本发布,支持配置全站强制登录
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Head First JavaScript Programming
Eric T. Freeman、Elisabeth Robson / O'Reilly Media / 2014-4-10 / USD 49.99
This brain-friendly guide teaches you everything from JavaScript language fundamentals to advanced topics, including objects, functions, and the browser’s document object model. You won’t just be read......一起来看看 《Head First JavaScript Programming》 这本书的介绍吧!