首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自签名证书能保护多个CNs / FQDNs吗?

自签名证书能保护多个CNs / FQDNs吗?
EN

Stack Overflow用户
提问于 2020-11-01 18:14:20
回答 1查看 133关注 0票数 0

这是一个有点愚蠢的设置,但我现在要看的是:

  • 我在学库伯内特斯
  • 我想将自定义代码推送到我的Kubernetes集群中,这意味着代码必须可以作为从 Docker存储库(默认为Docker )获得的Docker映像使用。
  • 虽然我愿意支付码头集线器,如果我需要(虽然我宁愿避免它),我有担心把我的自定义代码到第三方服务。突然速率限值安全漏洞ToS突变
  • 为此,我在Kubernetes集群中运行自己的Docker注册中心
  • 我不希望将运行在Kubernetes节点上的Docker客户端配置为信任不安全(HTTP) Docker注册中心。如果我选择从外部注册表中提取任何图像(例如,像nginx这样的公共图像,我可以从码头集线器中提取图像,而不是在本地托管),那么我就不希望受到移动图像的MITM攻击的攻击。
  • 最终,我将在集群中拥有一个构建工具(Jenkins或其他),从git中提取我的代码,构建映像,并将其推送到我的内部注册表。然后,从注册表中提取的所有节点都位于集群内。由于注册表不需要从集群以外的源接收图像或将它们传递给集群之外的源,所以注册表不需要NodePort服务,而是可以是ClusterIP服务.最终
  • 在我准备好最终的设置之前,我将在本地机器上构建图像,并希望将它们推送到注册表(从互联网)。
  • 因为我不打算让注册中心从外部世界访问(最终),所以我无法利用“让我们加密”来为它生成有效的证书(即使我是让外部世界可以使用我的Docker注册中心,无论如何,我不能用加密,而不编写一些额外的代码来利用certbot之类的)

我的计划是遵循这个StackOverflow帖子中的示例:生成一个自签名证书,然后使用该证书启动Docker注册中心。然后使用DaemonSet在集群中的所有节点上使此证书可信。

现在您已经完成了设置,下面是我的问题的关键:在我的集群中,可以通过简单的主机名(例如" Docker - registry ")访问我的docker注册表,但是在集群之外,我需要通过节点IP地址或指向节点或负载均衡器的域名访问它。

在生成自我签名证书时,我被要求为证书提供一个CN / FQDN。我输入了“停靠者-注册表”--我计划使用的内部主机名。然后,我尝试在本地访问我的注册表,将图像推送到它:

代码语言:javascript
复制
> docker pull ubuntu
> docker tag ubuntu example.com:5000/my-ubuntu
> docker push example.com:5000/my-ubuntu
The push refers to repository [example.com:5000/my-ubuntu]
Get https://example.com:5000/v2/: x509: certificate is valid for docker-registry, not example.com

我可以为example.com而不是docker-registry生成一个证书,但是我担心如果像这样提供外部域而不是内部主机名,那么在集群中配置服务或连接到注册表就会出现问题。

这就是为什么我想知道我的自我签名证书是否适用于example.com docker-registry。如果没有,另外两种可接受的解决办法是:

  • 我是否可以告诉Docker客户端不要验证主机名,而只是隐式地信任证书?
  • 我可以告诉Docker注册中心根据用于访问它的主机名交付两个不同的证书之一吗?

如果这三种选择都不可能的话,那么我就可以放弃从本地机器上推送图像,开始在集群中构建映像的过程--但我希望推迟到以后。我现在学到了很多东西,尽量避免被切碎的东西分散注意力。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-01 18:38:53

解决问题的最简单方法可能是使用Docker的不安全注册功能。您在文章中提到的这个问题(这将使您以后面临安全风险)可能不适用,因为该功能通过指定要信任的特定IP地址或主机名来工作。

例如,您可以配置以下内容

代码语言:javascript
复制
{
    "insecure-registries" : [ "10.10.10.10:5000" ]
}

如果没有TLS,您的Docker守护进程将访问的唯一IP地址是主机和端口号上的IP地址。

如果您不想这样做,那么您需要获得一个可信的TLS证书。您提到的关于每个证书具有多个名称的问题通常由证书中的主语替代名称字段处理。(事实上,Kubernetes相当多地使用了这一特性)。

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

https://stackoverflow.com/questions/64635307

复制
相关文章

相似问题

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