刚重新建好自己的个人站,看到谷歌浏览器地址栏最前面标着“不安全”三个字,还是挺不爽的,所以就顺便配置一下 SSL 加密。

如果你用的是阿里云的服务,那么配置 SSL 挺简单的。

首先去阿里云购买免费的 SSL 证书,有效期一年,到期以后再免费续期。

下载SSL证书

这是我在阿里云文档里找到的一个截图,下载里面的 nginx 压缩包。

解压后的文件夹中有2个文件:
证书文件:以.pem为后缀或文件类型。
密钥文件:以.key为后缀或文件类型。

SSL证书

我用的是 ubuntu server 服务器,那么 nginx 默认安装位置是在:/etc/nginx/

在此目录下创建cert目录,并把证书文件(.pem)和密钥文件(.key)上传到此目录。

SSL证书

然后打开 nginx 配置自己网站的配置文件,把 server {} 这段内容复制粘贴一份,增加以下配置。

1
2
3
4
5
6
7
8
9
10
11
12
13
server {
# SSL configuration
listen 443 ssl default_server; #端口改为443,并加上ssl标记,提升兼容性
listen [::]:443 ssl default_server; #这段是ipv6的配置,也是把端口改为443

ssl on; # 开启SSL
ssl_certificate cert/domain.com.pem; #证书文件地址
ssl_certificate_key cert/domain.com.key; #密钥文件地址
ssl_session_timeout 30m; #会话过期默认5分钟,我改成了30分钟
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #指定使用哪些加密协议,SSLv1 SSLv2不安全,不建议使用
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #加密套件
ssl_prefer_server_ciphers on; #指定服务端加密套件优先
}

保存 nginx 配置文件后,退出。

重启 nginx。

新版本的 nginx 已经不再支持以前的重启命令,需要用新的重启命令

先用命令检查一下 nginx 配置是否正确

1
nginx -t

验证 Nginx 配置

再用命令找到 nginx 服务的进程号

1
ps -ef | grep nginx

查看 Nginx 进程

然后用命令平滑重启,不影响 nginx 继续运行

1
kill -HUP 进程号

平滑重启

实现 http 强制跳转 https 的方法

我所查到,有多种跳转方法,最后我选择了这一种。

1
2
3
4
5
6
7
8
server {
listen 80;
listen [::]:80;

server_name www.domain.com;

return 301 https://$server_name$request_uri; # 在http配置处加上这句即可
}

参考资料:
在Nginx/Tengine服务器上安装证书
nginx配置SSL(https)

–End–