1. 获取SSL证书
1. FreeSsl
这个暂时还没成功过,但是他的有效期有一年的比较简单,本人在部署的时候总是出现
Nginx command is not found
,暂未查询到解决方案
2. Ohttps
1.创建证书
- 首先注册一个Ohttps账号
- 进入控制台,点击
证书
进行创建证书
- 按照需求填写,使用
泛域名
更加简单一点,点击下一步获取 DNS解析记录
- 登录域名提供商控制台,创建DNS解析记录,并在本页面进行测试,然后创建证书
- 回到
证书
菜单,点击查看
- 将页面中的
cert.key
fullchain.cer
下载到本地备用
2. 配置自动更新
点击上一张图片中的
免DNS授权,记录配置
,查看需要设置的DNS
解析记录即可,在服务器提供商的控制台中手动添加记录。
2. Nginx部署准备
1. 查看是否安装 Http-ssl
- 查看是否安装 http-ssl模块
$ /usr/local/nginx/sbin/nginx -V
如果出现了 configure arguments: –with-http_ssl_module
则已安装,可以跳过本章节
2. 安装Nginx
Nginx安装配置教程请参考:Nginx安装部署流程、Centos安装Nginx错误集锦
- 下载安装包
cd /usr/local/src
weget http://nginx.org/download/nginx-1.15.9.tar.gz
- 解压安装包
tar -zxvf nginx-1.15.9.tar.gz
- 配置SSL模块
cd nginx-1.15.9
./configure --prefix=/usr/local/nginx --with-http_ssl_module
- 执行make命令重新编译Nginx
make
- 备份原有nginx替换文件
# 停止现有nginx
nginx -s stop
# 停止现在的Nginx
nginx -s stop
# 备份并覆盖文件
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_bak
cp objs/nginx /usr/local/nginx/sbin/nginx
- 验证是否正确
#验证配置是否正常
/usr/local/nginx/sbin/nginx -t
# 出现下列信息代表正常
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
- 重新启动Nginx
cd /usr/local/nginx/sbin
./nginx
- 查看编译参数
./nginx -V
#提示一下信息则代表安装好了
nginx version: nginx/1.18.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
3. 原有Nginx添加HttpSSL模块
进入Nginx安装包目录 ,如我本人的
cd /opt/nginx-1.15.9
执行上一小节的4-8步骤即可
3. 部署SSL证书
- 上传证书到服务器上
cd /usr/local/nginx
# 在nginx 的 conf 同级目录创建cert证书文件夹
mkdir cert
# 将证书文件上传到服务器中
scp D:\cert.key root@xxx.xxx.xxx.xxx:/usr/local/nginx/cert/
scp D:\fullchain.cer root@xxx.xxx.xxx.xxx:/usr/local/nginx/cert/
- 编辑Nginx配置文件
编辑前记得备份原来的配置文件
cp nginx.conf nginx.conf.bak
server {
listen 443 ssl;
#这里换成自己的域名,多个域名用空格隔开
server_name lesscoding.net www.lesscoding.net mail.lesscoding.net;
# ssl 证书地址
ssl_certificate /usr/local/nginx/cert/fullchain.cer;
ssl_certificate_key /usr/local/nginx/cert/cert.key;
#ssl验证相关配置
ssl_session_timeout 5m; #缓存有效期
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; #使用服务器端的首选算法
location / {
root dist;
index index.html index.htm;
}
}
- 将http重定向到https
此操作需要全站都是用 https 链接
server {
listen 80;
server_name lesscoding.net www.lesscoding.net mail.lesscoding.net;
return 301 https://$server_name$request_uri;
}
- 重启Nginx
nginx -s reload
4. 其他相关
- 输入自己的域名进行 检测是否开启https
- 一键生成服务器SSL证书配置
- 校验网站安全性
5. 参考文章
- Nginx 安装 SSL 配置 HTTPS 超详细完整全过程
- 如何为已经安装好的 Nginx 添加 SSL 模块