网站启用HTTPS的配置步骤

2017.9.23 0 条评论 1.6k 次阅读 4 人点赞

前段时间偶然发现阿里云上可以免费申请赛门铁克的数字证书,遂将网站服务从HTTP转换成HTTPS,配置步骤如下:

1.购买证书

登录阿里云管理控制台——安全(云盾)——CA证书服务(数据安全),购买证书,个人博客不需要企业单位信息验证,选择免费型DV SSL证书即可,填写域名信息(免费SSL证书不支持通配符,一次只能填写一个域名),然后填写姓名、地址、邮箱、手机号等个人信息,选择系统生成CSR,域名验证类型有两种方式:
1)DNS验证:添加一条DNS记录即可,如果证书绑定的域名在【阿里云的云解析】产品中,可以授权系统自动添加一条记录以完成域名授权验证,如果使用的不是阿里云DNS,比如本站之前使用了百度云加速,用的是百度云的DNS,就需要手动添加。
2)文件验证:下载fileauth.txt到网站根目录下的.well-known/pki-validation目录,验证配置,如果提示“文件内容配置正确,请耐心等候”说明配置正确。

2.下载证书

证书审核通过后,下载证书。这里Web服务器是Nginx,下载证书for Nginx的zip文件,在Nginx的安装目录下创建cert目录,并且将下载的zip文件解压到cert目录中。此时cert目录目录下应该有两个文件:.pem证书文件和.key证书私钥文件。

3.配置Nginx

修改nginx.conf配置文件,以下时server段配置部分:

[root@www conf]# vi nginx.conf
...
    server {
        listen 443;
        ssl on;
        ssl_certificate   cert/214272790610807.pem;
        ssl_certificate_key  cert/214272790610807.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;
        server_name www.jianxiangqiao.com jianxiangqiao.com;
        root /u01/data/wordpress;
        index index.php;
        location = /favicon.ico {
                log_not_found off;
                access_log off;
        }
        location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
        }
        location / { 
                try_files $uri $uri/ /index.php?$args;
        }
        location ~ \.php$ {
                include fastcgi.conf;
                fastcgi_intercept_errors on;
                fastcgi_pass php;
        }
        location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
                expires max;
                log_not_found off;
        }
    }
    server {
        listen 80; 
        server_name www.jianxiangqiao.com jianxiangqiao.com;
        rewrite ^(.*)$ https://$host$1 permanent;
    } 

4.重启Nginx服务器

验证nginx.conf配置文件是否有语法错误,然后重启Nginx服务器:

[root@www ~]# /u01/app/nginx/sbin/nginx -t
nginx: the configuration file /u01/app/nginx-1.12.1/conf/nginx.conf syntax is ok
nginx: configuration file /u01/app/nginx-1.12.1/conf/nginx.conf test is successful
[root@www ~]# systemctl restart nginx

5.访问测试

测试HTTPS访问:

[root@www ~]# curl -I https://www.jianxiangqiao.com
HTTP/1.1 200 OK
Server: JWS/1.0.2
Date: Sat, 23 Sep 2017 03:11:39 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/7.1.5
Link: ; rel="https://api.w.org/"

测试HTTP访问:

[root@www ~]# curl -I http://www.jianxiangqiao.com
HTTP/1.1 301 Moved Permanently
Server: JWS/1.0.2
Date: Sat, 23 Sep 2017 03:11:43 GMT
Content-Type: text/html
Content-Length: 182
Connection: keep-alive
Location: https://www.jianxiangqiao.com/

注意:
1)由于http使用了301跳转,续费证书的时候,如果使用了文件验证,可能会报“返回状态码不是200,请正确配置访问地址”错误,可以临时做如下修改,http访问.well-known/pki-validation/fileauth.txt即可返回200(此时会导致http访问故障,审核通过后应立即改回):

server {
	listen 80;
	server_name www.jianxiangqiao.com jianxiangqiao.com;
#	rewrite ^(.*)$ https://$host$1 permanent;
	root /u01/data/wordpress;
}

2)如果使用了CDN,例如本站开始用百度云加速,免费版本不支持HTTPS加速,导致“SSL_ERROR_NO_CYPHER_OVERLAP”错误,关闭云加速或者升级到收费版本即可。如果关闭了云加速,最好将DNS解析修改为阿里云自己的服务器,同时也方便申请证书时DNS验证。

健翔桥的奇迹

IT工程师/摄影历史/跑步骑行