Nginx服务器安装SSL证书
环境说明
- 以本域名www.us-b.fun为例
- 服务器版本Centos7.2
- 服务器已开启443端口
- Nginx版本1.18.0
证书安装操作步骤
- 下载证书到本地,解压后找到Nginx服务器的证书文件;
- 文件内容包括:
- 1_www.us-b.fun_bundle.crt
- 2_www.us-b.fun.key
- 文件内容包括:
- 将公钥转为PEM格式证书
PEM:Privacy Enhanced Mail,一般为文本格式,这种格式可以保存证书和私钥,有时我们也把PEM 格式的私钥的后缀改为 .key 以区别证书与私钥。PEM常用于 Apache 和 Nginx 服务器。一般采用如下格式:-----BEGIN CERTIFICATE----- BASE64 编码 -----END CERTIFICATE-----
这里域名服务商提供的是CRT格式证书,CRT证书可以是二进制格式,也可以是文本格式,与DER格式相同不保存私钥,无论是二进制还是文本我们可以使用如下命令将其转为PEM格式证书:
openssl x509 -in 1_www.us-b.fun_bundle.crt -inform der -outform pem -out 1_www.us-b.fun_bundle.pem
- 上传证书文件
将我们转好的PEM证书文件及私钥文件从本地目录上传至Nginx服务器的/xx/server/vhost/cert/domain
目录下 -
修改Nginx配置文件
- 通过
vim /x/server/vhost/nginx/domain.conf
修改Nginx配置文件
- 通过
server
{
listen 80;
#ssl访问端口443
listen 443 ssl http2;
#绑定证书的域名
server_name www.us-b.fun;
#主页路径
index index.php index.html index.htm default.php default.htm default.html;
root /x/x/;
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
#HTTP_TO_HTTPS_START
if (server_port !~ 443){
rewrite ^(/.*) https://host1 permanent;
}
#证书
ssl_certificate /x/x/vhost/cert/domain/1_www.us-b.fun_bundle.pem;
# 私钥
ssl_certificate_key /x/x/vhost/cert/domain/1_www.us-b.fun_bund.pem;
#协议
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
#加密套件,遵循openssl
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
error_page 497 https://hostrequest_uri;
#SSL-END
}
- 验证配置文件
./sbin/nginx -t
- 重启Nginx
配置HTTP 自动跳转 HTTPS
Nginx 支持 rewrite 功能。在 HTTP 的 server 中增加 return 301 https://hostrequest_uri;,即可将默认80端口的请求重定向为 HTTPS。配置如下:
server
{
listen 80;
# ssl访问端口443
listen 443 ssl http2;
#HTTP_TO_HTTPS_START
if (server_port !~ 443){
rewrite ^(/.*) https://host1 permanent;
}
}
修改后验证配置文件没有问题重启即可。