一、购买SSL证书

最近Firefox准备将HTTP链接标记为不安全,全站HTTPS加密势在必行。找了一圈免费SSL证书服务,发现还是Symantec 的DV SSL证书靠谱,有效期一年。由于我的站点服务都集中在阿里云(域名、解析、CDN等),就顺带在阿里云上面完成了购买:

一张DV SSL证书只支持一个域名,现在的网站使用到了 ipaopao.xin、www.ipaopao.xin、img.ipaopao.xin,所以需要购买三张证书。购买完成后在 控制台“CA证书服务”补全信息,按照指引步骤,填写域名信息和个人信息即可,个人信息表格中,域名验证类型选择DNS,由系统生成CSR。如果证书绑定的域名在【阿里云的云解析】产品中,可以打勾“授权系统自动添加一条记录以完成域名授权验证”,系统会自动为域名添加一条TXT记录,自动检测验证

一般五分钟内就会审核通过,如果审核时间太长,检查下“域名解析”里是不是对于该域名还有其他的解析记录,已知CNAME记录会与TXT记录冲突,需要临时把其他的记录记下来备忘,然后删除。等到域名验证通过后再删除TXT记录,改回原来的CNAME解析。同样的方法,为另外两个域名分别补全信息


二、CDN上加载SSL证书

阿里云的CDN支持HTTPS访问,产生的HTTPS解析请求需要单独付费。进入CDN域名的配置页面,首先将源站的端口改为443,并勾选协议跟随回源。

接着在HTTPS设置中,将状态设置为“开”,在选择证书下拉列表中选择对应的证书编号,下方强制跳转选择“HTTP->HTTPS”,表示用户的HTTP请求将强制跳转到HTTPS。这样就完成了一个CDN域名的HTTPS设置。同样的方法,为其他两个域名分别设置

同时,检查下ECS服务器的安全组策略有没有打开443端口,没有的话,添加一条443端口的开启规则,否则HTTPS是访问不了网站的


三、服务器的设置

oneinsatck只能在创建vhost时添加SSL证书,通过SSH登陆服务器,输入

cd oneinstack
./vhost.sh del

先将现有的vhost删除,注意第二个选项中选择n(NO),否则就连搭好的网站一起删除了。然后执行:

./vhost.sh

重新进行vhost设置,选项中“是否启用SSL”选择Y,是否使用“Let’s Encrypt”选择N,填写完成之后网站就能HTTPS访问了,下一步需要上传SSL证书到服务器,否则网站会显示”不安全”


四、上传SSL证书

在阿里云控制台“CA证书服务”找到vhost域名对应的SSL证书,点击下载——下载证书For Nginx,得到.pem和.key两个文件,通过SSH上传到服务器,比如存放在/usr/local/nginx/conf/ssl,然后进入/usr/local/nginx/conf/vhost,使用Notepad++打开里面的.conf文件(对应需要添加SSL证书的域名),修改以下红字部分:

server {
listen 80;
listen 443 ssl http2;
ssl_certificate 你的.pem文件所在目录;
ssl_certificate_key 你的key文件所在目录;

保存后重启Nginx

service nginx restart

然后就可以使用https链接访问网站了


五、全站HTTPS

配置完SSL证书之后发现网站还没有小绿锁,是因为网站的文章里还存在HTTP链接。登陆PhpMyAdmin,进入Wordpress所在数据库,使用下面的SQL语句批量替换链接

update wp_posts set post_content = replace(post_content, 'http://img.ipaopao.xin','https://img.ipaopao.xin');

其中wp_posts改为你自己的wordpress数据库名,链接改为自己想替换的链接,比如我的网站文章中http来源都是图床上的图片地址“http://img.ipaopao.xin”,这个地址已经在CDN上添加了SSL证书,可以改为https访问。

接着配置OSS_Upload插件,将“访问链接”改为https链接,以后新上传的图片就会默认使用https读取了

最后,有个小插曲。配置完成HTTPS访问之后发现媒体库图片链接全消失了,OSS_Upload的“访问链接”在媒体库不生效,解决方法是在主题的Function.php末尾增加下面一行:

if(get_option('upload_path')=='wp-content/uploads' || get_option('upload_path')==null) { update_option('upload_path',WP_CONTENT_DIR.'/uploads'); }

保存后在设置-媒体库出现隐藏选项,可以设置媒体库“文件上传”URL,将“文件的完整URL地址”改为你想要的https读取地址即可

至此全站HTTPS就终于完成了!


建站日志:全流程步骤传送门

  1. 《建站纪念:正式入坑阿里云》
  2. 《万网上购买域名与网站备案》
  3. 《基于OneinStack搭建系统环境》
  4. 《在LNMP上搭建WordPress网站》
  5. 《利用OSS当图床并配置CDN加速》
  6. 《WordPress动静分离的CDN方案》
  7. 《结合阿里云CDN实现全站HTTPS》
  8. 《OneinStack|WordPress安全调整》
分类: LNMPWordpress

橙子Pal

懒癌晚期,沉迷吸猫,伪·技术肥宅

发表评论

电子邮件地址不会被公开。 必填项已用*标注