拜读了 屈光宇 老师的文章:Let’s Encrypt,免费好用的 HTTPS 证书 后,决定将自己的网站实现全站HTTPS,采用的工具是 acme.sh ,申请的是 Let’s Encrypt 的免费HTTPS证书。
准备工作
安装OpenSSL
Centos
1 | yum install openssl |
Ubuntu
1 | sudo apt-get openssl |
安装acme.sh
选择服务器的一个目录存放 acme.sh
1 | curl https://get.acme.sh | sh |
获取证书
由于我的服务器部署在阿里云,访问 Let’s Encrypt 获取证书会访问超时。。。
万幸的是 acme.sh 支持DNS模式,常用的 CloudFlare 、 DNSPod 、 CloudXNS 、阿里云 等DNS服务都支持,免去了访问超时的尴尬,每一种DNS服务的配置详见项目的主页,下面以 CloudXNS 为例来为 nmchgx.com 和 www.nmchgx.com 获取证书。
配置CloudXNS授权
修改 account.conf
文件:
1 | vim ~/.acme.sh/account.conf |
在文件最后加入 CloudXNS 的 API KEY
和 SECRET KEY
:
1 | CX_Key="[YOUR API KEY]" |
保存即可。
获取多个子域名证书
acme.sh 可以一次获取多个子域名证书:
1 | sh acme.sh --issue --dns dns_cx \ |
等到程序跑完后,若获取成功,再将证书保存到我们要存放的位置并重启服务器:
nginx
1 | sh acme.sh --installcert -d nmchgx.com \ |
Apache
1 | sh acme.sh --installcert -d nmchgx.com \ |
启用HTTPS服务
与HTTP的URL由“
http://
”起始且默认使用端口80不同,HTTPS的URL由“https://
”起始且默认使用端口443。 — by Wikipedia
我们需要修改服务器的配置文件启用HTTPS,下面以nginx为例,将所有访问跳转到 https://nmchgx.com :
1 | # |
配置好后,重启服务器即可:
1 | service nginx restart |