V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Antidictator
V2EX  ›  程序员

Hexo 博客 Coding+Github 双线部署求 https 方案

  •  1
     
  •   Antidictator · 2017-03-03 17:16:52 +08:00 · 9025 次点击
    这是一个创建于 2609 天前的主题,其中的信息可能已经有所发展或是发生改变。

    接上文 /t/344377 知道了 Cloudflare 是通过 CDN 的方式来实现 HTTPS 的,但这种方式它的原理是当访客使用 HTTPS 访问站点的时候,从访客到 CloudFlare 这段是加密的,然后从 CloudFlare 到站点这段是明文的,所以说这种方式是非完全安全的, Chrome 下允许加载不安全的脚本(即 CloudFlare 的证书)后就会完全变成红的感叹号。

    这就很尴尬了,幸好看到了双线部署,那么问题来了。

    我想实现的是 Coding Pages 使用它自带的 Let ’ s Encrypt 证书, Github Pages 使用 Cloudflare 半身不遂的证书,但是我在配置 Cloudflare 的时候已经把域名的 DNS 服务器设置成 Cloudflare 在美国的了。貌似因此无法在 Coding Pages 申请证书

    http://i.imgur.com/QextJwAg.png

    插入一个小问题, CNAME 域名解析是解析到 Pages.coding.me 还是${username}.coding.me ,因为生效一次要很久,所以验证有难度。

    大神们可以提供一下思路吗。

    BTY

    每次发帖都发到 Chamber 是一种被降权的体现吗?还有可能因为每天都刷 V2 导致访问频率不太正常,不能及时回复还望理解。 1800s...

    33 条回复    2018-12-22 11:24:23 +08:00
    Antidictator
        1
    Antidictator  
    OP
       2017-03-03 17:18:37 +08:00
    贴的图好像有点奇怪,内容如下:

    注意:申请 SSL/TLS 证书需要通过 Let's Encrypt 的 HTTP 方式验证域名所有权。如果您的域名在境外无法访问 Coding Pages 的服务器,将导致 SSL/TLS 证书申请失败。

    :)
    helloit
        2
    helloit  
       2017-03-03 17:24:26 +08:00
    coding.net 的 CNAME 是绑定 pages.coding.me
    github pages 貌似无法解决 https 自定义域名的问题
    xiubin
        3
    xiubin  
       2017-03-03 17:42:54 +08:00
    硬是没看懂,说下我自己的。默认解析 coding ,海外解析 github 。因为 github 被我设置强制 HTTPS ,然后海外访问会爆红,但无所谓啦
    Antidictator
        4
    Antidictator  
    OP
       2017-03-03 17:50:33 +08:00 via Android
    @helloit 所以我用 cloudflare,但是他要我更换 dns 服务器,更换后貌似导致域名访问不了 coding pages 的服务器了

    @xiubin 对对,就是要你这种,海外爆红,但是国内绿绿
    Antidictator
        5
    Antidictator  
    OP
       2017-03-03 17:52:01 +08:00 via Android
    @xiubin 你有写过相关的教程,或者资料,都可以扔给我:)
    deweixu
        6
    deweixu  
       2017-03-03 18:28:19 +08:00
    感觉还是用别家的博客服务比较好, segmentfault 就不错
    deepjia
        7
    deepjia  
       2017-03-03 18:36:14 +08:00   ❤️ 1
    能不能思路线整理清楚再发,看着太累了。

    仔细看了下,你的目的只不过是想要 GitHub Pages 使用自定义域名 + HTTPS 而已?

    要实现自然是套 Cloudflare ,但是你要在 CloudFlare 的 Crypto 里,把 SSL 配成 Flexible ,否则是不允许 CDN 通过 HTTP 连接服务器的。配上以后浏览器才不会提示不安全,我就是这么用的。

    双线才不好搞 HTTPS 呢……
    oott123
        8
    oott123  
       2017-03-03 18:47:43 +08:00   ❤️ 1
    首先,既然你要 Coding + GitHub 双 Pages 部署,那么我理解你是对国内国外两边访问速度都有追求。 CloudFlare NS 方案排除,因为 CloudFlare 的 NS 不能分区解析,所以无法直连 Coding 服务器。

    其次,你两边都要有 https 。考虑到 GitHub Pages 不提供对自定义域名的 https 服务,你需要一个反向代理给你加上 HTTPS , CloudFlare 是最好选择。

    再者,看起来你没有买服务器的打算。如果考虑购买服务器,那你可以自己设置一个对 GitHub Pages 的反向代理来提供国外服务。

    那么怎么办呢,答案就是购买 CloudFlare 的 Business 或 Enterprise 方案。这两个付费方案,支持 CNAME 接入。你可以通过支持分区解析的 DNS 将国内外分别解析到 Coding 和 Github 双 Pages (需要对 Let's encrypt 的地区解析到 coding ),同时实现 https 。那这要多少钱呢,不好意思, $ 200 / month ,还不如自己买服务器。

    综上所述,想免费的实现这套东西是不可行的,要么选择放弃 https ,要么选择放弃海外 /国内访问之一。
    oott123
        9
    oott123  
       2017-03-03 18:51:32 +08:00   ❤️ 1
    发完才发现 7 楼说得对
    Antidictator
        10
    Antidictator  
    OP
       2017-03-03 19:09:23 +08:00 via Android
    @deepjia 抱歉,我的文字确实很乱,你的我已经试过了,没用。还有我是双线部署就是为了解决这个问题
    Antidictator
        11
    Antidictator  
    OP
       2017-03-03 19:12:29 +08:00 via Android
    @oott123 不不不,你说的才是我想要,如果反代的话,国外服务器应该可以吧?

    @deepjia 方便提供一下你的域名地址吗,是绿色的小图标吗?难道是我操作有误?
    deepjia
        12
    deepjia  
       2017-03-03 19:15:56 +08:00 via iPhone   ❤️ 1
    timothyye
        13
    timothyye  
       2017-03-03 19:39:56 +08:00 via Android
    之前折腾过的一个方案,域名用 dnspod 的智能解析,加上国内 gitcafe 再 host 一份 blog ,可以根据不同线路访问分流了

    http://xiaozhou.net/use-gitcafe-to-speed-up-your-blog-2014-10-11.html

    供参考, gitcafe 被 coding 收购了,不过感觉应该大同小异
    Antidictator
        14
    Antidictator  
    OP
       2017-03-03 19:49:28 +08:00
    @deepjia 难道是我没配 www 吗。我再试试,谢谢了。


    @timothyye 非常感谢:)
    oott123
        15
    oott123  
       2017-03-03 20:10:13 +08:00   ❤️ 1
    @Antidictator 你给国外反代用国外服务器就行。

    至于页面资源不是 https ,你可以检查一下你的 Jekyll 模板之类的,确认他生成的代码是 https 开头的。
    lan894734188
        16
    lan894734188  
       2017-03-03 20:18:40 +08:00 via Android
    Alphassl 泛域名证书 部署到两边
    Antidictator
        17
    Antidictator  
    OP
       2017-03-03 20:33:09 +08:00
    @oott123 好的,我先尝试下 7 楼的方案
    Antidictator
        18
    Antidictator  
    OP
       2017-03-03 20:36:09 +08:00
    @oott123 一开始就是设置成这样子的。但是还是不行





    oott123
        19
    oott123  
       2017-03-03 20:40:43 +08:00   ❤️ 1

    移除你的 CNZZ 统计脚本,红色不安全会变成灰色 https
    移除你的占位图,灰色小图标会变成绿色小锁
    Antidictator
        20
    Antidictator  
    OP
       2017-03-03 20:44:10 +08:00
    @oott123 身为一个开发人员我竟然没有下意识 F12 。奇怪,我明明没有 cnzz 账号啊。
    doctorlai
        21
    doctorlai  
       2017-03-03 20:47:25 +08:00
    "Chrome 下允许加载不安全的脚本(即 CloudFlare 的证书)后就会完全变成红的感叹号。"
    啥意思?怎么弄,我用的就是 CloudFlare Flexible SSL, 一点问题都没有。
    ZE3kr
        22
    ZE3kr  
       2017-03-03 20:49:44 +08:00
    L19 正解。 HTTPS 是否报错与 Cloudflare 没有关系,也和 LE 或者是 Cloudflare 的证书没有关系,只是配置错误。

    几乎不可能实现国外走 Cloudflare ,国内走 Coding ,因为 Cloudflare 只提供了 NS 接入。 Cloudflare 没有给免费的个人启用 CNAME 的接入,倒是可以申请免费的 Cloudflare Partner 可以得到免费的 CNAME 接入,有 HTTPS (需要通过 API 的方式管理域名),我有一个 Partner 账号, API 操作太麻烦就放弃了。

    想要全球都速度快,便宜的方案就是 GeoDNS ,国外走 CloudFront 的 CDN ,国内自己的服务器: https://ze3kr.com/2017/01/wordpress-full-site-cdn/
    Antidictator
        23
    Antidictator  
    OP
       2017-03-03 20:57:28 +08:00
    @doctorlai 是我乌龙了,在这里要非常感谢 @oott123 ,同时深深鄙视我自己。
    Hanxv
        24
    Hanxv  
       2017-03-03 21:04:40 +08:00 via Android
    你的意思是,想上 https 還要國內外分流?

    https://hanxv.pw/2017/hijack

    可以試試 Netlify ,重定向,自定義 HTTP 頭,都可以。不過,國內速度還是不怎麼理想。不過,能上 hsts 倒是出乎意料。

    一定要用 coding pages 的話,國外反代的時候不用 let's 證書即可,或者換成 dns 驗證。
    dns 解析換成 cloudxns , dnspod 好像也行?
    Antidictator
        25
    Antidictator  
    OP
       2017-03-03 21:06:10 +08:00
    @oott123 万分感谢:) cnzz 好像是我用的主题自带的我没有注释掉,占位符是我贪方便,没想到有这样的影响,看来还是我对 HTTPS 理解不够啊。

    那么 HTTPS 下有什么可能的统计访问量的方法呢?还打算在这里面 http://theme-next.iissnan.com/third-party-services.html#analytics-busuanzi 选一个呢


    @ZE3kr 好的,我先去您的文章,感谢提供思路:)
    Antidictator
        26
    Antidictator  
    OP
       2017-03-03 21:08:55 +08:00
    @lan894734188 这个是不是有点高级,我先去看看,感谢提供思路
    cuminflea
        27
    cuminflea  
       2017-03-04 03:47:08 +08:00 via iPhone
    直接用 netlify 咋样
    Antidictator
        28
    Antidictator  
    OP
       2017-03-04 07:45:02 +08:00 via Android
    @cuminflea 好的,有空我去看看
    Antidictator
        29
    Antidictator  
    OP
       2017-03-04 10:26:30 +08:00 via Android
    @Hanxv 好的,有空我去看看
    Jobin0528
        30
    Jobin0528  
       2018-07-12 16:43:49 +08:00
    楼主你问题解决了么?虽然现在 githubpages 已经自带 https 了,但要实现和 coding 分流时,必须也境外也要解析到 coding。
    Antidictator
        31
    Antidictator  
    OP
       2018-07-13 06:22:07 +08:00 via iPhone
    @Jobin0528 最好还是直接用了 github pages,好像它直接出了一个 https,你可以研究看看,就直接开启就可以了,不用折腾 cloudflare。
    jqgsninimo
        32
    jqgsninimo  
       2018-12-22 10:58:02 +08:00
    @Antidictator 正在折腾这个问题,还在尝试 Cloudflare 的方案,到这里才发现 Github 已经支持`Enforce HTTPS`了,果断放弃 Cloudflare,非常感谢。
    Antidictator
        33
    Antidictator  
    OP
       2018-12-22 11:24:23 +08:00
    @jqgsninimo 哈哈哈,我都懒得换过来了,有空再折腾~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5632 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 01:33 · PVG 09:33 · LAX 18:33 · JFK 21:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.