提问:为什么要把网站升级到 https?
解答:HTTPS 是一种基于SSL 协议的网站加密传输协议。网站安装 SSL 证书后,使用 HTTPS 加密协议访问,可激活客户端浏览器到网站服务器之间的 SSL 加密通道(SSL协议),从而实现高强度双向加密传输,防止传输数据被泄露或篡改。HTTPS 也就是 HTTP + SSL,是 HTTP 的安全版。
那如何配置呢,别慌,我来也~
首先,需要注意的一点:一张单域名版证书可以保护一个域名,当申请证书的域名是以“www”开头的子域名时,默认也可以保护不带“www”的主域名,例如为 www.sslzhengshu.com 申请SSL, 则 sslzhengshu.com 也可以在该SSL的保护下面;反正,为 sslzhengshu.com 申请SSL, 则 www.sslzhengshu.com也可以在该SSL的保护下面。因此无需重复申请。如果您为 login.sslzhengshu.com 申请 SSL, 则 sslzhengshu.com 默认是不会被保护的。
- 购买 SSL 证书,我选择的是免费版的
- 证书申请(证书绑定域名)
填写证书绑定的域名、申请人信息,选择域名验证方式,验证并提交审核 - 证书下载
在 SSL 证书页面,点击已签发标签,定位到需要下载的证书,点击右侧的下载,下载 Nginx 版证书压缩包到本地。 - 在服务器上安装 SSL 证书并重启nginx
第一步:解压 Nginx 证书(有 .pem 和 .key 为后缀的两个文件)。
第二步:在 Nginx 的安装目录下创建 cert 目录,将下载的两个文件上传到 cert 目录中。
第三步:打开Nginx 的安装目录下的配置文件 conf.d/*.conf,替换为以下内容:
第四步:检查 nginx 配置 nginx -tserver { listen 80; server_name localhost; rewrite ^(.*)$ https://$host$1 permanent; //实现http访问自动跳转到https location / { index index.html index.htm; } server { listen 443; server_name localhost; ssl on; root html; index index.html index.htm; ssl_certificate cert/domain name.pem; #将domain name.pem替换成您证书的文件名。 ssl_certificate_key cert/domain name.key; #将domain name.key替换成您证书的密钥文件名。 ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { index index.html index.htm; }
此时,会有一个警告:nginx: [warn] the “ssl” directive is deprecated, use the “listen … ssl” directive instead in /etc/nginx/conf.d/www.test.com.conf:12
解决:去掉ssl on;将listen 443 改为listen 443 ssl;
执行nginx -t ok了!
第五步:重启 Nginx 服务器 nginx -s reload。 - 进入阿里云/腾讯云安全组,开放 443 端口
- 云服务器的防火墙开启 443 端口
firewall-cmd --zone=public --add-port=443/tcp --permanent 增加443端口
firewall-cmd --reload 重启防火墙 - 访问,成功~