【问题标题】:Cockroach DB failing to create client certificateCockroach DB 无法创建客户端证书
【发布时间】:2021-07-07 16:01:12
【问题描述】:

我已经使用教程here 在我的 Linux (WSL2 Ubuntu 20.04) 上安装了 Cockroach DB。

但是,当我尝试在步骤 1.4 中为 root 用户创建客户端证书和密钥对时,我收到以下错误:

W210412 14:47:47.996624 1 security/certificate_loader.go:356  error finding key for certs/node.crt: key file certs/node.key has permissions -rwxrwxrwx, exceeds -rwx------

错误:无法生成客户端证书和密钥:密钥文件 certs/node.key 具有权限 -rwxrwxrwx,超过 -rwx------ 运行“证书创建客户端”失败 因此,我无法在下一步中启动集群。

【问题讨论】:

    标签: ubuntu ubuntu-20.04 cockroachdb


    【解决方案1】:

    CockroachDB 要求密钥文件具有健全的权限(仅限所有者)。 但是,用于 linux 的 windows 子系统对文件权限的处理很奇怪(请参阅this WSL doc 了解更多详细信息)。

    你有两个选择:

    • 如果可能,找出如何更改 WSL2 上的文件权限
    • 告诉 CockroachDB 跳过关键文件权限

    后者在certificates documentation中有所描述:

    密钥(以 .key 结尾的文件)不得具有组或世界权限 (最大权限为 0700,或 rwx------)。这个检查可以 通过设置环境变量禁用 COCKROACH_SKIP_KEY_PERMISSION_CHECK=true。

    使用此信息,我们可以更改教程的第 1.4 步。

    默认行为给出了您遇到的错误:

    $ cockroach cert create-client root --certs-dir=certs --ca-key=my-safe-directory/ca.key 
    W210412 15:05:44.419689 1 security/certificate_loader.go:356  error finding key for certs/node.crt: key file certs/node.key has permissions -rwxrwxrwx, exceeds -rwx------
    ERROR: failed to generate client certificate and key: key file certs/node.key has permissions -rwxrwxrwx, exceeds -rwx------
    Failed running "cert create-client"
    

    使用COCKROACH_SKIP_KEY_PERMISSION_CHECK=true环境变量,我们可以让它忽略文件权限并继续:

    $ COCKROACH_SKIP_KEY_PERMISSION_CHECK=true cockroach cert create-client root --certs-dir=certs --ca-key=my-safe-directory/ca.key 
    

    如果您确实使用此解决方法,则还需要使用它来启动 cockroach 服务器。

    【讨论】:

    • 运行命令返回:-bash: ./cockroach: No such file or directory
    • 以下对我有用:COCKROACH_SKIP_KEY_PERMISSION_CHECK=true cockroach cert create-client root --ce rts-dir=certs --ca-key=my-safe-directory/ca.key。我也需要前缀COCKROACH_SKIP_KEY_PERMISSION_CHECK=true 来启动集群
    • 抱歉,我使用的是本地二进制文件(不在我的路径中),因此使用了 ./。我更改了答案以匹配教程步骤。是的,除非您更改文件的权限,否则您需要不断告诉cockroach 二进制文件忽略错误的权限。
    • 我也需要添加前缀COCKROACH_SKIP_KEY_PERMISSION_CHECK=true 来启动集群。但是,即使带有前缀,它也不允许使用 sql 客户端。有什么建议吗?
    • 环境变量也需要与cockroach sql一起使用,因为它试图从同一目录读取证书,并且会因权限错误而失败。
    猜你喜欢
    • 2020-05-13
    • 2021-09-12
    • 1970-01-01
    • 2013-04-07
    • 1970-01-01
    • 2012-10-14
    • 2017-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多