HTTPS服务
一、HTTPS的工作流程
1.服务端将公钥给第三方机构,第三方机构用私钥将服务端的公钥进行加密(数字证书)。
2.客户端请求服务端,服务端返回给客户端数字证书,浏览器内置一个受信任的CA机构列表,进行验证是否正确。
3.客户端将已有的第三方机构的公钥进行证书的解密,将解密后的服务端公钥获取到进行数据加密,传给服务端,服务端用私钥解密。
1.服务端将公钥给第三方机构,第三方机构用私钥将服务端的公钥进行加密(数字证书)。
2.客户端请求服务端,服务端返回给客户端数字证书,浏览器内置一个受信任的CA机构列表,进行验证是否正确。
3.客户端将已有的第三方机构的公钥进行证书的解密,将解密后的服务端公钥获取到进行数据加密,传给服务端,服务端用私钥解密。
二、HTTPS定义
HTTPS要使客户端与服务器端的通信过程得到安全保证,必须使用的对称加密算法,但是协商对称加密算法的过程,需要使用非对称加密算法来保证安全,然而直接使用非对称加密的过程本身也不安全,会有中间人篡改公钥的可能性,所以客户端与服务器不直接使用公钥,而是使用数字证书签发机构颁发的证书来保证非对称加密过程本身的安全。这样通过这些机制协商出一个对称加密算法,就此双方使用该算法进行加密解密。从而解决了客户端与服务器端之间的通信安全问题。
三、实现 HTTPS服务_证书签名生成CA证书
生成秘钥和CA证书条件:
1.openssl version #检查是否存在
2.nginx -v #查看是否存在 --with-http_ssl_module 模块
生成秘钥和CA证书步骤:
1.生成key秘钥
2.生成证书签名请求文件(csr文件)
3.将1和2打包一并发送给签名机构,会获取到CA证书(可以自己生成)
演示:
1.#openssl genrsa -idea -out demo.key 1024(生成key秘钥)
2.#openssl req -new -key demo.key -out demo.csr(生成证书签名请求文件)
3.#openssl x509 -req -days 3650 -in demo.csr -signkey demo.key -out demo.key -out demo.crt
nginx的https配置语法
参数:ssl on|off;
默认:没有配置;
位置:http,server
参数:ssl_certificate file;
默认:没有配置;
位置:http,server
参数:ssl_certificate_key file;
默认:没有配置;
位置:http,server
配置实例
server{
listen 443;
server_name jeson.t.imooc.io;
ssl on;
ssl_certificate /etc/nginx/ssl_key/demo.crt;
ssl_certificate_key /etc/nginx/ssl_key/demo.key;
#ssl_certificate_key /etc/nginx/ssl_key/jesonc_nopass.key;
index index.html index.htm;
location / {
root /opt/app/code;
}
}
参数:ssl on|off;
默认:没有配置;
位置:http,server
参数:ssl_certificate file;
默认:没有配置;
位置:http,server
参数:ssl_certificate_key file;
默认:没有配置;
位置:http,server
配置实例
server{
listen 443;
server_name jeson.t.imooc.io;
ssl on;
ssl_certificate /etc/nginx/ssl_key/demo.crt;
ssl_certificate_key /etc/nginx/ssl_key/demo.key;
#ssl_certificate_key /etc/nginx/ssl_key/jesonc_nopass.key;
index index.html index.htm;
location / {
root /opt/app/code;
}
}