【问题标题】:Istio Gateway MUTUAL TLS mode Not WorkingIstio Gateway MUTUAL TLS 模式不工作
【发布时间】:2021-06-28 06:44:45
【问题描述】:

我创建了一个 GKE 集群 1.18.17-gke.1901 并在其上安装了 Istio 1.9.5。我的入口网关服务是type: LoadBalancer

我正在尝试在我的istio-ingressgateway 中实现MUTUAL TLS 模式。网关配置如下所示:

apiVersion: networking.istio.io/v1beta1
kind: Gateway
metadata:
  name: mutual-domain
  namespace: test
spec:
  selector:
    istio: ingressgateway
  servers:
  - hosts:
    - mutual.domain.com
    port:
      name: mutual-domain-https
      number: 443
      protocol: HTTPS
    tls:
      credentialName: mutual-secret
      minProtocolVersion: TLSV1_2
      mode: MUTUAL

我也设置了相应的 VirtualService 和 DestinationRule。

现在,每当我尝试连接到 https://mutual.domain.com 时,都会收到以下错误:

*   Trying 100.50.76.97...
* TCP_NODELAY set
* Connected to mutual.domain.com (100.50.76.97) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/cert.pem
  CApath: none
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to mutual.domain.com:443 
* Closing connection 0
curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to mutual.domain.com:443

如果我将tls: mode: 更改为SIMPLE,我可以通过域名访问该服务,但是当它是MUTUAL 时,就会出现上述错误。

mutual-secret 是一个 tls 类型的 Kubernets 机密,它包含 tls.crttls.key

$ kubectl describe mutual-secret
Name:         mutual-secret
Namespace:    istio-system
Labels:       <none>
Annotations:  <none>

Type:  kubernetes.io/tls

Data
====
tls.crt:  4585 bytes
tls.key:  1674 bytes

有什么遗漏吗?为什么我无法在MUTUAL 模式下访问我的服务,但同样的秘密适用于SIMPLE 模式?

【问题讨论】:

  • 如果可能,请包含kubectl describe secret mutual-secret的输出
  • @PawełGrondal 我已经编辑了我的问题并添加了kubectl describe secret mutual-secret 的输出。
  • 我假设你在关注this。似乎您的秘密中缺少ca.crt。使用tls.crttsl.keyca.crt 创建一个新密钥,然后重试。
  • @PawełGrondal 是的,我错过了car.crt,但是在提供它之后,每当我尝试在浏览器ERR_BAD_SSL_CLIENT_AUTH_CERT 中访问 URL 时,我都会遇到另一个错误

标签: ssl google-kubernetes-engine istio


【解决方案1】:

假设你关注this

您的秘密中似乎缺少ca.crt。使用tls.crttsl.keyca.crt 创建一个新密钥,然后重试。


cmets 中提到的ERR_BAD_SSL_CLIENT_AUTH_CERT 错误是特定于 Chrome/Chromium 的。这意味着浏览器无法识别证书颁发机构。

将您的 CA 证书 (.pem file) 添加到 Chrome/Chromium,您可以关注 this。希望它能解决您的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 2022-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多