一. 前提条件
- 已在当前服务器中安装配置 Nginx 服务
- 域名已申请颁发证书(腾讯云可以申请免费的 SSL 证书,很方便)
二. 证书安装步骤
1. 下载对应证书文件包到本地目录
2. 解压缩获得相关类型的证书文件,其中包含 Nginx 文件夹和 CSR 文件
文件夹 Nginx 中包含以下两个文件:
- 1_jichunyang.top_bundle.crt 证书文件
- 2_jichunyang.top.key 私钥文件
CSR 文件内容: jichunyang.top.csr 文件
3. 将 Nginx 中的文件拷贝到服务器
将 Nginx 文件夹中的两个文件拷贝到 Nginx 服务器的 /usr/local/nginx/conf 目录(此处为 Nginx 默认安装目录,请根据实际情况操作)
4. 编辑 Nginx 根目录下的 nginx.conf 文件
server {
#SSL 访问端口号为 443
listen 443 ssl;
#填写绑定证书的域名
server_name www.jichunyang.top;
#证书文件名称
ssl_certificate 1_jichunyang.top_bundle.crt;
#私钥文件名称
ssl_certificate_key 2_jichunyang.top.key;
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
...
}
在 server 里面添加对 443 端口的监听,并配置其他相关属性。
由于版本问题,配置文件可能存在不同的写法。例如:Nginx 版本为 nginx/1.15.0 以上需要使用 listen 443 ssl 代替 listen 443 和 ssl on。
5. 配置安全组,开放服务器的 443 端口
6. 配置服务器的防火墙端口
查看是否打开了 443 端口:
firewall-cmd --query-port=443/tcp
开启 443 端口并重启防火墙:
// --permanent表示永久生效
firewall-cmd --add-port=443/tcp --permanent
// 重启防火墙
systemctl restart firewalld
7. Nginx 启动运行
cd /usr/local/nginx/sbin
./nginx
如果你的 Nginx 已经处于运行状态,可以使用以下命令重新加载配置文件
./nginx -s reload
8. 使用 https 访问网站
配置完成后,输入https://你的域名,比如我的是 https://www.jichunyang.top,就可以通过 https 直接访问自己的网站了。
三. 遇到的问题
我们在重启 Nginx 时,可能会遇到错误,显示如下:
unknown directive ssl
是因为配置 SSL 证书需要引用到 Nginx 中的 SSL 模块,然而我们一开始编译的 Nginx 的时候并没有把 SSL 模块一起编译进去,所以导致这个错误的出现。
解决方案
1. 进入 Nginx 的解压路径
cd /usr/local/nginx/nginx-1.18.0/
2. 重新添加 ssl 模块
./configure --with-http_ssl_module
3. 执行 make 命令
make
4. 覆盖已有的命令
执行完 make 命令后,把之前的 Nginx 备份一下,然后把新的程序复制过去覆盖之前的
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
cp objs/nginx /usr/local/nginx/sbin/nginx
5. 重新启动 Nginx
cd /usr/local/nginx/sbin
./nginx