在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证书的“域名”,最后点击“申请”。
申请后,稍等片刻,系统将会自动为您创建SSL证书并完成部署。
注:
- 申请之前,请确保域名已解析,如未解析会导致审核失败
- 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的域名,点击“申请”。
成功申请后,点击“部署”操作即可。(部署完成,同样会跳转至Let’s Encrypt标签页,这有点不太合理的交互)。
注:TrustAsia DV SSL CA – G5证书1年有效期结束后不能够续签,需重新申请。
第3步
完成宝塔控制面板的SSL申请及部署后,建议启用强制HTTPS,以保证所有域名访问通过https。
选项2 –手动部署安装免费SSL证书
第一步 –申请免费的SSL证书
你可以通过Free SSL申请注册免费SSL证书。首先你得注册一个Free SSL的账号,然后登录Free SSL网站。在首页,输入你要申请免费SSL证书的域名,点击Create certificate:
在下一个步骤,无需理会任何选项,直接点“Next Step”
然后,你可以选择90天或者1年的SSL证书,注意,这里千万不要选择第二个选项“1-Yeaar Certificate”,应该选择第一个“90-Day Certificate”。
选择生成证书信息的方式,根据自己的实际情况选择,建议选择第三个“Fill in the information”:
- EmailAddress-电子邮件地址
- Organization-组织
- Department-部门
- City-城市/地区
- State-省份
- Country-国家
点击提交,浏览器将会下载自动生成一个私钥文件private key,将其保存到浏览器任意位置(后面最终步骤也会在下载的压缩包包含此文件)。
然后,选择第一个“Free”套餐(注:其他套餐都是付费套餐),点击“Next”,进入下一个步骤。
在下个页面,Free SSL还需要对域名进行验证,可以使用邮箱认证、DNS认证和上传文件认证,这里选择最为便捷的文件上传认证作为演示。
选择“HTTP File upload”,点击“Next”
根据提示的信息创建一个txt文本,其中Auth value对应的值作为txt文本的内容,Auth path对应的值作为txt文件名,最后将创建好的txt文件上传至服务器网站根目录下的.well-known/pki-validation
然后点击“Verify Domain”,可能需要一小会的时间。
注:验证域名的时候,如失败,检查下Auth Path的URL是否能够正常访问。必须支持http访问才可以成功验证,如果启用了强制https,应临时取消。
验证成功后,点击Certificate列表对应域名右侧的操作项“Operation”下的“Download”,将会下载一个zip压缩包(包括一个key文件合一个pem文件)。
第二步 –部署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
第2步:通过前面的教程在网站服务器的宝塔安装免费SSL证书或手动部署安装免费SSL证书。
第3步:一旦在网站服务器上成功安装了SSL证书,请将Cloudflare的加密级别设置为Full或Full(严格),以便从网站服务器到客户端浏览器的连接一直被加密。
将Cloudflare的SSL模式设置为“Full”。
第4步:然后清除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证书,即TrustAsia DV SSL CA – G5证书。这个证书是无法续订的,必须在证书过期后重新申请。
Free SSL免费证书续订
如果申请的是Free SSL免费证书,那到期后,也是可以登陆freessl网站进行续订的。
注:如果您的站点使用了诸如Sucuri之类的反向代理后面,则必须与他们的客户支持部门联系,并让他们启用“forward certificate validation.”设置,以允许HTTPS更新成功完成。
强制HTTPS
宝塔控制面板强制HTTPS
安装SSL证书后,您可以在宝塔控制面板中选择“强制HTTPS”。此功能可以试想将所有HTTP请求转为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主题设置里面的一些本域的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协议。
注:操作数据库前务必先备份数据库。以防操作失误,可有备份供恢复。
评论留言