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

2021-05-13 18:09:11 +08:00
 shanghai1943

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

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

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

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

1565 次点击
所在节点    问与答
20 条回复
Jirajine
2021-05-13 18:13:13 +08:00
那就用 acme 啊,让客户把域名指向你,然后第一次通过该域名访问时 on-the-fly 自动生成证书。
also24
2021-05-13 18:13:33 +08:00
zacharyjia
2021-05-13 18:13:53 +08:00
自己签个根证书让用户装上?
🤣🤣
ch2
2021-05-13 18:21:47 +08:00
云计算厂商都是要你上传证书才能帮你做 https 自定义域名,这事没有第二个解法
shanghai1943
2021-05-13 18:26:36 +08:00
@Jirajine 听起来有点厉害😂。。我先摸索一下。听下来感觉是可以做到客户域名指向到指定机器后,该机器可以利用 acme 的 on-the-fly 模式自动生成 HTTPS 证书?
shanghai1943
2021-05-13 18:27:18 +08:00
@also24 先学习一下。感谢。
shanghai1943
2021-05-13 18:27:45 +08:00
@zacharyjia 这个听起来像是自己做了证书签发机构?
also24
2021-05-13 18:44:24 +08:00
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
2021-05-13 20:10:53 +08:00
只有让客户提供证书一说,不存在第二个方案。
数据泄露问题无解,证书泄漏问题可解,支持 keyless 就好了。简单办法是单独申请专用证书,不要跟其他域名混用。
adjusted
2021-05-13 20:46:26 +08:00
我们用 go 和 letsencrypt 实现的
imdong
2021-05-13 21:32:29 +08:00
大概思路,客户先将域名解析到你们的服务上,然后后台添加域名时自动通过 letsencrypt 获取证书,如果需要阿里的 CDN 等业务支持,就通过 API 将证书上传到阿里云后使用。

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

业务现在用的 openresty+lua+redis
shanghai1943
2021-05-14 12:02:06 +08:00
@SakuraKuma 目前还没实现,在探讨实现方案的阶段。

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

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

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

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

© 2021 V2EX