现在通过SSL证书加密的HTTPS网站非常流行,免费的有大名鼎鼎的Let’s encrypt,还有以前就有的StartCom,WoSign之类的,而且谷歌也更优待启用了HTTPS的网站。所以,自己的WordPress何不也弄一个SSL证书来加密呢。
本站暂时用的StartCom的证书,不过基于某个很多人都知道的原因,我准备过段时间换成Let’s encrypt试试。废话不多说,开始写教程。
首先为Apache启用SSL支持。
a2enmod ssl
重启一下服务。
service apache2 restart
为了方便管理,在Apache的配置目录下创建一个放置证书的文件夹。
mkdir /etc/apache2/ssl.crt
这里默认你已经申请到了可以用的证书,具体如何申请证书改天再写一篇吧,而且我准备改天再写一篇关于Let’s encrypt的,这里就不废话了。
在刚刚创建的文件夹下创建一个证书文件example.com.crt。我喜欢用vi命令,你们随意,任意自己习惯的文本编辑器都行。
vi /etc/apache2/ssl.crt/example.com.crt
将申请到的证书文件文本贴进去。
然后创建私钥文件example.com.key,把申请证书用的私钥贴进去。
vi /etc/apache2/ssl.crt/example.com.key
注意如果私钥是被加密过的,这里要解密,如果加密的私钥为/path/to/example.key解密运行以下命令。
openssl rsa -in /path/to/example.key -out /etc/apache2/ssl.crt/example.com.key
这还没完,还要创建一个证书链文件ca.crt。
vi /etc/apache2/ssl.crt/ca.crt
如果是Apache 2.4,建议把证书文件example.com.crt和ca.crt做成证书链文件fullchain.crt。
cd /etc/apache2/ssl.crt
cat example.com.crt ca.crt > fullchain.crt
下一步,修改Apache的网站配置文件,如果是Apache 2.4,运行以下命令。
vi /etc/apache2/sites-available/default-ssl.conf
找到<VirtualHost *:443>,在其中的Server Admin email:下面增加以下两行,其中example.com是你的域名。
ServerName www.example.com:443 ServerAlias example.com www.example.com
继续往下,找到以下几行,改成如下所示。
SSLEngine on
SSLCertificateFile /etc/apache2/ssl.crt/fullchain.crt
SSLCertificateKeyFile /etc/apache2/ssl.crt/example.com.key
如果是Apache 2.2,运行以下命令。
vi /etc/apache2/sites-available/default-ssl
找到<VirtualHost *:443>,在其中的Server Admin email:下面增加以下两行,其中example.com是你的域名。
ServerName www.example.com:443 ServerAlias example.com www.example.com
继续往下,找到以下几行,改成如下所示。
SSLEngine on
SSLCertificateFile /etc/apache2/ssl.crt/example.com.crt
SSLCertificateKeyFile /etc/apache2/ssl.crt/example.com.key
SSLCertificateChainFile /etc/apache2/ssl.crt/ca.crt
启用刚刚设置好的虚拟服务器。
a2ensite default-ssl
再重载一下Apache。
service apache2 reload
好了,已经可以通过HTTP S访问你的WordPress了。如果要强制所有访问都通过HTTPS,还需要进一步设置,下次再写了。
发表评论