一、背景

https通过公钥加密的方式来请求和响应网页内容,浏览器客户端每次请求时将数据通过公钥进行加密,服务器自己保留的私钥解密,确保数据不被篡改,防止“中间人攻击”。

有一个问题是:浏览器如何确定它所使用的公钥就是访问的这个网站的正确公钥呢?

CA的意义就是为了解决这个问题:CA是大家公认的证书颁发机构,这个证书包含了要访问的网站的域名及其对应的公钥,浏览器只要相信这个CA是可靠的,那么就相信它所颁发的证书也是可靠的。

二、证书申请

腾讯云有免费一年使用期的“亚洲诚信”SSL证书可以申请:

三、nginx配置https

将CA颁发的cert证书文件和key私钥文件放置在nginx的配置文件目录下:/etc/nginx/conf

修改nginx配置文件nginx.conf的server配置项:

server {
listen 80;
server_name www.jzgwind.com;
#告诉浏览器有效期内只准用 https 访问
add_header Strict-Transport-Security max-age=15768000;
#将http永久重定向到 https 站点
return 301 https://$server_name$request_uri;
}

server {
listen 443;
server_name www.jzgwind.com;
ssl on;
ssl_certificate /etc/nginx/conf/1_www.jzgwind.com_bundle.crt;
ssl_certificate_key /etc/nginx/conf/2_www.jzgwind.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
ssl_prefer_server_ciphers on;