公司用到了Amazon Elastic Container Service,完全托管的容器服务
公司的SAAS平台,本来多租户的证书管理模式预计是这样的:
给每个租户单独设立一个 xyz.alibaba.com 的子域名,然后用cert-manager管理证书,只要annouce一个 xyz.alibaba.com 的ingress出来,就会自动签发证书。
然而研发觉得这样也是很不爽,连annouce ingress也不愿意,就想客户的域名直接解析一个 xyz.客户.com 的 cname 过来,然后就自动签发证书。
这个需求真的是很有意思,也只有caddy能很轻松的这么实现,方法如下:
一、做好一个caddy的deploy和service,前面直接顶一个Loadbalance
二、配置caddy的配置
/etc/caddy/Caddyfile 的内容
1{
2 debug
3 on_demand_tls {
4 ask http://localhost:5555/
5 }
6}
7
8https:// {
9 tls {
10 on_demand
11 }
12 handle {
13 reverse_proxy https://alibaba.com {
14 header_up Host alibaba.com
15 }
16 }
17
18 respond "Welcome to dynamic certificate signing!" 200
19
20}
21
22http://localhost:5555 {
23 respond 200
24}
注意上面,Caddy对这种随便的域名,是要求去问一下后端的服务是否对这个域名进行签发的,这是为了防止滥用。
我们直接做个虚拟服务,回应200即可
这样的做法比较直接了当,当然只适用于国外,国内就麻烦了,未知的域名解析到你的ip上,没备案直接就会被封站。