代码之家  ›  专栏  ›  技术社区  ›  D. Langdon

如何使用Apache和CA证书配置Docker Registry V2?

  •  0
  • D. Langdon  · 技术社区  · 9 年前

    我已经在谷歌搜索中阅读了这里和外面的所有参考文献,但无法使用CA签名的证书访问我的注册表。以下是我的资料:

    Apache代理(尝试了各种配置,但都对docker没有任何影响):

    监听dockerrepo.xxxx.xxxx.xxxx。网址:5000 https 服务器名dockerrepo.xxxx.xxxx.xxxxx.com

    SSL发动机打开 SSL证书文件/etc/httpd/certs/DockerRepoCAKeyCert.crt SSLCA证书文件/etc/httpd/certs/DockerRepoCAKeyCert.crt SSLCertificateKeyFile/etc/httpd/certs/DockerRepoCAKeyCert.crt SSLCipherSuite AES128-SHA、AES256-SHA、AES128-GCM-SHA256、AES256/GCM-SHA384 SSL协议全部-SSLv3-SSLv2-TLSv1

    Header always set "Docker-Distribution-Api-Version" "registry/2.0"
    Header onsuccess set "Docker-Distribution-Api-Version" "registry/2.0"
    RequestHeader set X-Forwarded-Proto "https"
    
    ProxyPreserveHost on
    ProxyPass   /v2 http://127.0.0.1:5000/v2
    ProxyPassReverse /v2  http://127.0.0.1:5000/v2
    

    SSL发动机打开 SSL证书文件/etc/httpd/certs/DockerRepoCAKeyCert.crt SSLCA证书文件/etc/httpd/certs/DockerRepoCAKeyCert.crt SSLCertificateKeyFile/etc/httpd/certs/DockerRepoCAKeyCert.crt SSLCipherSuite AES128-SHA、AES256-SHA、AES128-GCM-SHA256、AES256/GCM-SHA384 SSL协议全部-SSLv3-SSLv2-TLSv1

    标题始终设置为“Docker Distribution Api Version”“registry/2.0”
    成功设置的标题“Docker Distribution Api Version”“registry/2.0”
    RequestHeader设置X-Forwarded-Proto“https”
    
    上的ProxyPreserveHost
    代理通行证/v2http://127.0.0.1:5000/v2
    ProxyPassReverse/v2http://127.0.0.1:5000/v2
    

    我启动注册表:

    prod=注册表 版本=2.1.1 docker加载--input/home/docker/docker_${prod}-${ver}.tar docker运行-d--privilege=true-e GUNICORN_OPTS=“[--preload]”-p 127.0.0.1:5000:5000--restart=always-v/home/docker/certs:/ce rts-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/DockerRepoCACert。crt-e REGISTRY_HTTP_TLS_KEY=/certs/客户端私钥无密码短语 .pem-v/home/docker/prodRepo/data:/tmp/registry dev--命名docker注册表${prod}:${ver}

    注册表和apache启动良好。当我推的时候,我得到了这个:

    [root@dockerrepodockerrepo:5000]#docker push dockerrepo.xxxxx.xxxxx.com:5000/注册表:2.1.1

    推送引用了一个存储库[dockerrepo.internal.acp.arris.com:5000/registry](len:1)

    无法ping注册表终结点 https://dockerrepo.xxxxx.xxxxx.xxxxx.com:5000/v0/

    v2 ping尝试失败,错误为:Get https://dockerrepo.xxxx.xxxx.xxxx。com:5000/v2/:x509:证书签名人 未知权限

    v1 ping尝试失败,错误为:Get https://dockerrepo.xxxx.xxxxx.xxxxx。com:5000/v1/_ping:x509:由未知授权机构签名的证书

    我尝试过将域、中间/子证书和根证书组合在一起,但我似乎无法实现这一点。我怀疑我在做傻事,但我看不出是什么。感谢您的帮助。

    检查后,我意识到我没有将证书添加到CA信任中。完成此操作后,我现在得到以下错误:

    [root@dockerrepo锚点]#docker push dockerrepo.xxxxx.xxxxx.com:5000/registry:2.1.1

    推送引用存储库[dockerrepo.xxxxx.xxxxx.com:5000/registry](长度:1)

    1e847b14150e:缓冲到磁盘

    接收到意外的HTTP状态:502代理错误

    1 回复  |  直到 9 年前
        1
  •  0
  •   amjad    9 年前

    您是否确保CA证书位于主机上的以下目录中?

       /etc/docker/certs.d/<registry-host>:<registry-port>/