WordPress网站免费SSL证书申请及配置教程

SSL证书申请及配置教程

在WordPress网站上安装SSL证书,既是顺应互联网发展之要求,也是网站信息加密之所需。

网站拥有SSL证书将启用HTTPS,这可确保不会以纯文本形式传递任何信息。我们建议所有站点都使用HTTPS,因为它具有除安全性之外的许多其他好处,如SEO、信任、避免浏览器警告等。

如何安装SSL证书

对于WordPress网站安装SSL(TLS)证书,小编仅针对最为常见的三种安装方式进行讲解。

选项1 –宝塔安装免费SSL证书

如果您的VPS服务器安装部署了宝塔控制面板,那安装免费SSL证书是一件非常简单的事情。

第1步

登录到宝塔控制面板后台,然后进入“网站”管理列表,找到你需要安装SSL证书的网站,点击操作“设置”。

宝塔网站设置

在宝塔控制面板中选择一个站点

第2步

使用宝塔面板安装SSL证书,主要推荐两种方式:宝塔SSL(1年免费TrustAsia DV SSL CA证书,期满可续订)或者Let’s Encrypt免费证书(3个月免费,可续订)。

(1)Let’s Encrypt证书安装

在网站设置弹窗窗口,点击左侧菜单“SSL”,然后切换至Let’s Encrypt标签项,选择验证方式为“文件验证”及勾选你需要安装SSL证书的“域名”,最后点击“申请”。

Let's Encrypt证书申请

申请后,稍等片刻,系统将会自动为您创建SSL证书并完成部署。

Let's Encrypt证书部署

注:

  • 申请之前,请确保域名已解析,如未解析会导致审核失败
  • Let’s Encrypt免费证书,有效期3个月,支持多域名。默认会自动续签
  • 若您的站点使用了CDN或301重定向会导致续签失败
  • 在未指定SSL默认站点时,未开启SSL的站点使用HTTPS会直接访问到已开启SSL的站点
  • 如开启后无法使用HTTPS访问,请检查安全组是否正确放行443端口

(2)宝塔SSL证书安装

如果你嫌上面的Let’s Encrypt免费证书有效期过短(实际上可以续订),那也可以申请宝塔的SSL正式(该证书实际上是TrustAsia DV SSL CA – G5证书)。

首先你必须完成宝塔账号实名认证,否则无法由宝塔提供的1年免费的TrustAsia DV SSL CA – G5证书。

注:宝塔实名认证,可以是个人或者企业实名认证,其中个人实名认证务必保证手机号码、姓名和身份证三个信息准确,且手机号码不能为电信号码、携号转网号码(官方说的)。

同在网站设置弹窗窗口,点击左侧菜单“SSL”,然后切换至宝塔SSL标签项,选择你需要申请宝塔SSL的域名,点击“申请”。

TrustAsia DV SSL CA - G5证书申请

成功申请后,点击“部署”操作即可。(部署完成,同样会跳转至Let’s Encrypt标签页,这有点不太合理的交互)。

TrustAsia DV SSL CA - G5证书部署

注:TrustAsia DV SSL CA – G5证书1年有效期结束后不能够续签,需重新申请。

第3步

完成宝塔控制面板的SSL申请及部署后,建议启用强制HTTPS,以保证所有域名访问通过https。

宝塔强制HTTPS启用

选项2 –手动部署安装免费SSL证书

第一步 –申请免费的SSL证书

你可以通过Free SSL申请注册免费SSL证书。首先你得注册一个Free SSL的账号,然后登录Free SSL网站。在首页,输入你要申请免费SSL证书的域名,点击Create certificate

FreeSSL官网

在下一个步骤,无需理会任何选项,直接点“Next Step”

FreeSSL免费证书申请

然后,你可以选择90天或者1年的SSL证书,注意,这里千万不要选择第二个选项“1-Yeaar Certificate”,应该选择第一个“90-Day Certificate”

90天免费SSL证书

选择生成证书信息的方式,根据自己的实际情况选择,建议选择第三个“Fill in the information”:

  • EmailAddress-电子邮件地址
  • Organization-组织
  • Department-部门
  • City-城市/地区
  • State-省份
  • Country-国家

免费SSL证书信息填写

点击提交,浏览器将会下载自动生成一个私钥文件private key,将其保存到浏览器任意位置(后面最终步骤也会在下载的压缩包包含此文件)。

然后,选择第一个“Free”套餐(注:其他套餐都是付费套餐),点击“Next”,进入下一个步骤。

FreeSSL套餐选择

在下个页面,Free SSL还需要对域名进行验证,可以使用邮箱认证、DNS认证和上传文件认证,这里选择最为便捷的文件上传认证作为演示。

选择“HTTP File upload”,点击“Next”

FreeSSL域名验证

根据提示的信息创建一个txt文本,其中Auth value对应的值作为txt文本的内容,Auth path对应的值作为txt文件名,最后将创建好的txt文件上传至服务器网站根目录下的.well-known/pki-validation

