letsencrypt证书
一开始我的网站是安装了WDCP面板的WordPress的个人博客,直接登录进入服务器后台的WDCP面板,找到我之前用这个面板创建的站点列表,最开始的SSL处显示为“否”,为未启用SSL的状态。
点击“SSL”一栏即可修改SSL的状态,可以选择不启用、启用、强制启用。
刚开始,因为此前均没有启用过SSL证书,因此点击“创建lets证书并启用”,然后WDCP面板就自动完成了HTTP转HTTPS,此时再打开网站已经为HTTS了。
十分简单粗暴……
接着,就出现问题了,这么简单粗暴转成HTTPS后,原先在WordPress上发表的文章均发生了排版的错乱,搜索了一下资料,得知是因为在HTTP与HTTPS中的CSS的多媒体素材的链接的格式不同(当然也可能是挂有HTTP的外链),总之就是不受信任被Chrome浏览器给拦截了。当然也可以去手动点击显示受拦截的素材,不过你就会看到HTTPS就变红色还被划了斜线,完全不是我想要的结果。
解决办法:
需要先给WordPress网站目录下的wp-config.php的开头添加三行代码,启用SSL,我就直接在WDCP面板中的文件管理里粘贴进去就OK了:
$_SERVER['HTTPS'] = 'on';
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);
再接着,进入WordPress的仪表盘的“设置”—“常规”中修改“WordPress地址”和“站点地址”的URL,由HTTP改为HTTPS。
注意:如果先修改了Word Press的URL,而还没对wp-config.php进行修改的话,会打不开WordPress的仪表盘,极其惊悚吓人。
修改好之后的网站排版正常,但是HTTPS不是好看的绿色,而是灰色的,点开看,显示“并非完全安全”,估计是我之前的图片素材的链接还是HTTP的缘故,应该是可以用命令语句全部替换成HTTPS的,这个之后再弄,加上letsencrypt证书有效期只有3个月,还需要在去考虑到期自动续期的功能(不然就需要定期去再申请一遍了),letsencrypt证书就这样先告一段落了。
TrustAsia DV SSL CA证书
加上我这个服务器是在腾讯云买的,恰好还发现腾讯云可以免费申请1年的TrustAsia DV SSL CA证书,心里一想这个可以不需要每隔3个月就去再申请一次证书,就也申请了一个试试,腾讯云网站后台和小程序都可以申请(审批要等1个小时不到吧)。
下载证书到本地,解压分别得到Apache、IIS、Nginx、Tomcat 4个的证书文件夹,因为我的网站是基于Nginx搭建的,根据腾讯云的证书安装指引:
再回到刚才的WDCP面板中的“SSL证书管理”,看看它把我的证书放去哪个文件夹了,同理上传腾讯云申请来的TrustAsia DV SSL CA证书到相同的文件夹:
接着要对nginx.conf进行修改,WDCP中的Nginx的根目录一开始并不确定位置,可以在WDCP面板的“文件管理”里点击“nginx配置”,找到www.domain.com.conf的文件进行修改。
打开可以发现原来之前WDCP面板自动申请创建letsencrypt证书时,就已经修改过这个配置文件了,因此我们以已经配置好的代码为基准,对比证书安装指引,观察需要修改的配置,进行小幅度的修改,最终得到以下配置:
server {
listen 443;
root /www/web/www.domain.com/public_html;
ssl on;
ssl_certificate cert/1_www.domain.com_bundle.crt;
ssl_certificate_key cert/2_www.domain.com.key;
ssl_prefer_server_ciphers on;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
server_name domain.com www.domain.com;
index index.php;
error_page 400 /errpage/400.html;
error_page 403 /errpage/403.html;
error_page 404 /errpage/404.html;
error_page 503 /errpage/503.html;
location ~ \.php$ {
proxy_pass http://127.0.0.1:88;
include naproxy.conf;
}
location ~ /\.ht {
deny all;
}
location / {
try_files $uri @apache;
}
location @apache {
internal;
proxy_pass http://127.0.0.1:88;
include naproxy.conf;
}
error_log /www/weblogs/www.domain.com_errors.log;
}
注意:因为原来也申请了letsencrypt证书,因此,在nginx.conf中可以存在两段server{ }代码块,但是并不会起到双证书的效果,只会从上到下匹配,网站打开只会显示一个证书。……至于双证书的配置……再说吧……