1. 获取SSL证书

1. FreeSsl

这个暂时还没成功过,但是他的有效期有一年的比较简单,本人在部署的时候总是出现 Nginx command is not found,暂未查询到解决方案

2. Ohttps

1.创建证书

  • 首先注册一个Ohttps账号
  • 进入控制台,点击证书 进行 创建证书

nginx安装部署ssl证书_https

  • 按照需求填写,使用泛域名更加简单一点,点击下一步获取 DNS解析记录

nginx安装部署ssl证书_ssl_02

nginx安装部署ssl证书_nginx_03

  • 登录域名提供商控制台,创建DNS解析记录,并在本页面进行测试,然后创建证书
  • nginx安装部署ssl证书_https_04

  • 回到证书菜单,点击查看
  • nginx安装部署ssl证书_https_05

  • 将页面中的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错误集锦

  1. 下载安装包
cd /usr/local/src
weget http://nginx.org/download/nginx-1.15.9.tar.gz
  1. 解压安装包
tar -zxvf nginx-1.15.9.tar.gz
  1. 配置SSL模块
cd nginx-1.15.9
./configure --prefix=/usr/local/nginx --with-http_ssl_module
  1. 执行make命令重新编译Nginx
make
  1. 备份原有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
  1. 验证是否正确
#验证配置是否正常
/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
  1. 重新启动Nginx
cd /usr/local/nginx/sbin
./nginx
  1. 查看编译参数
./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证书

  1. 上传证书到服务器上
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/
  1. 编辑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;
    }

}
  1. 将http重定向到https

此操作需要全站都是用 https 链接

server {
    listen       80;
    server_name  lesscoding.net www.lesscoding.net mail.lesscoding.net;
    return 301 https://$server_name$request_uri;
}
  1. 重启Nginx
nginx -s reload

4. 其他相关

  1. 输入自己的域名进行 检测是否开启https
  2. 一键生成服务器SSL证书配置
  3. 校验网站安全性

5. 参考文章

  1. Nginx 安装 SSL 配置 HTTPS 超详细完整全过程
  2. 如何为已经安装好的 Nginx 添加 SSL 模块