https介绍
1、什么是https?
HTTPS (Secure Hypertext Transfer Protocol)安全超⽂本传输协议,是身披SSL外壳的HTTP。HTTPS是⼀种通过计算机⽹络进⾏安全通信的传输协议,经由HTTP进⾏通信,利⽤SSL/TLS建⽴全信道,加密数据包。
2、为什么使用https?
HTTPS 协议是由 SSL+HTTP 协议构建的可进⾏加密传输、身份认证的⽹络协议,要⽐ HTTP 协议安全,可防⽌数据在传输过程中被窃取、 改变,确保数据的完整性。
3、https在整个OSI五层架构模型中的位置
4、SSL的机制流程
1、客户端向服务端发起请求
2、服务端将自己的公钥证书发送给客户端浏览器
3、客户端浏览器会内置一些常见的CA机构,因此客户端收到服务端发来的证书会进行验证
3.1 如果发现发来的公钥证书认证机构不是该浏览器内置的CA机构,那么就发出警告
3.2 如果符合该浏览器内置的CA机构,那么就进行下一步
4、客户端随机生成一个会话密钥,并将会话密钥通过公钥加密以后发给服务端
5、服务端收到 以后进行解密得到会话密钥
6、接下来通过会话秘密通信
通过上述握手机制可以知道:
1、HTTPS通信的过程既有对称加密也有非对称加密
2、非对称加密用于传输会话密钥,后续通信采用对称加密
3、对于不同的浏览器其所认可的CA机构可能是不一样的,因此具体可以接受什么机构的CA证书由浏览器厂商决定。
接下来开始正式的nginx配置https的环节啦!!!!
第一阶段:我们需要申请https的证书,记住一定要申请正规机构的https证书,如果是自己通过不明软件生成的https证书,那么浏览器可能会拒绝用户访问这些网址,比如一些色情赌博网址证书就是不明机构颁布的证书。
注意:申请证书前一定要有自己的域名,因为证书是和域名绑定在一块的!!!!
1、通过阿里云申请证书【申请证书需要审核,审核过程 可能需要一两天】
2、审核通过后在阿里云上下载自己的证书
3、将我们下载的https证书上传到linux服务器上
这里我是将证书上传到linux服务器的 /usr/local/software/key目录下
第二阶段:配置nginx
1、删除原来的nginx,重新安装带ssl模块的nginx
rm -rf /usr/local/nginx
#进入最初上传nginx的文件夹中执行:
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
#编译
make
#安装
make install
2、修改nginx.conf 增加ssl证书配置
server {
listen 443 ssl;
#域名TODO
server_name 16web.net;
#证书在当前linux的位置TODO
ssl_certificate /usr/local/software/biz/key/4383407_16web.net.pem;
ssl_certificate_key /usr/local/software/biz/key/4383407_16web.net.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
访问测试