LAMP环境下为wordpress部署SSL证书

环境:Linux(Dbian)+apache2
SSL证书:阿里云免费型DV SSL,申请方法见阿里云申请免费的SSL证书
从阿里云Apache下载回来的zip压缩包包含四个文件(系统生成CSR的情况下),文件说明(来自阿里云文档):
1. 证书文件214**********59.pem,包含两段内容,请不要删除任何一段内容。
2. 如果是证书系统创建的CSR,还包含:证书私钥文件214**********59.key(SSLCertificateKeyFile)、证书公钥文件public.pem(SSLCertificateFile)、证书链文件chain.pem(SSLCertificateChainFile)。
下面开始部署证书:
1、在apache2安装目录下创建证书存放的目录,将214**********59.key、public.pem、chain.pem三个文件使用工具(例如psftp,使用方法点击)上传到该目录,创建目录命令:
cd /etc/apache2
mkdir cert

2、启用SSL,命令:
a2enmod ssl
该命令等同于:
sudo ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled
sudo ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled
3、修改端口文件(/etc/apache2/ports.conf):
nano /etc/apache2/ports.conf
修改后如下:
NameVirtualHost *:80
Listen 80


Listen 443


Listen 443

4、配置证书文件(/etc/apache2/sites-available/default-ssl):
nano /etc/apache2/sites-available/default-ssl
修改后如下:


#以下1行设置网站目录
DocumentRoot /var/www/xxxxxx


Options Indexes FollowSymLinks MultiViews
#以下1行设置允许.htaccess文件,对应问题见《wordpress全站改https后文章页面无法访问的解决方法》
AllowOverride All
Order allow,deny
allow from all

SSLEngine on

# SSLCertificateFile directive is needed.
#以下2行设置证书公钥文件和私钥文件
SSLCertificateFile /etc/apache2/cert/public.pem
SSLCertificateKeyFile /etc/apache2/cert/214**********59.key

# certificate for convinience.
#以下1行设置证书链文件
SSLCertificateChainFile /etc/apache2/cert/chain.pem
5、启用SSL并重启apache2:
a2ensite default-ssl
#以上语句等同于”ln -s /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/default-ssl”
service apache2 restart
#至此SSL证书生效,可以通过访问https打开你的站点了
6、阿里云打开你的公网443端口,以便外网访问你的https页面,方法是:管理控制台->云服务器ECS->安全组->选择对应实例的安全组->配置规则->公网入规则->添加安全组规则->网卡类型:公网、规则方向:入方向、授权策略:允许、协议类型:HTTPS,然后确定即可生效;
7、如果需要你可以把所有http(80端口)通过301跳转到https(443)页面,这也是google所推荐的方式,则可以通过配置网站根目录下的.htaccess文件实现,在“RewriteBase /”后加入规则,如下:

RewriteEngine On
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]
8、wordpress该https后还会遇到不同程度的问题,例如最常见的浏览器会提示部分内容不安全,打开浏览器的调试模式可以看到具体不安全的信息(如引入的js文件、css文件、图片)使用的依然是http,所以会报安全问题,这个时候只需要使用https的路径就可以解决。下面针对文章中上传的图片路径为http的解决,在服务器上打开mysql命令行,确认你的wordpress文章表名,如果是wp_posts,则直接执行sql命令“update wp_posts set post_content=replace(post_content,’http://www.oming.me/wp-content’,’https://www.oming.me/wp-content’);”即可,原理是把图片的绝对路径更改为相对路径。