近两天闲下来,把这个弄了!
目前我的站群有5个子站,而证书就弄一个就行,在“证书持有者可选名称”这步,把你站群全部的证书加进去!
我用的是oneinstack的vhost.sh脚本
网站在运行着,你不用管他,主要是用这个脚本来获取证书,并配置一个网站,要注意的是他会在线检查。
运行vhost.sh选3
可参考下:https://oneinstack.com/faq/letsencrypt/ 内容和新脚本不一定符合。
配置完后,你要做啥?
1、修改你的nginx的虚拟主机的conf文件
2、修改你网站文章内的http://的内链、图片,你可以用phpmyadmin、也可以用插件:Search Replace,或者在phpmyadmin直接执行http替换为https的命令
1 2 3 4 5 6 |
UPDATE wp_options SET option_value = REPLACE(option_value, 'http://caohuan.com', 'https://caohuan.com') WHERE option_name = 'home' OR option_name = 'siteurl'; UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://caohuan.com', 'https://caohuan.com'); UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, 'http://caohuan.com','https://caohuan.com'); UPDATE wp_comments SET comment_content = REPLACE (comment_content, 'http://caohuan.com', 'https://caohuan.com'); UPDATE wp_comments SET comment_author_url = REPLACE (comment_author_url, 'http://caohuan.com','https://caohuan.com'); UPDATE wp_posts SET guid = REPLACE (guid, 'http://caohuan.com', 'https://caohuan.com') WHERE post_type = 'attachment'; |
还有就是通过配置nginx的conf,把原http请求用301跳转到https(百度允许301)
1 2 3 |
if ($server_port = 80 ) { return 301 https://caohuan.com$request_uri; } if ($host != caohuan.com) { return 301 $scheme://caohuan.com$request_uri; } if ($ssl_protocol = "") { return 301 $scheme://$host$request_uri; } |
我这是把htt://www.caohuan.com跳转htts://caohuan.com本来我不用加这段配置,原因我在配置证书时忘记把www.caohuan.com也加入,所以要跳转,不然在浏览器输入caohuan然后ctrl+enter访问http://www.caohuan.com跳转到https://www.caohua.com就会出现证书错误,到这步他就不跳转了,所以有了上面几段配置。
当然可能你会觉的配置有重复,哎!我在手机上用了手机自带浏览器、uc、firefox在笔记上用了uc、firefox、edge、exploer,这样配置后才能让我没证书的http://www.caohuan.com正确的跳转到https://caohuan.com
网上也有很多跳转的语法:
oneinstack配置默认的是
1 2 |
if ($ssl_protocol = "") { return 301 https://$server_name$request_uri; } if ($host != www.caohuan.com) { return 301 $scheme://caohuan.com$request_uri; } |
其它的如:
1 2 3 4 |
1、if ($scheme = http ) { return 301 https://$host$request_uri; } 2、if ($server_port = 80 ) { return 301 https://$host$request_uri; } 3、rewrite ^(.*) https://caohuan.com$1 permanent; 4、return 301 https://$server_name$request_uri; |
如果你在制作证书的时候把 www.caohuan.com caohuan.com都添加有,就是上面的方法之一都可以完成正确跳转。
如果你浏览器缓存了https://www.caohuan.com这样的访问,用ctrl+enter快捷输入时,还是会出现证书错误的问题。这个我没办法去改客户的混存了。
还好证书3个月后到期,到时一定要把这个加上,这样少几个if也能帮nginx省点力。
--------------2019.6.24.08:20更新
为了谁!我还是重签一次吧。!
到 /root/.acme.sh 执行 "./acme.sh --revoke" 吊销证书
先先备份再删除/usr/local/nginx/conf/vhost/*.conf虚拟机配置
再删除/usr/local/nginx/conf/ssl/目录下对应的的crt和key
然后删除 /root/.acme.sh目录下相应的域名目录
准备工作完毕,到/oneinstack执行./vhost.sh选3,
我看到它用的是验证域名解释ip的方式,所以你一定要确保你填入的域名都解释到了相同的ip,如果没绑定是过不了,会提示某个域名出错,按出错所提示的域名再绑定,绑好你也需要等待个几分钟(生效时间看域名商决定),急得话找个PING的网站来ping一下,我自己在vps上来pINg,PING还没出来,在线网站的ping就出来了。
如我5个域名,四个已备,一个在备审(审核期间不能解析到网站,今天周一所以我起早点,用几分钟解释ip,先把证书签下,然后再删除),全部新签成功,那么上面的昨晚折腾码的字就没必要了。
我只需要保留
1 |
if ($ssl_protocol = "") { return 301 https://$host$request_uri; } |
至于https://www.caohuan.com跳转https://caohuan.com交给wordpress自己处理了。
对于3个月后的更新,你可以放心,acme.sh已经在crontab里面加了自动更新任务,
1 |
42 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null |
每天凌晨检查更新(可crontab --l查看,为了放心如果你没移动目录,可尝试
1 |
"/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" |
这段来检测运行是否成功)。如果你觉得它每天检查有点过了,你可以修改任务的时间。
目前免费支持多域名的也只有let'sencrypt,还有个trustasia亚洲诚信支持双域名,大家讨论的多,文章多,你遇到问题,能找到的文章也多,所以let'sencrypt目前是广大小站的不二之选。