472 字
2 分钟
Nginx 配置SSL证书
2021-09-10

申请SSL证书#

关于 SSL证书 的申请需要从域名注册商那边进行申请,个人的都是免费的,并且基本都是几分就能申请下来,这里不多赘述。

配置Nginx服务器#

申请完成并下载证书,根据建站时使用的服务器进行下载,像我使用的就是 nginx,那么我的证书就包含了 **.crt**.key 两个文件。

通过指令 whereis nginx,找到 Nginx 的相关文件,会有多个搜索结果,只需要那个文件夹中包含 nginx.conf 文件即可:

编辑 nginx 的配置文件:

Terminal window
vim /etc/nginx/sites-available/default
server {
...
listen 443 ssl default_server;
listen [::]:443 default_server;
ssl_certificate xxx.crt;#替换成您的证书文件的路径
ssl_certificate_key xxx.key;#替换成您的私钥文件的路径
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
...
}

server{ } 中增加如上代码就行,个人推荐证书和私钥的路径使用绝对路径。

测试服务器#

通过指令 nginx -t,测试配置是否通过。

通过指令 nginx -s reload,重启 nginx 服务。

http 重定向至 https#

通过如上配置方法,得到的结果是用户能同时通过 http 和 https 进行访问。

可以注释掉关于80端口的监听,就只能通过 https 进行访问。

也可以将 http 强制定向到 https,方法如下:

server {
# 注释掉关于80端口的监听
#listen 80 default_server;
#listen [::]:80 default_server;
# 保留对443端口的监听
listen 443 ssl default_server;
listen [::]:443 default_server;
ssl_certificate xxx.crt;#替换成你的证书文件的路径
ssl_certificate_key xxx.key;#替换成你的私钥文件的路径
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# 剩下的无需修改
...
}
# 增加虚拟主机配置
# Force in https
server {
listen 80;
listen [::]:80
server_name 你的域名;
rewrite ^(.*)$ https://$host$1 redirect;#地址临时重定向到https
# permanent(永久) redirect(临时)
}
Nginx 配置SSL证书
https://fuwari.vercel.app/posts/建站/nginx/nginx-配置ssl证书/
作者
Asuwee
发布于
2021-09-10
许可协议
CC BY-NC-SA 4.0