为你的网站添加SSL证书

环境

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证书安装大功告成。

发表评论

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

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据