为现有网站添加SSL证书(阿里云专用教程)

为了给搭建在阿里云ECS的网站添加SSL证书,参考了网络上的各种教材,还是各种错误,没有一个是完整适用的,这两天都操碎了心。

闲话按下不表,直接上操作。

温馨提示

在操作前,登录阿里云管理控制台,为实例新建一个快照,一旦出错可以方便回滚磁盘。成功后可以删除快照,要保留也是可以的,不过需要按快照大小进行定期付费。

1 网站配置

  1. ubuntu 16.04
  2. Apache 2.4.18
  3. PHP 7.0.22
  4. MySQL 5.0.12
  5. WordPress 5.0.2–zh_CN

2 修改主机名(非必要)

PuTTY连接SSH后:

$ vi /etc/hostname

修改主机名后,保存退出,重启VPS生效:

$ reboot

3 添加主机名

$ vi /etc/hosts

在“127.0.0.1 localhost”后面添加主机名,譬如:

127.0.0.1       localhost eia543

4 准备配置环境&安装加密客户端

$ sudo apt-get purge python-virtualenv python3-virtualenv virtualenv
$ sudo pip install --upgrade pip
$ sudo pip install virtualenv
$ sudo apt-get update
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install python-certbot-apache

5 使用Let’s Encrypt生成SSL证书

以本站为例,运行前需自行替换域名:

$ sudo certbot --apache -d eia543.com -d www.eia543.com

6 自动更新SSL证书

为系统设置一个每天更新两次的定时器,并在SSL证书到期后三十天内自动更新:

$ sudo certbot renew --dry-run

7 验证SSL证书状态

以本站为例,运行前需自行替换域名:

https://www.ssllabs.com/ssltest/analyze.html?d=eia543.com&latest
SSL证书的验证结果

8 开启小绿锁

8.1 修改“.htaccess”文件

在网站安装目录下,找到隐藏文件“.htaccess”,在“#BEGIN WordPress”前添加以下内容,网站地址需要替换:

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.)$ https://www.eia543.com/$1 [R=301,L] RewriteCond %{HTTP_HOST} ^eia543.com [NC] RewriteRule ^(.)$ https://www.eia543.com/$1 [L,R=301]

#BEGIN WordPress

8.2 替换安装SSL证书前所发布网页中的http链接

  1. 登录管理后台,安装新插件:Search Regex。
  2. 启用插件后,在“工具”子菜单中找到,并打开Search Regex界面。
  3. 填入你需要搜索及替换的内容,如下:填入你需要搜索及替换的内容,如下:
    1. Search pattern:http://www.eia543.com
    2. Replace pattern:https://www.eia543.com
  4. 尝试在不同Source下进行搜索,确认搜索条目无误后,逐一按下“Replace & Save”按钮。

8.3 强制后台和登录使用 SSL

在网站安装目录下,找到文件“wp-config.php”,在文件末端添加以下内容:

define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

8.4 查找漏网之鱼

一般完成以上3个步骤,都能顺利打开小绿锁。如果还是没有办法显示,我们需要作进一步排查。我们可以在Chrome浏览器中打开网站,在鼠标右键菜单中选择“查看网页源代码”,然后在代码中搜索http域名,譬如“http://www.eia543.com”。

9 参考文献

  1. sudo 出现unable to resolve host 解决方法
  2. 阿里云ubuntu16.0.4安装ssl失败,求支援(解决)
  3. 阿里雲服務器LAMP環境搭建及Let’s Encrypt數字證書配置
  4. 如何在Ubuntu 16.04 上使用 Let’s Encrypt 对 Apache 进行加密

发表评论