Apache2 SSL配置与使用

最近想给 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配置已经完成,顺利的话即可实现上述功能。

点赞

发表评论

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