我有一个域foobar。当我开始我的项目时,我知道我会让我的Web服务器为foobar.com
处理流量。此外,我还计划在es.foobar.com
上运行一个我想要的弹性搜索服务器。我在GoDaddy购买了我的域名,我(可能提前(购买了foobar.com
的单站点证书。我无法将此证书更改为通配符证书。我必须购买一个新证书。我有我的DNS记录为那个简单的URL路由流量。我正在使用Kubernetes管理一切。
问题:
- 是否可以将我的简单单站点证书用于主站点和子域(如我的弹性搜索服务器(,或者我是否需要购买另一个专门用于弹性搜索服务器的单站点证书?我早些时候查过了,GoDaddy想要350美元买一个多站点的
- ElasticSearch使这一点有些复杂,因为如果在
es.foobar.com
访问它,并且证书是针对foobar.com
的,它会拒绝任何请求,对吧?Elasticsearch需要一个证书才能拥有可靠的安全性
是否可以将我的简单单站点证书用于主站点和子域?
为了实现您的目标,您可以使用Name based virtual hosting ingress
,因为您的Web服务器foobar.com
和elasticsearches.foobar.com
很可能在不同的端口上工作,并且在同一IP下可用。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: name-virtual-host-ingress
spec:
rules:
- host: foobar.com
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: webserver
port:
number: 80
- host: es.foobar.com
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: elastic
port:
number: 9200-9300 #http.port parametr in elastic config
它也可以使用TLS私钥和证书来实现,并为TLS创建一个文件。这只适用于一个级别,如*.foobar.com
。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: name-virtual-host-ingress
spec:
tls:
- hosts:
- foobar.com
- es.foobar.com
secretName: "foobar-secret-tls"
rules:
- host: foobar.com
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: webserver
port:
number: 80
- host: es.foobar.com
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: elastic
port:
number: 9200-9300 #http.port parametr in elastic config
您需要为另一个域获取通配符或单独的证书。