首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建SSL证书的意外错误:证书和私钥没有匹配的公钥: tls:私钥与公钥不匹配

创建SSL证书的意外错误:证书和私钥没有匹配的公钥: tls:私钥与公钥不匹配
EN

Stack Overflow用户
提问于 2022-05-24 13:23:51
回答 2查看 782关注 0票数 1

如你所见,我有一个pfx证书作为秘密存储在azurekeyvault保险库中。

我已经使用akv2k8s工具创建了kubernetes秘密,用于访问azurekeyvault集群中的azurekey库。如您所见,kubernetes的秘密已被成功创建。

但是当我将它应用到ingress.yaml时,它仍然在使用kubernetes假证书,当我检查nginx-ingress荚的日志时,我看到了如下错误,

这是我的入口-srv.yaml文件

代码语言:javascript
复制
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-srv
  annotations:
    kubernetes.io/ingress.class: nginx
    
    
spec:
  tls:
  - hosts:
    - devc.leverauto.com
    secretName: my-pfx-cert-secret-from-akv
  defaultBackend:
    service:
      name: lever-webapp-service
      port:
        number: 3000
  rules:
  - host: devc.leverauto.com
    http:
      paths:
      - path: /auth/api/v1/
        pathType: Prefix
        backend:
          service:
            name: lever-authentication-service
            port:
              number: 5000
      - path: /auction/api/v1/
        pathType: Prefix
        backend:
          service:
            name: lever-auction-service
            port:
              number: 5010 
      - path: /audit/api/v1/
        pathType: Prefix
        backend:
          service:
            name: lever-audits-service
            port:
              number: 5005                      
      - path: /inventory/api/v1/
        pathType: Prefix
        backend:
          service:
            name: lever-inventory-service
            port:
              number: 5006         
      - path: /lender/api/v1/
        pathType: Prefix
        backend:
          service:
            name: lever-lender-service
            port:
              number: 5009 
      - path: /payment/api/v1/
        pathType: Prefix
        backend:
          service:
            name: lever-payments-service
            port:
              number: 5002
      - path: /report/api/v1/
        pathType: Prefix
        backend:
          service:
            name: lever-reports-service
            port:
              number: 5003 
      - path: /sopraData/api/v1/
        pathType: Prefix
        backend:
          service:
            name: lever-sopra-datapull-service
            port:
              number: 5011
      - path: /sopra/api/v1/
        pathType: Prefix
        backend:
          service:
            name: lever-sopra-service
            port:
              number: 5008
      - path: /vehicle/api/v1/
        pathType: Prefix
        backend:
          service:
            name: lever-vehicle-service
            port:
              number: 5001
      - path: /workflow/api/v1/
        pathType: Prefix
        backend:
          service:
            name: lever-workflow-service
            port:
              number: 5004  
      - path: /
        pathType: Prefix
        backend:
          service:
            name: lever-webapp-service
            port:
              number: 3000    

找不到怎么解决这个问题吗?

EN

回答 2

Stack Overflow用户

发布于 2022-06-02 19:04:45

·您会收到此错误,因为相关的入口规则可能没有为作为密钥库中的秘密上传的证书指定匹配的主机名。此外,由于您正在配置NGINX服务器,因此入口控制器提供了标志‘-default-ssl-证书’。此标志所引用的秘密包含访问所有捕获服务器时使用的默认证书。If this flag is not provided, NGINX will use a self-signed certificate and at that time, a ‘foo-tls’ should be added in the ‘nginx-controller’ deployment like ‘--default-ssl-certificate=default/foo-tls’

·此外,请确保您是否启用了“SSLpass身”功能,默认情况下,是禁用的,因为在中启用通入后端是必需的。Unlike HTTP backends, traffic to Passthrough backends is sent to the clusterIP of the backing Service instead of individual Endpoints。在将证书中的秘密添加到密钥库中的方式中,这也可能是一个问题。

请检查是否禁用了HSTS安全功能,因为它是默认启用的,因为它是使用特殊响应头指定的opt安全增强。若要禁用此行为,请在部署时在配置中使用“hsts:false”。

·最后,请check whether server-side HTTPS enforcement through redirect is disabled or not as when enabled, the controller redirects HTTP clients to the HTTPS port 443 using a 308 Permanent Redirect response if TLS is enabled for that Ingress。可以在NGINX配置中使用‘ssl-重定向:false’来全局禁用,注释为‘nginx.ingress.kubernetes.io/ssl--重定向:“false”。

有关Azure金库的秘密识别和未识别的详细信息,请参阅以下链接:-

https://kubernetes.github.io/ingress-nginx/user-guide/tls/

票数 0
EN

Stack Overflow用户

发布于 2022-07-26 05:27:32

我通过一些临时的解决方案解决了这个问题,我的ssl证书提供者是GoDaddy,它作为pfx秘密存储在蔚蓝密钥库中。使用akv2k8s,我试图从密钥库的秘密中创建一个kubernetes秘密,kubernetes的秘密被创建了,但是正如我上面所描述的,它给了我公钥不匹配的问题。

所以我解决这个问题的方法是,我们有另一个运行在蔚蓝vm中的应用程序实例,我们在那里导入了相同的ssl证书,我想也许密钥库中的ssl被破坏了,但是我知道vm中的证书没有问题,因为我们通过互联网访问那个vm域,它显示了有效的证书,所以我用密码从vm导出了证书,并将它作为证书上传到密钥库,然后再次使用akv2k8s创建了kubernetes秘密,它被成功创建了,而且我没有面对上面的问题,入口节点成功地将ssl应用到kubernetes域。

现在,您可以在上面的屏幕截图中看到,我的ssl于2022年7月15日过期,ssl处于自动关机状态,因此它在密钥库中得到更新。因此,现在我需要再次更新所有实例的ssl。所以这一次,我想尝试创建kubernetes秘密,在azurekey而库中使用机密,正如我所知道的,这次密钥库中没有秘密问题,因为我在vm中导入了相同的秘密,它被更新到vm域,并且运行良好。

--但我再次面临公钥不匹配的问题,现在我再次尝试用密码从vm导出新证书,并将其作为证书上传到密钥库,并使用akv2k8s创建kubernetes秘密,并再次将其成功应用于kubernetes域。所以这只是暂时的解决方案,但它解决了我的问题,

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72363706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档