V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
shanghai1943
V2EX  ›  问与答

如何让客户的自定义域名也能通过 HTTPS 访问我们的服务

  •  
  •   shanghai1943 · 2021-05-13 18:09:11 +08:00 · 1545 次点击
    这是一个创建于 1282 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景: 业务上支持客户设置自定义域名,这个自定义域名指向我们的服务,这样客户那边就可以通过他们的自定义域名访问到我们的服务了,效果与通过我们的域名来访问是一样的。

    难点: HTTPS 的请求在转发后会提示证书不信任之类的问题。

    不知各位大哥有遇到过这种场景么,解决方案如何?先行谢过。

    PS:目前能想到的,就是让客户提供他们域名的 HTTPS 证书给我们,我们这边去做转发配置之类的。这种人工干预程度太高,而且客户提供 HTTPS 证书这种方式不太安全。所以不太考虑这种方案。

    第 1 条附言  ·  2021-05-13 18:41:51 +08:00
    目前了解到的一个情况是,阿里云有开放 api 支持证书创建上传之类的操作 https://help.aliyun.com/document_detail/27566.html?spm=a2c4g.11174283.6.806.41c81192C6PKPY
    20 条回复    2021-05-14 12:02:06 +08:00
    Jirajine
        1
    Jirajine  
       2021-05-13 18:13:13 +08:00 via Android
    那就用 acme 啊,让客户把域名指向你,然后第一次通过该域名访问时 on-the-fly 自动生成证书。
    zacharyjia
        3
    zacharyjia  
       2021-05-13 18:13:53 +08:00
    自己签个根证书让用户装上?
    🤣🤣
    ch2
        4
    ch2  
       2021-05-13 18:21:47 +08:00
    云计算厂商都是要你上传证书才能帮你做 https 自定义域名,这事没有第二个解法
    shanghai1943
        5
    shanghai1943  
    OP
       2021-05-13 18:26:36 +08:00
    @Jirajine 听起来有点厉害😂。。我先摸索一下。听下来感觉是可以做到客户域名指向到指定机器后,该机器可以利用 acme 的 on-the-fly 模式自动生成 HTTPS 证书?
    shanghai1943
        6
    shanghai1943  
    OP
       2021-05-13 18:27:18 +08:00
    @also24 先学习一下。感谢。
    shanghai1943
        7
    shanghai1943  
    OP
       2021-05-13 18:27:45 +08:00
    @zacharyjia 这个听起来像是自己做了证书签发机构?
    Jirajine
        9
    Jirajine  
       2021-05-13 18:51:30 +08:00
    @shanghai1943 #5 on-the-fly 意思是随用随生成,让你的 acme 客户端在请求到来的时候自动签发证书。
    例如 https://caddyserver.com/docs/automatic-https#on-demand-tls
    rrfeng
        10
    rrfeng  
       2021-05-13 20:10:53 +08:00 via Android
    只有让客户提供证书一说,不存在第二个方案。
    数据泄露问题无解,证书泄漏问题可解,支持 keyless 就好了。简单办法是单独申请专用证书,不要跟其他域名混用。
    adjusted
        11
    adjusted  
       2021-05-13 20:46:26 +08:00
    我们用 go 和 letsencrypt 实现的
    imdong
        12
    imdong  
       2021-05-13 21:32:29 +08:00
    大概思路,客户先将域名解析到你们的服务上,然后后台添加域名时自动通过 letsencrypt 获取证书,如果需要阿里的 CDN 等业务支持,就通过 API 将证书上传到阿里云后使用。

    解析让用户解析到你们的一对一域名上,方便后续控制挑战。
    shanghai1943
        13
    shanghai1943  
    OP
       2021-05-14 09:51:37 +08:00
    @Jirajine 受教了。感谢。
    shanghai1943
        14
    shanghai1943  
    OP
       2021-05-14 11:05:27 +08:00
    @also24 感谢。提供的信息很有帮助。
    shanghai1943
        15
    shanghai1943  
    OP
       2021-05-14 11:23:26 +08:00
    @imdong 对的。目前的思路也大致如此。
    shanghai1943
        16
    shanghai1943  
    OP
       2021-05-14 11:36:30 +08:00
    @adjusted 有个实现思路上的问题想向您确认一下。就是,比如客户的 customer.com 域名是通过配置了 cname 的方式来指向你们的服务么?在客户自定义域名的请求到达你们的服务之后,你们会自动为这个域名签发 let's encrypt 证书是么。再之后是不是请求将会通过 slb 之类的分发到具体的应用服务中去处理?
    adjusted
        17
    adjusted  
       2021-05-14 11:43:24 +08:00
    @shanghai1943 嗯,cname 可以在 letsencrypt 用 http01 方法验证,获得证书后就看你怎么通过服务器返回给请求了,需要一个支持动态更新证书的 http 服务器,这样也可以支持用户自己上传证书。
    shanghai1943
        18
    shanghai1943  
    OP
       2021-05-14 11:54:59 +08:00
    @adjusted 感谢。
    SakuraKuma
        19
    SakuraKuma  
       2021-05-14 11:58:04 +08:00
    你们有自定义设置域名, 是怎么实现的, 原理应该差不多吧, 除非你们是写配置软路由实现的..

    业务现在用的 openresty+lua+redis
    shanghai1943
        20
    shanghai1943  
    OP
       2021-05-14 12:02:06 +08:00
    @SakuraKuma 目前还没实现,在探讨实现方案的阶段。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2773 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 12:57 · PVG 20:57 · LAX 04:57 · JFK 07:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.