最近想给 Blog添加SSL认证,由于Wordpress网站是使用Docker部署的,所以省略LAMP部署步骤。Wordpress官方镜像是使用的debian系统,运行在Apache2环境,在某些方面会和其他系统略有区别。SSL证书是在腾讯云www.qcloud.com获取的免费证书,下载证书后解压里面会有4个文件夹对应不同web服务,根据自己环境选择对应文件夹里证书。
首先需要加载openssl模块,终端或者xshell中输入openssl,查看是否安装ssl,如出现以下提示说明已安装过。
root@ca8807a39074:~# openssl
OpenSSL>
如果没有安装的话apt-get install -y openssl即可安装。安装好后需要加载Apache2的SSL模块,输入命令a2enmod ssl已经加载好的会出现以下代码,如果第一次安装会提示重启Apache2,按提示执行即可:
root@ca8807a39074:~# a2enmod ssl Considering dependency setenvif for ssl: Module setenvif already enabled Considering dependency mime for ssl: Module mime already enabled Considering dependency socache_shmcb for ssl: Module socache_shmcb already enabled Module ssl already enabled
接下来的步骤就是安装获得的ssl证书,Apache2加载ssl模块后,会在/etc/apache2/sites-available下生成default-ssl.conf文件,通过编辑器(我一般使用vim)打开该配置文件后需要修改以下5处配置:
<VirtualHost *:443> #此处建议用*代替域名,之前出现此处使用域名导致不能使用情况 ServerName www.xxx.xyz #此处属于域名,www.xxx.xyz根据自己域名修改 SSLCertificateFile /etc/ssl/certs/2_www.xxx.xyz.crt #此处根据个人情况修改证书路径 SSLCertificateKeyFile /etc/ssl/certs/3_www.xxx.xyz.key #此处根据个人情况修改证书路径 SSLCertificateChainFile /etc/ssl/certs/1_root_bundle.crt #此处根据个人情况修改证书路径
把刚修改的default-ssl.conf通过命令ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/001-ssl.conf链接至/etc/apache2/sites-enabled文件夹下,随后使用命令sudo /etc/init.d/apache2 force-reload 重新加载Apache2配置文件后再使用命令sudo /etc/init.d/apache2 restart重启Apache2服务。
此时在浏览器输入https://www.xxx.xyz测试是否可用,记得443端口需要打开。
接下来配置无论是HTTP还是HTTPS都强制定向为HTTPS:
使用命令a2enmod rewrite加载Apache2的rewrite模块,会提醒重启Apache2,如果已经加载好会显示Module rewrite already enabled表示已经可用,加载好后修改Apache2.conf:
<Directory /> Options FollowSymLinks AllowOverride All #此处None改为All Require all denied </Directory> Directory /var/www/> Options Indexes FollowSymLinks AllowOverride All #此处None改为All Require all granted </Directory>
修改好后需要在网页目录下新建.htaccess文件(文件被隐藏,有可能已经存在,所以使用命令vim .htaccess防止被覆盖),加入以下配置:
RewriteEngine On RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*)$ https://www.xxx.com/$1 [L,R] #此处根据自己域名修改
随后使用以下命令重新加载Apache2配置并重启Apache2:
sudo /etc/init.d/apache2 force-reload
sudo /etc/init.d/apache2 restart
至此,Apache2 SSL配置已经完成,顺利的话即可实现上述功能。