nginx中的SSL证书配置以及SSL证书申请

SSL申请

第一步:生成证书请求文件 (CSR)
 
进入 OpenSSL 安装的目录,运行如下命令生成私钥:
 
 
该命令执行后将会生成 server.key 私钥文件
 
运行如下命令生成证书请求文件( CSR
openssl req -new -key server.key –o ut server.csr
 
如是 Windows 系统,请使用下面命令生成证书请求文件( CSR
 
 
接下来提提示输入申请证书的详细信息
 
 
生成请求文件时,需要填写一些信息:
 
完成以上的操作后会在对应的目录下生成 server.key server.csr ,请妥善保存这两个文件。
 
 
 
第二步:提交 CSR ,申请证书
 
递交证书申请表及相关资料,并把证书请求文件( CSR )提交给CA机构。
 
 
第三步:获取服务器证书
 
 
 

更新nginx配置

 
http{
    #http节点中可以添加多个server节点
    server{
        #监听443端口
        listen 443 ssl;
        server_name 域名或者IP;
        # ssl on; 新版nginx会提示warning信息,系统建议将ssl写到listen中
        ssl_certificate /etc/ssl/server.crt;  # 公钥文件存放路径
        ssl_certificate_key /etc/ssl/server.key;  # 私钥文件存放路径
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
        ssl_prefer_server_ciphers on;
        #这是我的主页访问地址,因为使用的是静态的html网页,所以直接使用location就可以完成了。
        location / {
                #文件夹
                root html;
                #主页文件
                index index.html;
        }
    }
    server{
        # 将80端口上的侦听到的所有请求,都重定向为https协议访问
        listen 80;
        # server_name baofeidyz.com;
        # rewrite ^/(.*)$ https://$host/$1 permanent;
        return 301 https://$host$request_uri;
    }
}
按照以上的步骤配置完成后,重新启动 Nginx,或者热加载配置文件 (如果有设置 server.key 私钥密码,这时会提
示输入) 后就可以使用 https://domain.com/path或者https://IP/path 来访问了。

 

注意:

配置SSL证书时,使用“ssl on”,在检查(./nginx -t)nginx配置文件时,系统会提示错误信息(warning警告级别的信息)

the directive is deprecated, use the "listen ... ssl",系统建议将ssl写在listen后面:listen  443  ssl;

另外https配置时不一定必须在443端口进行配置,也可以在其他端口进行配置,443端口只是https访问时默认的端口,举例:比如部署在云上的公网IP为120.66.222.111,程序的内网IP为192.168.1.1,配置时可以做端口映射120.66.222.111:443---->192.168.1.1:8888,这样可以在192.168.1.1上监听8888端口,SSL证书也放在这台服务器上(listen  8888  ssl;其他配置一并写上即可),这样当访问https://120.66.222.111直接会跳转到https://192.168.1.1:8888上,并在该台服务器上返回相应的证书;

# 外网存在一个映射外网IP:120.66.222.111的443端口会映射到192.168.1.1的8888端口,所以在192.168.1.1的服务器上配置也可以
http{
    #http节点中可以添加多个server节点
    server{
        #监听443端口
        listen 8888 ssl;
        server_name 192.168.1.1;
        # ssl on; 新版nginx会提示warning信息,系统建议将ssl写到listen中
        ssl_certificate /etc/ssl/server.crt;  # 公钥文件存放路径
        ssl_certificate_key /etc/ssl/server.key;  # 私钥文件存放路径
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
        ssl_prefer_server_ciphers on;
        #这是我的主页访问地址,因为使用的是静态的html网页,所以直接使用location就可以完成了。
        location / {
                #文件夹
                root html;
                #主页文件
                index index.html;
        }
    }
    server{
        # 将80端口上的侦听到的所有请求,都重定向为https协议访问
        listen 80;
        # server_name baofeidyz.com;
        # rewrite ^/(.*)$ https://$host/$1 permanent;
        return 301 https://$host$request_uri;
    }
}

 

 

https协议的建立过程

HTTP是明文传输的,这就意味着介于发送端和接收端之间的任意节点都可以知道传输的内容是什么,这些节点可以是路由器、代理等。

因此,HTTPS出现了,其是以安全为目标的HTTP通道,全称是Hyper Text Transfer Protocal over Secure Socket Layer,即在HTTP之下加入了SSL(安全套套接层),用于安全的HTTP数据传输。

TLS(传输层安全)跟SSL(安全套接字)可以理解成类似的东西,可以将SSL理解成负责对HTTP的数据进行加密的加密套件,而TLS是SSL的升级版/继任者。
 

在通过对HTTPS的建立过程(SSL建立安全会话的过程),对客户端、服务器、CA三方在这个过程中的交互做了一个简单的图。因为涉及的东西较多,下面只对建立过程进行一个整体认识。

 
 
 

其实客户端生成随机数密码(对称密钥/协商密钥)依赖于随机数random_C、随机数random_S、随机数Pre-Master。

此外,服务器还有一个对对称密钥的验证过程。下图更为详细:

 

服务器和客户端的验证过程其实就是使用Hash算法计算握手信息,并使用对称密钥解密对方发过来的信息,对两者进行比较,如果一致则说明己方的对称密钥跟对方是一致的,即正确的。
(这里的握手信息指的是双方的通信信息/参数,是双方都存有的数据。)

一开始客户端和服务器协商的加密算法其实是一个加密套件,其中包括了认证算法 Au (身份验证)、密钥交换算法 KeyExchange(密钥协商)、对称加密算法 Enc (信息加密)和信息摘要 Mac(完整性校验)。
 

参考:

https://blog.csdn.net/wangjun5159/article/details/51510594

https://blog.csdn.net/u011779724/article/details/80776776

https://blog.csdn.net/hherima/article/details/52469674

https://www.jianshu.com/p/54dd21c50f21

 
 
 
 
 
 
 
 
 
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值