FreeSSL域名验证-文件上传验证

然后点击“Verify Domain”,可能需要一小会的时间。

注:验证域名的时候,如失败,检查下Auth Path的URL是否能够正常访问。必须支持http访问才可以成功验证,如果启用了强制https,应临时取消。

验证成功后,点击Certificate列表对应域名右侧的操作项“Operation”下的“Download”,将会下载一个zip压缩包(包括一个key文件合一个pem文件)。

FreeSSL证书文件下载

第二步 –部署SSL证书

(1)宝塔面板部署Free SSL证书

如果你安装的是宝塔面板,则部署刚才在Free SSL申请的免费证书是一件非常简单的事情。

登录你的网站服务器的宝塔控制面板后台,点击(1)“网站”菜单,在网站列表中找到需要配置SSL的域名,点击(2)“设置”操作,然后在弹出窗口中(3)选择“其他证书”选项卡。

宝塔面板其他证书部署

然后将前面下载的压缩包文件解压得到两个文件:.key和.pem。使用记事本打开,将.key的文本内容复制粘贴到(4)key密钥,及将.pem的文本内容复制粘贴到(5)PEM格式证书,最后点击“保存”即可为网站配置SSL证书。

(2)自主部署Free SSL证书

如果服务器安装的是Nginx,则参考以下步骤进行SSL证书部署。

找到网站的Nginx的网站配置文件,可能存放在/usr/local/nginx/conf/vhost这样的目录下的域名.conf,不同服务器可能不尽相同。在网站的Nginx配置文件添加下列注释的行(相关信息替换成自己网站的):

 

server
{   
    #在80端口监听行下方增加443端口监听 
    listen 443 ssl http2;
    #如果需要http跳转https,在域名指向目录下方增加下面规则,注意将域名更换为自己的域名
    if ($http_host !~ "^bt\.wbolt\.com$") {
        rewrite  ^(.*)    https://bt.wbolt.com$1 permanent;
        } 
    
    #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
    #error_page 404/404.html;
    #填写.pem证书的存放路径,注意将证书保存路径改为自己服务器的路径 
    ssl_certificate    /usr/local/nginx/conf/ssl/bt.wbolt.com/bt.wbolt.com.pem;
    #填写私钥的存放路径,注意将证书保存路径改为自己服务器的路径 
    ssl_certificate_key    /usr/local/nginx/conf/ssl/bt.wbolt.com/bt.wbolt.com.key;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
}

如果服务器安装的是Apache,则参照以下步骤进行SSL证书部署。

找到网站的Apache的网站配置文件,可能存放在/usr/local/apache2.4/conf/httpd.conf,不同服务器可能不尽相同。在网站的Apache配置文件添加下列行(相关信息需替换自己的):

<VirtualHost *:443>
    #网站路径、域名地址及Log路径均要替换成自己的
    ServerAdmin webmaster@example.com
    DocumentRoot "/www/wwwroot/bt.wbolt.com/"
    ServerName SSL.bt.wbolt.com
    ServerAlias bt.wbolt.com 
    #errorDocument 404 /404.html
    ErrorLog "/www/wwwlogs/bt.wbolt.com-error_log"
    CustomLog "/www/wwwlogs/bt.wbolt.com-access_log" combined
    
    #SSL 以下是配置SSL证书的信息,切记将证书文件路径及文件换成自己的
    SSLEngine On
    SSLCertificateFile /usr/local/apache/conf/ssl/bt.wbolt.com/bt.wbolt.com.pem
    SSLCertificateKeyFile /usr/local/apache/conf/ssl/bt.wbolt.com/bt.wbolt.com.key
    SSLCipherSuite EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5
    SSLProtocol All -SSLv2 -SSLv3 -TLSv1
    SSLHonorCipherOrder On
    
    
    #PHP
    <FilesMatch \.php$>
            SetHandler "proxy:unix:/tmp/php-cgi-56.sock|fcgi://localhost"
    </FilesMatch>
    

    #DENY FILES
     <Files ~ (\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)$>
       Order allow,deny
       Deny from all
    </Files>

    #PATH 网站路径需替换成自己网站的路径
    <Directory "/www/wwwroot/bt.wbolt.com/">
        SetOutputFilter DEFLATE
        Options FollowSymLinks
        AllowOverride All
        Require all granted
        DirectoryIndex index.php index.html index.htm default.php default.html default.htm
    </Directory>
</VirtualHost>

选项3 –使用Cloudflare或Sucuri安装SSL证书

Cloudflare和Sucuri是所谓的反向代理服务。您可以将它们视为中间人。您将DNS指向他们,然后他们将您的请求路由到网站服务器。因此,需要采取一些其他步骤来确保正确安装SSL证书。

使用Cloudflare

