在阿里云的ECS服务器上面部署了Hexo博客,并且之前购买了自己的域名,部署完成之后想要开启HTTPS,阿里云上有提供免费的SSL证书,之前“购买”过两个,现在又重新“拾起”,这里记录一下具体的配置步骤。

一、在阿里云上获取免费的SSL证书

在搜索框中搜索“数字证书管理服务(SSL证书)”,点击左侧菜单栏中的SSL证书,可以看到免费证书的标签。

需要先购买证书,之后创建证书,创建证书的时候需要填写域名。

之后经过一段时间的审核,可以在列表中查看到新创建的证书了。

在等待审核的过程中,可以同步进行域名验证,需要在域名解析中添加指定的DNS记录,如下图所示:

话说这个免费的证书,之前有效时间为12个月,现在免费版本的有效时间缩短为3个月了,可以选择升级服务以从3个月延长为12个月。不想掏钱啊,就到时间有邮件提醒之后及时申请并部署新的证书吧。

二、部署证书

1、下载证书后手动上传

将申请下来的证书下载到本地

因为服务器上使用的是nginx部署的Hexo博客,所以下载的是对应的Nginx版本

创建目录

1
2
$ cd /etc/nginx/conf.d/
$ mkdir cert

将下载的证书文件和私钥文件上传到刚才创建的目录中。通过ftp方式上传

2、通过阿里云数字证书管理服务证书部署服务

在SSL证书一览页面可以点击“部署”按钮,将证书部署到指定的资源上,资源可以是ECS服务器、Web应用防火墙等。

点击部署后,出现如下窗口:

在对应的输入框中输入证书相关内容,例如:

配置项 描述 示例
证书路径 设置证书存放在服务器上的绝对路径 /etc/nginx/conf.d/cert/z2huo.cn.pem
私钥路径 设置证书私钥文件存放在服务器上的绝对路径 /etc/nginx/conf.d/cert/z2huo.cn.key
证书链路径 设置证书链文件存放在服务器上的绝对路径
重启命令 设置重启或重新加载服务器中配置证书的web应用的命令 nginx -s reload

三、修改nginx配置

编辑Nginx配置文件nginx.conf,修改与证书相关的配置,定位到如下位置,删除前面的#注释。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name _;
root /usr/share/nginx/html;

ssl_certificate "/etc/pki/nginx/server.crt";
ssl_certificate_key "/etc/pki/nginx/private/server.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers PROFILE=SYSTEM;
ssl_prefer_server_ciphers on;

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}

将内容修改成:

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
   server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name z2huo.cn www.z2huo.cn blog.z2huo.cn;
root /var/www/hexo;

ssl_certificate "/etc/nginx/conf.d/cert/z2huo.cn.pem";
ssl_certificate_key "/etc/nginx/conf.d/cert/z2huo.cn.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
#自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
#TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}

}

可以选择将HTTP请求自动跳转到HTTPS。

修改原有的监听80端口的配置,原配置为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
listen 80;
listen [::]:80;
server_name _;
root /usr/share/nginx/html;

Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}

修改为:

1
2
3
4
5
server {
listen 80;
server_name _;
rewrite ^(.*)$ https://$host$1;
}

修改好nginx配置之后重新加载配置文件或重启nginx服务:

1
2
3
$ service nginx reload
$ service nginx restart
$ /usr/sbin/nginx -s reload

相关链接

OB tags

#Nginx #阿里云 #SSL #HTTPS #建站