环境
LAMP
- Linux:Ubuntu 18.04
- Apache2
- MySQL
- PHP
获取SSL证书
大多数网络运营商都会提供免费的SSL证书,我的是在阿里云上面申请的。
一般申请后5-10分钟就可会收到申请成功的邮件,就可以到相应的网站控制台下载SSL证书了。
假设网站是使用Apache 2的,下载下来的证书会包含三个文件:
- 你的域名.key
- 你的域名_chain.crt
- 你的域名_public.crt
安装SSL证书
加载SSL模块
执行以下命令确保 SSL模块已经加载进 Apache2 中:
a2enmod ssl
如果出现“Module ssl already enabled”这样的信息就说明 SSL 模块已经加载到 Apache2 中,如果出现“Enabling module ssl”,那么还需要手动重启 Apache2:
service apache2 restart
注意:若出现Job for apache2.service failed because the control process exited with error code.
可能是因为HTTPS默认使用的443端口被占用导致的。会占用端口的应用不多,我是因为V2ray使用了该端口导致无法成功重启。
修改Apache2配置文件
上传SSL证书到VPS上,我这里是选择在/var
文件夹下新建了一个/ssl
文件夹以存放证书。每个SSH软件上传文件的方式不同,我使用的Xshell是进入到/var/ssl
目录后直接把文件往窗口里拖就可以了。
Apache加载SSL模块后,会在/etc/apache2/sites-available下生成default-ssl.conf文件,编辑该文件:
- 将
DocumentRoot
后面内容改为你的网站的根目录:如/var/www/你的目录
- 将
SSLCertificateFile
后面内容改为你刚刚上传的/var/ssl/你的域名_public.crt
- 将
SSLCertificateKeyFile
后面内容改为你刚刚上传的/var/ssl/你的域名_.key
- 将
SSLCertificateFile
后面内容改为你刚刚上传的/var/ssl/你的域名_chain.crt
然后保存退出。
把default-ssl.conf
映射至/etc/apache2/sites-enabled
文件夹,并启用配置文件
将刚刚改写好的文件映射到/sites-enabled
文件夹下,启用SSL配置文件。
sudo ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/default-ssl.conf
重新加载Apache配置文件:
sudo /etc/init.d/apache2 force-reload
重启Apache服务:
sudo /etc/init.d/apache2 restart
重定向http请求到https
加载Apache的rewrite模块:
sudo a2enmod rewrite
编辑/etc/apache2/apache2.conf
文件,将网站根目录相关部分内容改为:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride ALL
Require all granted
</Directory>
在WordPress控制台插件管理界面安装一个 Really Simple SSL 插件,它会自动检测网站的SSL证书并通过改写.htaccess
文件设置重定向。安装好并启动该插件后,进入设置界面,会看到如下信息:
- SSL is enabled on your site.
- Mixed content fixer was successfully detected on the front-end
- An SSL certificate was detected on your site.
一般来说,WordPress插件访问.htaccess
文件需要644的权限,但考虑到安全因素,这里不建议将该文件权限开放给 WordPress,故选择手动改写文件。
编辑网站根目录(我这里是/var/www/html)下的.htaccess
文件,空白位置加上以下内容:
# BEGIN rlrssslReallySimpleSSL rsssl_version[3.2.6]
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} !=on [NC]
RewriteCond %{REQUEST_URI} !wp-content\/cache\/(all|wpfc-mobile-cache)
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
# END rlrssslReallySimpleSSL
编辑完成后,刷新网页,便可以看到:
- 301 redirect to https set: .htaccess redirect.
说明重定向已经设置成功。
至此,SSL证书安装大功告成。