背景和目的
个人博客申请了SSL证书,网站用的 Wordpress,服务器 Apache,现在希望可以通过 HTTPS 访问Wordpress,并强制开启 HTTPS。
一、服务器配置
1、启用模块
需要启用的模块是 mod_rewrite
和 mod_ssl
:
a2enmod rewrite
a2enmod ssl
2、下载证书到服务器
为了方便管理,可以将证书放在 /etc/apache2/ssl
目录下,并按站点分文件夹管理。我的证书是在阿里云上下载的,下载 Apache 的证书共有三个:*.key
,*_public.crt
,*_chain.crt
。
3、创建站点
在 /etc/apache2/site-available
目录下,创建一个新文件 sitename.conf
:
vim /etc/apache2/site-available/sitename.conf
文件内容:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
ServerName yourdomain.com
DocumentRoot /var/www/wordpress
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/yourcertfile_public.crt
SSLCertificateKeyFile /etc/apache2/ssl/yourcertfile.key
SSLCACertificateFile /etc/apache2/ssl/yourcertfile_chain.crt
</VirtualHost>
</IfModule>
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName yourdomain.com
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}$1 [L,R]
</VirtualHost>
其中 /etc/apache2/ssl/yourcertfile_public.crt
这几行就是放证书的文件路径;其他内容根据实际修改。
4、启用站点
a2ensite sitename
systemctl restart apache2
二、Wordpress 配置
对于未初始化过的 Wordpress,可以直接打开域名进行配置,无需其他操作。
对于已在使用的 Wordpress,我是直接将设置中的两个站点网址改成 https 开头的,目前使用没有发现问题。