背景: 业务上支持客户设置自定义域名,这个自定义域名指向我们的服务,这样客户那边就可以通过他们的自定义域名访问到我们的服务了,效果与通过我们的域名来访问是一样的。
难点: HTTPS 的请求在转发后会提示证书不信任之类的问题。
不知各位大哥有遇到过这种场景么,解决方案如何?先行谢过。
PS:目前能想到的,就是让客户提供他们域名的 HTTPS 证书给我们,我们这边去做转发配置之类的。这种人工干预程度太高,而且客户提供 HTTPS 证书这种方式不太安全。所以不太考虑这种方案。
1
Jirajine 2021-05-13 18:13:13 +08:00 via Android
那就用 acme 啊,让客户把域名指向你,然后第一次通过该域名访问时 on-the-fly 自动生成证书。
|
2
also24 2021-05-13 18:13:33 +08:00
|
3
zacharyjia 2021-05-13 18:13:53 +08:00
自己签个根证书让用户装上?
🤣🤣 |
4
ch2 2021-05-13 18:21:47 +08:00
云计算厂商都是要你上传证书才能帮你做 https 自定义域名,这事没有第二个解法
|
5
shanghai1943 OP @Jirajine 听起来有点厉害😂。。我先摸索一下。听下来感觉是可以做到客户域名指向到指定机器后,该机器可以利用 acme 的 on-the-fly 模式自动生成 HTTPS 证书?
|
6
shanghai1943 OP @also24 先学习一下。感谢。
|
7
shanghai1943 OP @zacharyjia 这个听起来像是自己做了证书签发机构?
|
8
also24 2021-05-13 18:44:24 +08:00
|
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 |
10
rrfeng 2021-05-13 20:10:53 +08:00 via Android
只有让客户提供证书一说,不存在第二个方案。
数据泄露问题无解,证书泄漏问题可解,支持 keyless 就好了。简单办法是单独申请专用证书,不要跟其他域名混用。 |
11
adjusted 2021-05-13 20:46:26 +08:00
我们用 go 和 letsencrypt 实现的
|
12
imdong 2021-05-13 21:32:29 +08:00
大概思路,客户先将域名解析到你们的服务上,然后后台添加域名时自动通过 letsencrypt 获取证书,如果需要阿里的 CDN 等业务支持,就通过 API 将证书上传到阿里云后使用。
解析让用户解析到你们的一对一域名上,方便后续控制挑战。 |
13
shanghai1943 OP @Jirajine 受教了。感谢。
|
14
shanghai1943 OP @also24 感谢。提供的信息很有帮助。
|
15
shanghai1943 OP @imdong 对的。目前的思路也大致如此。
|
16
shanghai1943 OP @adjusted 有个实现思路上的问题想向您确认一下。就是,比如客户的 customer.com 域名是通过配置了 cname 的方式来指向你们的服务么?在客户自定义域名的请求到达你们的服务之后,你们会自动为这个域名签发 let's encrypt 证书是么。再之后是不是请求将会通过 slb 之类的分发到具体的应用服务中去处理?
|
17
adjusted 2021-05-14 11:43:24 +08:00
@shanghai1943 嗯,cname 可以在 letsencrypt 用 http01 方法验证,获得证书后就看你怎么通过服务器返回给请求了,需要一个支持动态更新证书的 http 服务器,这样也可以支持用户自己上传证书。
|
18
shanghai1943 OP @adjusted 感谢。
|
19
SakuraKuma 2021-05-14 11:58:04 +08:00
你们有自定义设置域名, 是怎么实现的, 原理应该差不多吧, 除非你们是写配置软路由实现的..
业务现在用的 openresty+lua+redis |
20
shanghai1943 OP @SakuraKuma 目前还没实现,在探讨实现方案的阶段。
|