x509:证书对* .xyz.net有效,对docker.abc.xyz.net无效

tco*_*son 4 docker

我正在尝试登录公司的私有Docker存储库。当我尝试登录时:

docker login docker.abc.xyz.net
Run Code Online (Sandbox Code Playgroud)

它仅返回以下错误:

Error response from daemon: Get https://docker.abc.xyz.net/v1/users/: x509:  certificate is valid for *.xyz.net, xyg.net, not docker.abc.xyz.net
Run Code Online (Sandbox Code Playgroud)

我们有一个ca.cert,我将其放在以下位置:

/Users/myName/etc/docker/certs.d/docker.abc.xyz.net/ca.cert
Run Code Online (Sandbox Code Playgroud)

我也尝试将其放在这里:

/private/etc/docker/certs.d/docker.abc.xyz.net/ca.cert
Run Code Online (Sandbox Code Playgroud)

最后使用此命令尝试获取证书的钥匙串访问权限:

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ca.crt
Run Code Online (Sandbox Code Playgroud)

我什至给了证书完全访问权限,以查看是否可以获取。我也尝试过重新启动docker,但是没有任何东西接受我的证书。是否还有其他人有什么想法可能阻止Docker Mac上的登录尝试?

--------------
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            6c:ac:dd:00:bf:96:38:c3
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN=ON DWCC Unclass Testing CA-1
        Validity
            Not Before: Jun  6 19:40:49 2016 GMT
            Not After : Jun  6 19:40:49 2018 GMT
        Subject: C=US, O=Navy, OU=ONI, CN=docker.abc.xyz.net
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (2048 bit)
                Modulus (2048 bit):

                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Key Identifier: 

            X509v3 Basic Constraints: critical
                CA:FALSE
            X509v3 Authority Key Identifier: 
                keyid:

            X509v3 Key Usage: critical
                Digital Signature, Key Encipherment
            X509v3 Extended Key Usage: 
                TLS Web Server Authentication, TLS Web Client Authentication
            X509v3 Subject Alternative Name: 
                DNS:docker.abc.xyz.net
    Signature Algorithm: sha256WithRSAEncryption
Run Code Online (Sandbox Code Playgroud)

Cha*_*ffy 5

这实际上是正确的,符合标准的行为。一个*.xyz.net通配符证书的有效期为abc.xyz.netdocker.xyz.net,但不是docker.abc.xyz.net

引用直接针对该主题的问题的答案,然后引用RFC 2818

使用RFC2459指定的匹配规则执行匹配 。如果证书中存在一个以上给定类型的标识(例如,一个以上的dNSName名称,则认为该集合中的任何一个都可以接受。)名称可能包含通配符*,该通配符被认为与任何单个域匹配命名组件或组件片段。例如,*.a.com匹配foo.a.com但不匹配bar.foo.a.comf*.com匹配foo.com但不匹配bar.com


如果无法完全重新生成它,请考虑将适当的SubjectAltName添加到您的证书中。