用acme.sh申请免费的HTTPS证书

拜读了 屈光宇 老师的文章: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模式,常用的 CloudFlareDNSPodCloudXNS阿里云 等DNS服务都支持,免去了访问超时的尴尬,每一种DNS服务的配置详见项目的主页,下面以 CloudXNS 为例来为 nmchgx.comwww.nmchgx.com 获取证书。

配置CloudXNS授权

修改 account.conf 文件:

1
vim ~/.acme.sh/account.conf

在文件最后加入 CloudXNSAPI KEYSECRET KEY

1
2
CX_Key="[YOUR API KEY]"
CX_Secret="[YOUR SECRET KEY]"

保存即可。

获取多个子域名证书

acme.sh 可以一次获取多个子域名证书:

1
2
3
sh acme.sh --issue --dns dns_cx \
-d nmchgx.com \
-d www.nmchgx.com \

等到程序跑完后,若获取成功,再将证书保存到我们要存放的位置并重启服务器:

nginx

1
2
3
4
sh acme.sh  --installcert  -d nmchgx.com   \
--keypath /var/www/ssl/domain.key \
--fullchainpath /var/www/ssl/chained.pem \
--reloadcmd "service nginx force-reload"

Apache

1
2
3
4
sh acme.sh  --installcert  -d nmchgx.com   \
--keypath /var/www/ssl/domain.key \
--fullchainpath /var/www/ssl/chained.pem \
--reloadcmd "service apache2 force-reload"

启用HTTPS服务

与HTTP的URL由“http://”起始且默认使用端口80不同,HTTPS的URL由“https://”起始且默认使用端口443。 — by Wikipedia

我们需要修改服务器的配置文件启用HTTPS,下面以nginx为例,将所有访问跳转到 https://nmchgx.com

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#
# The default server
#

server {
listen 443 ssl;

server_name www.nmchgx.com nmchgx.com;

ssl_certificate /var/www/ssl/chained.pem;
ssl_certificate_key /var/www/ssl/domain.key;

if ($host != 'nmchgx.com' ) {
rewrite ^/(.*)$ https://nmchgx.com/$1 permanent;
}

location / {
proxy_set_header Host nmchgx.com;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:2368;
}
}

server {
listen 80;
server_name *.nmchgx.com nmchgx.com;

return 301 https://$host$request_uri;
}

配置好后,重启服务器即可:

1
service nginx restart
文章作者: 陈高勋
文章链接: https://nmchgx.com/acme-https/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 陈高勋的博客