使用内部签名的证书针对JWKS进行Istio JWT验证

时间:2018-10-24 03:41:57

标签: istio

我正在尝试配置Istio身份验证策略以验证我们的JWT。

我设置了策略,可以看到它生效了。但是,它不允许任何连接。如果我检查了istio-pilot日志,则在应用策略时会看到它未能检索签名密钥,并给出了证书错误。

2018-10-24T03:22:41.052354Z error   model   Failed to fetch pubkey from "https://iam.company.com.au/oauth2/jwks":  Get https://iam.company.com.au/oauth2/jwks:  x509: certificate signed by unknown authority
2018-10-24T03:22:41.052371Z warn    Failed to fetch jwt public key from "https://iam.company.com.au/oauth2/jwks "

我认为这是由于此服务器使用了由我们公司CA签名的TLS证书。

如何让istio-pilot信任来自我们CA的证书?我曾尝试安装ca证书,并将我们的CA公钥包含在Ubuntu证书中,但仍然无法正常工作。

政策:

apiVersion: "authentication.istio.io/v1alpha1"
kind: "Policy"
metadata:
  name: "our-service-jwt-example"
spec:
  targets:
  - name: our-service
  origins:
  - jwt:
      issuer: iam.company.com.au
      audiences:
      - YRhT8xWtcLrOQmqJUGPA1p6O6mUa
      jwksUri: "https://iam.company.com.au/oauth2/jwks"
  principalBinding: USE_ORIGIN

2 个答案:

答案 0 :(得分:0)

飞行员为特使解决问题。在这种情况下,飞行员需要拥有CA证书。目前,除非在istio中部署试用版时添加证书,否则无法将CA证书添加到试用版中。 https://github.com/istio/istio/blob/master/pilot/pkg/model/jwks_resolver.go

答案 1 :(得分:0)

自Istio 1.4起已添加:

https://github.com//istio/istio/pull/17176

您可以以pilot.jwksResolverExtraRootCA头盔图表值(以IstioOperator的形式使用Istio的最新版本)以PEM格式提供额外的根证书,它将创建一个包含以下内容的ConfigMapextra.pem文件,该文件应作为/cacerts/extra.pem挂载到istio引导容器中。从那里应该会自动捡起它。