Ssl Https不适用于入口,CA根不受信任
我一直在遵循以下关于AKS设置的教程:。 但现在我正努力让HTTPS正常工作 这就是我所做的 我已经通过以下方式生成了证书和密钥 在cmd中运行它Ssl Https不适用于入口,CA根不受信任,ssl,kubernetes,azure-aks,Ssl,Kubernetes,Azure Aks,我一直在遵循以下关于AKS设置的教程:。 但现在我正努力让HTTPS正常工作 这就是我所做的 我已经通过以下方式生成了证书和密钥 在cmd中运行它 bash generate-wildcard-certificate.sh mydomain.somenumbers.westeurope.aksapp.io 将生成2个文件: mydomain.somenumbers.westeurope.aksapp.io.crt mydomain.somenumbers.westeurope.aksapp.i
bash generate-wildcard-certificate.sh mydomain.somenumbers.westeurope.aksapp.io
将生成2个文件:
mydomain.somenumbers.westeurope.aksapp.io.crt
mydomain.somenumbers.westeurope.aksapp.io.key
kubectl创建秘密tls入口加密身份验证--密钥mydomain.somenumbers.westeurope.aksapp.io.crt--证书mydomain.somenumbers.westeurope.aksapp.io.crt
将该秘密添加到我的ingres.yaml
文件中:
{{ if .Values.ingress.enabled }}
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: {{ template "fullname" . }}
labels:
app: {{ template "fullname" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
annotations:
kubernetes.io/ingress.class: addon-http-application-routing
spec:
tls:
- hosts:
- {{ .Values.ingress.basedomain }}
secretName: ingress-crypto-auth
rules:
- host: {{ .Release.Name }}.{{ .Values.ingress.basedomain }}
http:
paths:
- path: /
backend:
serviceName: {{ template "fullname" . }}
servicePort: {{ .Values.service.externalPort }}
{{ end }}
我的证书似乎已加载,但出现以下错误:
此CA根证书不受信任,因为它不在受信任的根证书颁发机构存储中
我做错什么了吗?更重要的是,我如何让它工作?
我不在乎临时项目的情况如何,因为您使用的是自签名证书 自签名证书是未经(CA)签名的证书。这些证书制作简单,不需要花钱。但是,它们并没有提供CA签名的证书要提供的所有安全属性。例如,当网站所有者使用自签名证书提供服务时,访问该网站的用户将在其浏览器中看到警告 要解决此问题,您可以从受信任的CA购买有效的证书,或者使用Let's Encrypt生成证书 使用证书管理器进行加密 证书管理器构建在Kubernetes之上,在Kubernetes API中引入证书颁发机构和证书作为一级资源类型。这使得向在Kubernetes集群中工作的开发人员提供“证书即服务”成为可能 Let's Encrypt是一家由Internet Security Research Group运营的非营利性证书颁发机构,免费为传输层安全加密提供X.509证书。证书有效期为90天,在此期间,可随时续签。 我相信您已经安装了NGINX入口并正在工作 先决条件: -安装和工作 -安装和工作 证书管理器安装 注意:在GKE(Google Kubernetes引擎)上运行时,在创建这些资源时可能会遇到“权限被拒绝”错误。这是GKE处理RBAC和IAM权限方式的细微差别,因此在运行上述命令之前,您应该将自己的权限“提升”到“集群管理员”的权限。如果已运行上述命令,则应在提升权限后再次运行这些命令: 按照安装步骤进行操作,或仅使用HELM 3.0和以下命令:
$kubectl创建命名空间证书管理器
$helm repo添加jetstackhttps://charts.jetstack.io
$helm回购更新
$kubectl apply--validate=false-fhttps://github.com/jetstack/cert-manager/releases/download/v0.14.1/cert-manager-legacy.crds.yaml
为Let's Encrypt创建CLusterIssuer
:将以下内容保存在名为letsencrypt production.yaml的新文件中:
注意:用您的有效电子邮件替换
apiVersion:certmanager.k8s.io/v1alpha1
种类:聚类分析
元数据:
标签:
名称:letsencrypt产品
名称:letsencrypt产品
规格:
顶点:
电邮:
http01:{}
privateKeySecretRef:
名称:letsencrypt产品
服务器:'https://acme-v02.api.letsencrypt.org/directory'
应用以下配置:
kubectl apply-f letsencrypt production.yaml
使用Let's Encrypt作为默认CA安装证书管理器:
helm install cert-manager \
--namespace cert-manager --version v0.8.1 jetstack/cert-manager \
--set ingressShim.defaultIssuerName=letsencrypt-prod \
--set ingressShim.defaultIssuerKind=ClusterIssuer
验证安装:
$kubectl get pods——名称空间证书管理器
名称就绪状态重新启动
cert-manager-5c6866597-zw7kh 1/1运行0 2m
cert-manager-cainjector-577f6d9fd7-tr77l 1/1运行0 2m
cert-manager-webhook-787858fcdb-nlzsq 1/1运行0 2m
使用证书管理器
在入口规范中应用此注释:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
应用证书后,证书管理器将为主机:
中配置的域生成tls证书
{{ if .Values.ingress.enabled }}
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: {{ template "fullname" . }}
labels:
app: {{ template "fullname" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
annotations:
kubernetes.io/ingress.class: addon-http-application-routing
cert-manager.io/cluster-issuer: "letsencrypt-prod"
spec:
tls:
- hosts:
- {{ .Values.ingress.basedomain }}
secretName: ingress-crypto-auth
rules:
- host: {{ .Release.Name }}.{{ .Values.ingress.basedomain }}
http:
paths:
- path: /
backend:
serviceName: {{ template "fullname" . }}
servicePort: {{ .Values.service.externalPort }}
{{ end }}
如果有帮助,请告诉我。您使用的是自签名证书,因为您没有有效的证书。您提到的脚本在创建证书时显示此警告。自签名证书仅用于开发/测试目的。。。如果您需要有效的证书,我建议您查看Let's Encrypt and cert manager,如果这是您想要的,我将很乐意帮助您并发布一个答案来设置证书管理器/Let's Encrypt以在您的应用程序中拥有有效的证书。感谢您的回复,在互联网上搜索之后,我发现事情会是这样的。我现在正在学习下面的教程:但是我一直停留在
创建证书对象上
你能帮我吗?为什么你会结巴?我想你可以使用nginx ingres实现自己的证书管理器。你需要aks提供的静态ip和负载均衡器吗?我已经让它工作了,但这个解决方案看起来或多或少像我做的,所以我接受了你的答案:)