繁体   English   中英

如何修复docker-machine中过期的客户端证书

[英]How to fix expired client cert in docker-machine

做一个docker-machine ls a 得到了意外的Unable to query docker version: Get https://xxxx:2376/v1.15/version: x509: certificate has expired or is not yet valid for Unable to query docker version: Get https://xxxx:2376/v1.15/version: x509: certificate has expired or is not yet valid machine.

我最近什么都没做。 看着 SO,我尝试了一些常见的罪魁祸首、VPN、病毒、奇怪的时钟问题等。这些都不适用。 如何修复使它们再次可用(通过docker-machine界面)?

使用 Docker for Mac,17.12.0-ce-49

更新- 正如我在 2/14/2018 评论的那样,这现在是 docker-machine 的一部分。
尝试: docker-machine regenerate-certs --client-certs

历史答案如下:


首先, docker-machine regenerate-certs不会重新生成客户端证书。

在使用openssl之后,我发现它实际上是已过期的客户端证书。 验证:

openssl x509 -in ~/.docker/machine/certs/cert.pem -text | grep "Not After"

我尝试使用相同的ca.pem原位重新创建证书但没有成功(对我而言)。 如果有更多的时间和反复试验,我猜它最终会奏效。

最终起作用的是备份整个目录,创建一个虚拟的一次性机器(强制 docker-machine 创建新证书),移动配置、ssh 密钥和服务器证书(不是客户端证书),然后为每台机器发布一个重新生成。 注意,这是破坏性和痛苦的。 如警告所示, docker-machine regenerate-certs将在目标机器上重新启动 docker。 虽然对我来说为时已晚,但我希望看到更好的答案。

该过程类似于:

#!/bin/bash

cd ~/.docker || exit
cp -R machine machine.bak
rm -rf machine
docker-machine create deleteme
docker-machine rm -rf deleteme
cd machine/machines || exit

for m in $(~/.docker/machine.bak/machines)
do
    cp -R "../../machine.bak/machines/$m" .
    rm "$m/cert.pem"
    rm "$m/key.pem"
    cp certs/cert.pem "$m"
    cp certs/key.pem "$m"
    docker-machine regenerate-certs -f
done

尝试:

docker-machine regenerate-certs --client-certs <machine name>

--client-certs很重要。

注意:

可以通过运行来检查有效性:

openssl x509 -in ~/.docker/machine/certs/cert.pem -text -noout | less

结果是这样的:

 Certificate:
     Data:
     ...
     Signature Algorithm: sha256WithRSAEncryption
         ...
         Validity
             Not Before: Mar 12 09:03:00 2018 GMT
             Not After : Feb 24 09:03:00 2021 GMT
     ...

我无法使用上述解决方案解决我的问题。 所以我只是删除了我的机器和带有证书的相应文件夹,我能够正确地创建我的机器:

docker-machine rm -y $(docker-machine ls -q)
rm -rf ~/.docker/machine

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM