NGINX入口上的客户端SubjectName验证

时间:2020-04-11 17:49:27

标签: kubernetes certificate tls1.2 kubernetes-ingress nginx-ingress

我正在尝试配置NGINX入口控制器,它还可以验证来自客户端的唯一CN或Subjectname。原因是,我们只希望将客户端配置为访问NGINX入口控制器,而其余使用相同CA和密钥签名的客户端则可以删除。

    Certificate:
Data:
    Version: 1 (0x0)
    Serial Number: 2 (0x2)
Signature Algorithm: sha256WithRSAEncryption
    Issuer: CN=testAuthority
    Validity
        Not Before: Apr  5 08:02:23 2020 GMT
        Not After : Apr  5 08:02:23 2021 GMT
    Subject: CN=**client**
    Subject Public Key Info:
        Public Key Algorithm: rsaEncryption
            Public-Key: (4096 bit)
       Public Key Algorithm: rsaEncryption
            Public-Key: (4096 bit)
            Modulus:
       <snipped>
            Exponent: 65537 (0x10001)
Signature Algorithm: sha256WithRSAEncryption
<snipped>
-----BEGIN CERTIFICATE-----
<snipped>
 -----END CERTIFICATE-----

如果从上述 Subject:CN 证书或证书密钥或指纹收到了对NGINX控制器的请求,则应将其转发到后端。 其余证书应被拒绝。

如果可以在Ingress中配置一些注释或配置映射,则可能会有所帮助。

1 个答案:

答案 0 :(得分:1)

您可以尝试extract CN into variable,然后通过configuration snippet拒绝基于此变量的访问。一种可能的解决方法是将其他Ingress与专用的CA +客户端证书身份验证结合使用,并仅将客户端证书颁发给允许的客户端。