我正在尝试配置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
答案 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格式提供额外的根证书,它将创建一个包含以下内容的ConfigMap
: extra.pem
文件,该文件应作为/cacerts/extra.pem
挂载到istio引导容器中。从那里应该会自动捡起它。