> 随着 HTTPS 的越来越普及,以及安全性考虑,将本站升级为 HTTPS 协议 ## 什么是 HTTPS 超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP over TLS,HTTP over SSL或HTTP Secure)是一种透过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。HTTPS开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。这个协议由网景公司(Netscape)在1994年首次提出,随后扩展到互联网上。 历史上,HTTPS连接经常用于万维网上的交易支付和企业信息系统中敏感信息的传输。在2000年代晚期和2010年代早期,HTTPS开始广泛使用于保护所有类型网站上的网页真实性,保护账户和保持用户通信,身份和网络浏览的私密性。 ## 什么是 SSL 证书 SSL证书是数字证书的一种,类似于驾驶证、护照和营业执照的电子副本。 因为配置在服务器上,也称为SSL服务器证书。 SSL 证书就是遵守SSL协议,由受信任的数字证书颁发机构CA,在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能。 SSL证书分为三种类型,域名型SSL证书(DV SSL)、企业型SSL证书(OVSSL)、增强型SSL证书(EVSSL),具体不作介绍,大家可以自己 google。 ## 证书申请 登陆阿里云控制台,进入 [域名解析列表](https://dns.console.aliyun.com/?spm=5176.100251.111252.17.50704f15oSLonu#/dns/domainList "域名解析列表"),找到要申请域名的一列,选择 ssl证书,选择单域名免费证书。 输入 `xxx` 即要申请的站点前缀,注意免费的证书不支持通配,所以我这里是输入 `www`,填写提交后,等待审核,审核通过点击下载,里面也有使用说明。 ## 配置 https 将下载的证书存放到 Nginx 服务器的目录中,然后打开 Nginx 安装目录下 conf 目录中的 nginx.conf 文件,如果配置 Nginx 虚拟主机,则打开对应要配置的站点,一般在 vhost/www.xxx.com.conf 具体配置内容: ``` server { listen 80; server_name www.site-https.com site-https.com; root /usr/local/nginx/html/site-https; index index.php index.html index.htm; return 301 https://$server_name$request_uri; try_files $uri $uri/ /index.php?$query_string; location ~ \.php$ { index index.php; fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } server { listen 443 default_server ssl; server_name www.site-https.com site-https.com; root /usr/local/nginx/html/site-https; index index.php index.html index.htm; try_files $uri $uri/ /index.php?$query_string; # HTTPS server ssl on; # 配置会话超时时间 ssl_session_timeout 5m; # 配置共享会话缓存大小,视站点访问情况设定 ssl_session_cache shared:SSL:5m; # HSTS策略 HTTP严格传输安全。它允许一个 HTTPS 网站要求浏览器总是通过 HTTPS 来访问 add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always; # 证书文件 ssl_certificate /usr/local/nginx/cert/nginx_ssl.pem; # 私钥文件 ssl_certificate_key /usr/local/nginx/cert/nginx_ssl.key; # 启动特定的加密协议 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 优先采取服务器算法 ssl_prefer_server_ciphers on; # 定义算法 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; # 减少点击劫持 add_header X-Frame-Options DENY; # 禁止服务器自动解析资源类型 add_header X-Content-Type-Options nosniff; # 防XSS攻击 add_header X-Xss-Protection 1; location ~ \.php$ { index index.php; fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } ``` 然后重启 Nginx 即可。 ## CDN 使用 HTTPS 如果在阿里云购买了 CDN 服务,则可以为你的 CDN 配置 HTTPS,我这里使用的是 `oss.wangyd.com` 二级与来存储我的资源。 所以,先申请一个此二级域名的 SSL 证书,然后创建 CDN,选择443,配置 SSL 证书 一气呵成。