在已经有大量的网站走上https之路的时候,对于https的需求也日益增加,似乎https已经成为一种普遍性需求,于是我们就申请了一波免费的DV证书:https://console.cloud.tencent.com/ssl
申请完成之后,自然是需要我们进行一番服务器的部署了,如果是自建的,在php或者是htaccess上写入对应的配置即可,之前为了方便统一管理多个网站,我们通过了WDCP面板进行配置,好在wdcp从3.x开始就增加了对SSL证书的支持,摸索了几天之后,总算是将WordPress和企业站点的全面https画上了句号。
第一步: 申请https证书,下载证书到本地,一般会有如下目录:
主要是针对不同类型的web,使用不同类型的证书。
第二步: 设置WDCP面板,主要分为以下几个步骤:
在系统设置项目中找到web设置,在80端口后增加443端口的支持。
到防火墙开通TCP443端口,如果是腾讯云主机,安全组同理,安全组的设置见下一篇专栏。
这里需要特别注意,不是直接点添加就完事了,
网站管理栏目中,找到SSL证书管理-点击右侧证书上传
根据对应的引擎来上传证书,引擎在 系统设置,引擎中查看,一般默认是N+A,只需要上传Nginx的证书即可,如果是N+P同理,如果是A+P,则需要上传apache的证书,配合htaccess文件来操作。这里以N平台为例,在文件名中写入域名 yourdomain.com,上传的证书会自动重命名为合适的名称。
证书的默认路径一般在 /wdlinux/apache(nginx)/conf/cert ,可以在控制台看见,或者点击网站的文件管理后,选择nginx配置以及apache配置后,选择返回上一层。当然也可以用find来找。
SSL的开启有三个选项,分别是不启用,启用,强制启用,对应的是,不开启,开启https不强制跳转,强制跳转https,这里我用的是第二种。
wdcp也有合作商可以提供免费证书,由于我的业务都在腾讯云,所以我用的是腾讯云的证书,大家可以自行选择。
这里开启之后或者选择强制之后,一般就可以了。但是大多数小伙伴都会遇到问题,下面我们说下几个情况。
https没有全部转换,导致有些资源加载不了,错误提示非https请求被block,或阻止加载。
在meta标签处添加: <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
这个的作用是把请求升级为https请求。
但是这个html层面的设置会有一个新的问题,
就是可能后端动态的php以及js无法加载
可以将调用换成相对路径 比如,原来的 src="yourdomain.com/js/jquery.js" 改为 src="//yourdoman.com/js/jquery.js"
其中//的 作用就是让其自动在http和https中转换,因为一般站点后端都会有协议地址转换的正则。
某些动态化非常灵活的站点,无法将所有调用改为相对路径,导致无法登录后台等问题
这里有两个思路,一个是在apache引擎下,通过htaccess文件,重写的方式,监听80端口,
再做协议地址转换,强制301如:
RewriteEngine on
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://yourdomain.com/$1 [L,R=301]
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^. index.php [L]
但是这个方式在WDCP并不适用,有多次重定向的问题,于是,就尝试换一种思路,检查nginx配置文件,在
location ~ \.php$ {
proxy_pass http://127.0.0.1:88;
include naproxy.conf;
proxy_set_header X-Forwarded-Proto https;// 添加对于php的转换
} location @apache {
internal;
proxy_pass http://127.0.0.1:88;
include naproxy.conf;
proxy_set_header X-Forwarded-Proto https;// 添加对于php的转换
}
问题解决后,发现只要网站操作改动就会被重写覆盖,于是找到,naproxy.conf,
在末尾添加 proxy_set_header X-Forwarded-Proto https;
保存后,
service httpd restart
重启web使得修改生效。
WordPress如此操作后,还是无法全部https
WordPress其实便捷许多,登录后台后,点击插件,选择
搜索Really Simple SSL,安装并启用即可。
有问题欢迎留言讨论。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。