V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
borivosky
V2EX  ›  Kubernetes

如何使用商业证书代替 k8s 组件之间通信的 TLS 证书

  •  
  •   borivosky · 2020-10-30 15:10:44 +08:00 · 4983 次点击
    这是一个创建于 1515 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大佬们,最近遇到这么个问题。公司的安全部门使用 Nessus Tenable SC 扫描了公司的服务器,扫出来 k8s 的那几台服务器的自签名证书是不安全的,违反了公司的安全策略(自建的 k8s 服务)。目前网上看到的都是官网的那一套 https://kubernetes.io/docs/concepts/cluster-administration/certificates/ 有没有大佬有用商业证书替换自签名证书的经验分享一下?

    第 1 条附言  ·  2020-10-30 17:21:27 +08:00
    主要矛盾是按照官网的 cfssl 工具生成的使用自签名证书会被 Nessus Tenable SC 扫描出说不安全,当时我想到的是能否用商业证书替换自签名证书,所有大佬们有其他的思路也可以提供一下。
    24 条回复    2020-12-31 03:28:04 +08:00
    no1xsyzy
        1
    no1xsyzy  
       2020-10-30 15:33:38 +08:00
    商业证书怎么签给 kubernetes.default.svc.cluster.local 这个域名呢?怎么签给 private IP 呢?
    AkideLiu
        2
    AkideLiu  
       2020-10-30 15:41:55 +08:00 via iPhone
    商业域名需要 dns 支持,域名真实存在,你这个上不了公网
    kimqcn
        3
    kimqcn  
       2020-10-30 16:03:19 +08:00
    内网没必要非得用商用设备证书,又不是给客户看,而且,贵!
    非得用,可以使用 cn=ip 的设备证书替换。
    国外的 CA (不考虑),国内的 CA,都有。
    听说国内在搞统一的国家根设备证书。
    borivosky
        4
    borivosky  
    OP
       2020-10-30 16:43:46 +08:00
    @no1xsyzy 因为对这块不熟,也不知道有没有实现的可能性,所以想来问问。
    borivosky
        5
    borivosky  
    OP
       2020-10-30 16:46:18 +08:00
    @kimqcn 大佬有没有相关的文章可以参考一下。目前只是想解决自签名证书不被信任的问题,想到的就是把自签名证书换成商业证书。大佬如果有其他的方案可以提示一下吗?
    borivosky
        6
    borivosky  
    OP
       2020-10-30 16:46:59 +08:00
    @AkideLiu 所以可以确定没有可行性吗?
    sheeta
        7
    sheeta  
       2020-10-30 16:47:55 +08:00 via Android
    根本就不可能替换成商业证书
    @borivosky
    xyjincan
        8
    xyjincan  
       2020-10-30 16:55:01 +08:00 via Android
    安全部门给自建 ca 吗,像以前 12306 一样
    dangge
        9
    dangge  
       2020-10-30 17:06:23 +08:00
    买一个域名,然后给这个域名签发证书,内网把 DNS 解析全部做成内网 IP 不就好了。。。
    然后你可以去找老板发出灵魂拷问:
    现在购买的互信证书最长有效期 13 个月,每年要停机换一次证书。
    borivosky
        10
    borivosky  
    OP
       2020-10-30 17:08:53 +08:00
    @xyjincan 这个我不确定安全部门给不给(或者能不能)自建 ca,得等下次开会的时候确认一下。多谢提供思路。
    Hurriance
        11
    Hurriance  
       2020-10-30 17:09:20 +08:00
    本地开发环境我是用 mkcert 生成的,不算是自签名的,供楼主参考一下
    borivosky
        12
    borivosky  
    OP
       2020-10-30 17:16:56 +08:00
    @Hurriance 好的,多谢提供思路。其实主要矛盾是使用自签名证书会被 Nessus Tenable SC 扫描出说不安全,当时我想到的就只是用商业证书替换自签名证书。不过可以试一下 mkcert 是不是也会有同样的问题
    borivosky
        13
    borivosky  
    OP
       2020-10-30 17:18:49 +08:00
    @dangge 哈哈哈 这个思路可以,先去发出灵魂的拷问,看看老板会不会去解决提出问题的人。
    no1xsyzy
        14
    no1xsyzy  
       2020-10-30 19:38:18 +08:00
    @Hurriance mkcert 自建 CA 啊,但你的自建 CA 还是自签名的不是?
    自签名说的就是 CA,不是实际使用的证书,主题给的链接就是这套做法,不是说封装起来就不算了的……
    Jirajine
        15
    Jirajine  
       2020-10-30 20:02:11 +08:00 via Android
    @no1xsyzy 自签名是指证书自己给自己签名,证书主体和签发者相同,不是指 private CA 。

    自签证书不安全不代表 private CA 不安全,private CA 私钥自己保管,安全性自己负责,相比之下 public CA 安全性反而不可控。
    自建 CA 推荐直接用 https://smallstep.com/docs/step-ca mkcert 那种开发用的就算了。
    AkideLiu
        16
    AkideLiu  
       2020-10-30 22:36:50 +08:00 via iPhone
    @borivosky 其实原理很简单。你的.local 域名在你的内网存在,我的.local 在我的内网存在。

    你所谓的商业 ca,也就是证书颁发机构无法验证你对于.local 域的所有权。所以不可能给你可信的证书。

    简单道理,你可以去找任何 ca 公司申请 Google.com 的证书,但是如果你不能提供所有权验证,没有人敢也没有人可以把证书颁发给你。

    overall,impossible
    Ptu2sha
        17
    Ptu2sha  
       2020-10-30 22:49:21 +08:00
    目测安全部门在刷 kpi 或者水货?
    joesonw
        18
    joesonw  
       2020-10-30 23:03:54 +08:00
    搜索关键词, kubernetes Using Vault as a CA
    0312birdzhang
        19
    0312birdzhang  
       2020-10-31 07:07:49 +08:00 via iPhone   ❤️ 1
    @dangge +1,停机换证书才是更需要考虑的, .loca 我记得是可以改的。
    tkl
        20
    tkl  
       2020-11-01 12:24:11 +08:00
    @dangge 为什么要等到过期,我提前换
    no1xsyzy
        21
    no1xsyzy  
       2020-11-02 09:08:55 +08:00
    @Jirajine 请参考主楼的教程,其实是在搞自建 CA,而不只是搞一个自签名证书…… 我是在吐槽这个
    话说集群不用 CA 怎么 “互” 信? 要配置 n*(n-1) 个证书么?
    tivizi
        22
    tivizi  
       2020-11-10 13:27:28 +08:00 via iPhone
    我猜让这个扫描工具信任你们所信任的私有 CA 证书就可以,而不是集群换所谓的“商业证书”
    stevefan1999
        23
    stevefan1999  
       2020-12-31 03:26:14 +08:00
    stevefan1999
        24
    stevefan1999  
       2020-12-31 03:28:04 +08:00
    草是要把 kube-controller 這些用自己的 ca 證書替代嗎
    那先看看有沒有足夠的證書而且域名 /ip/SAN 能對應再每一個 node 都這麼一個個把證書手動安裝就可以了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3791 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 00:56 · PVG 08:56 · LAX 16:56 · JFK 19:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.