自从把博客切成静态站点后访问速度秒WordPress几条街,所以顺势也就把网站上了HTTPS,目前看来效果不错,看着浏览器的绿🔓感觉莫名的安心。

本文介绍如何为部署在DirectAdmin上的站点开启HTTPS访问。

申请SSL证书

既然是免费SSL证书,第一个想到的就是Let's Encrypt,DirectAdmin在1.5版本开始就集成了Let's Encrypt服务,所以在面板上点点就能拿到一个永久的SSL证书,对于在VPS上部署DirectAdmin的人来说真是lucky。

然而我的站点还架在老版本DirectAdmin的虚拟空间上,只能自己找SSL证书了……

目前了解到的BAT三家、七牛等国内云服务商都可以申请到1年免费的SSL证书,来自Symantec。对于个人站点来说,使用这类免费证书都是推荐的。要注意有一些免费的证书提供商今年因为安全等原因相继被各个浏览器弃用,所以申请的时候要优先考虑公信力高的品牌和机构。

我这里是在阿里云-云盾上直接申请的免费版,只需要提供域名和一些基本信息,一天内就能签发。

buy-ssl-in-aliyun

注意拿到证书前,要进行域名授权认证,方法即在DNS上增加一条CNAME记录,证书提供商一般都会邮件通知你详细的操作方法,这里就不说明了。

DA面板配置

启动SSL

在DA面板中直接进入站点管理就可以看到SSL开关。

buy-ssl-in-aliyun

虚拟空间中部署站点,一般都是将网站源文件丢到/public_html/目录下(/domains/yoursite.com/public_html/目录的软链),而DirectAdmin中默认的SSL设置则是建立一个/domains/yoursite.com/private_html/目录存放源文件,这种相当于维护两份站点源码,非常不方便。

因此这里建议选none,即对private_html/目录建立软链,指向/public_html/

增加证书

DA面板目前提供如下两种证书方式:

buy-ssl-in-aliyun

第一种使用服务器的证书如果不是用的1.5版本自动签发的证书,都是不可信的。

粘贴事先准备好的证书栏中需要依次提供证书、私钥以及一个CA根证书,从阿里云下载到的证书格式会稍有不同:

  • public.pem:证书公钥
  • *.key:证书私钥
  • chain.pem:证书链

最简单的方法是把以上三个文件直接cat到一起粘进去,保存后SSL就生效了。

强制跳转

以上步骤做完其实就可以访问https://页面了,不过你也可能发现原先的http://链接仍然可以访问,木有进行 HTTPS跳转。

为此需要在站点根目录追加.htaccess文件,实现强制HTTPS跳转,包含或替换为如下内容:

1
2
3
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

其他方案

如果你也想用https访问静态站点,一步到位的办法是直接在git pagesgitbook上建站,github会提供一个https的二级域名,同时还自带代码版本控制,一颗赛艇。

可惜现在github官方还不支持对自定义域名开启https,算是个小缺憾。