Cloudflare允许通过HTTPS加载网站的两种不同方式:Flexible或者Full (Full strict)。

  • Flexible-允许Cloudflare与网站服务器之间通过HTTP(未加密)连接,并且不需要SSL证书。
  • Full需要Cloudflare和网站服务器之间通过HTTPS(加密)连接。

第1步:在Cloudflare中,切换至“Crypto”选项卡,然后关闭SSL(也建议将Cloudflare设置为development mode(开发模式),直到网站服务器的SSL准备就绪为止。您可以通过overview面板上的快速操作来执行此操作。)

cloudflare关闭SSL

在Cloudflare中关闭SSL

第2步:通过前面的教程在网站服务器的宝塔安装免费SSL证书手动部署安装免费SSL证书

第3步:一旦在网站服务器上成功安装了SSL证书,请将Cloudflare的加密级别设置为Full或Full(严格),以便从网站服务器到客户端浏览器的连接一直被加密。

cloudflare完全SSL加密模式

将Cloudflare的SSL模式设置为“Full”。

第4步:然后清除Cloudflare缓存。而且,如果您将网站置于开发模式,请确保将其设置为活动状态。

清除Cloudflare缓存

清除Cloudflare缓存

使用Sucuri

您必须首先联系他们的客户,并让他们启用“forward certificate validation.”设置。这允许HTTPS设置成功完成。然后,您可以通过上述教程在网站服务器的宝塔安装免费SSL证书手动部署安装免费SSL证书

检查&续订SSL证书

(1)检查SSL证书

安装SSL证书后,建议您运行SSL检查以验证所有设置是否正确。

(2)续订SSL证书

不同的SSL证书,其续订方式不尽相同。

Let’s Encrypt免费SSL证书续订

通过宝塔控制面板申请的免费SSL证书(Let’s Encrypt),需要你在宝塔控制面板手动执行续订操作。点击“网站”,选择你需要续订SSL证书的网站域名,点击“设置”操作。

在弹出窗口点击“SSL”菜单,切换至“Let’s Encrypt”选项卡,点击“续签按钮。”

宝塔SSL续签操作

宝塔SSL免费证书续订

如果你是通过宝塔控制面申请的一年免费SSL证书,即TrustAsia DV SSL CA – G5证书。这个证书是无法续订的,必须在证书过期后重新申请。

Free SSL免费证书续订

如果申请的是Free SSL免费证书,那到期后,也是可以登陆freessl网站进行续订的。

注:如果您的站点使用了诸如Sucuri之类的反向代理后面,则必须与他们的客户支持部门联系,并让他们启用“forward certificate validation.”设置,以允许HTTPS更新成功完成。

强制HTTPS

宝塔控制面板强制HTTPS

安装SSL证书后,您可以在宝塔控制面板中选择“强制HTTPS”。此功能可以试想将所有HTTP请求转为HTTPS。

宝塔启用强制HTTPS

在宝塔控制面板开启强制HTTPS

手动配置强制HTTPS

如果你的网站服务器为Apache服务器,需要在网站的Apache配置文件添加下列行

#HTTP_TO_HTTPS_START HTTP请求强制跳转HTTPS
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule (.*) https://%{SERVER_NAME}$1 [L,R=301]
</IfModule>
#HTTP_TO_HTTPS_END

如果你的网站服务器为Nginx服务器,需要在网站的Nginx配置文件添加下列行

server {

        #如果需要http跳转https,在域名指向目录下方增加下面规则,注意将域名更换为自己的域名 
        if ($http_host !~ "^bt\.wbolt\.com$") { 
            rewrite ^(.*) https://bt.wbolt.com$1 permanent; } 
       }

其他注意事项

网站配置https,还需要注意的一些事项:

1.混合内容问题

混合内容问题,即在同一页面地址,同时使用了http和https两种协议请求资源。解决办法如下:

务必在WordPress仪表盘-设置,将WordPress地址和站点地址的URL改为https协议的URL地址,如下图所示:

WordPress地址及站点地址设置

然后确保WordPress主题设置里面的一些本域的URL地址更换成https协议的URL地址。

否则可能会造成跨域问题,启用了https也会在浏览器提示不安全。

完成上述操作,还是会提示跨域问题,可以通过查看源代码,找到非https协议的URL链接,再有针对性地去解决。

2.图片资源未能转为https协议链接问题

理论上,当你将WordPress地址和站点地址变更为https协议的URL地址后,这个问题会解决。

但也有可能存在特殊的情况。如果还是存在这样的问题,你可以尝试数据库批量替换命令来修复这一问题。

第1步:进入网站对应的phpMyAdmin;

第2步:在左侧数据库表选择网站对应的数据库名称;

第3步:点击顶部导航切换到“SQL”标签;

第4步:在运行SQL查询框输入下列命令行;

UPDATE wp_posts SET post_content = replace(post_content, 'http://你的域名','https://你的域名');

第5步:最后点击“执行”即可将文章内容http协议的本站URL替换为https协议。

注:操作数据库前务必先备份数据库。以防操作失误,可有备份供恢复。

评论留言