轻松全站 HTTPS,还没用上 https (可申请泛域名证书)的朋友可以操练起来了

2018-11-07 11:03:59 +08:00
 getaobj

前几天刚搭了博客:《双 11 买服务器的朋友一定有要搭博客的吧? Docker+Ghost 快速搭建教程请拿走》

写了点文章手机上看,发现竟然被运营商劫持投广告了。这不能忍,只是连夜上 https 了。

原文图文链接: https://www.jianshu.com/p/57e5bb1277ce

为什么要上 HTTPS

安全:你与用户之间的消息加密传输,防止中间人攻击(就是我遇到的问题)

其它优点:当你在国内使用域名时,需要备案。有时你想测试一下你的站,用上未备案的域名,怎么办呢? https 可以帮你暂时绕过阿里云弹的未备案页(强烈建议去备案你的域名,一来你应当守法,二来未备案国内 cdn、网站收录什么的都需要备案的域名),其它暂时没想到有什么优点。

准备

安装: curl https://get.acme.sh | sh

或者

wget -O - https://get.acme.sh | sh

这样你已经把 acme.sh 这个小工具安装到你本地的 ~/.acme.sh/中了,而不会在你系统的其它地方装些乱七八糟的东西。

极速开始

阿里云购买域名的朋友可以走这个极速通道,因为阿里云有接口可以直接操作域名控制台,这个接口已经被整合到了 acme.sh 这个工具里面。只要设置一下 Ali_Key 和 Ali_Secret, 从哪里获得?

  1. 在你的命令行中执行如下命令: export Ali_Key="换成你的 AccessKey ID" export Ali_Secret="换成你的 Access Key Secret"

  2. 开始申请证书 acme.sh --issue --dns dns_ali -d 2td.cc -d '*.2td.cc' 2td.cc 是我的域名,这里需要换成你的。 参数解释: acme.sh :表示使用你刚安装好的 acme.sh

--issue :申请证书

--dns dns_ali:使用阿里云的 dns 服务,在阿里云买的域名,在没有修改默认 dns 的前提下,都可以使用这个参数来申请 https 证书。

-d 2td.cc-d表示 domain,后面跟你要申请域名。

-d '*.2td.cc':这里的-d 与上方一样,-d 参数可以带多个,这里的'*.2td.cc'中的 * 表示泛域名,只要申请了这个证书像( www.2td.ccmail.2td.cch5.2td.cc ...)这类的二级域名都可以使用此证书来实现 https。注意 2td.cc这个域名不在这条规则里,所以上面又加了一条-d 2td.cc,这样你的主域名、二级子域名均可以使用此证书。

  1. 等待执行完成,期间会有 120 秒的倒计时,结束后如果显示成功,则证书申请成功。

  2. 应用到 nginx 修改你 nginx 的配置,配置 https

server {
    listen 443 ssl;
    # 有了 https 可以尝试开启 http2,加速你的网站 
    # http2 需要你 nginx 加载了 http2 模块,用如下配置开启。
    # listen 443 ssl http2;
    server_name 2td.cc;

    ssl_certificate /root/.acme.sh/2td.cc/fullchain.cer;
    ssl_certificate_key /root/.acme.sh/2td.cc/2td.cc.key;

    # charset koi8-r;
    access_log  /var/log/nginx/host.access.log  main;
    
    # 下面写你之前的配置
}
5305 次点击
所在节点    程序员
26 条回复
ilaipi
2018-11-07 16:47:49 +08:00
[Wed Nov 7 16:44:40 CST 2018] Your cert is in /root/.acme.sh/*.xxxxx.com/*.xxxxx.com.cer
[Wed Nov 7 16:44:40 CST 2018] Your cert key is in /root/.acme.sh/*.xxxxx.com/*.xxxxx.com.key
[Wed Nov 7 16:44:40 CST 2018] The intermediate CA cert is in /root/.acme.sh/*.xxxxx.com/ca.cer
[Wed Nov 7 16:44:40 CST 2018] And the full chain certs is there: /root/.acme.sh/*.xxxxx.com/fullchain.cer

@getaobj 我想问下,*.xxxxx.com.cer 和 fullchain.cer 有什么区别?还有那个 ca.cer ?
getaobj
2018-11-07 17:37:28 +08:00
@ilaipi 好问题!

*.xxxxx.com.cer 这个应该是你根证书,是真正的证书。

fullchain.cer 是校验证书用的

以上个人看法,可参考 https://support.dnsimple.com/articles/what-is-ssl-certificate-chain/
dif
2018-11-07 18:28:24 +08:00
CloudFlare + 源站, 全程 SSL。
getaobj
2018-11-07 19:03:45 +08:00
@dif 赞,手动感谢
hanguofu
2018-11-08 13:38:09 +08:00
这个科普贴写得好,同感谢!
getaobj
2018-11-08 22:34:45 +08:00
@hanguofu 哈哈,希望对你有帮助

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/505296

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX