0

在此处输入图像描述我写了一个 mTLS 证书的 golang 程序

package main

import (
    "context"
    "fmt"
    "io"
    "log"

    "github.com/falcosecurity/client-go/pkg/api/outputs"
    "github.com/falcosecurity/client-go/pkg/client"
    "github.com/gogo/protobuf/jsonpb"
)

func main() {
    // Set up a connection to the server.
    c, err := client.NewForConfig(context.Background(), &client.Config{
        Hostname:   "localhost",
        Port:       5060,
        CertFile:   "/etc/falco/certs/client.crt",
        KeyFile:    "/etc/falco/certs/client.key",
        CARootFile: "/etc/falco/certs/ca.crt",
    })
}

我在 /etc/falco/certs 位置使用 openssl 生成了证书。在运行程序时,我收到此错误。

2021/10/21 11:58:22 unable to connect: error loading the X.509 key pair: open /etc/falco/certs/client.key: permission denied
exit status 1

如何解决这个问题?

4

2 回答 2

0

检查 /etc/falco/certs 中文件的所有者和权限掩码。如果这些文件的所有者与您运行代码的用户不匹配,您将收到权限错误。在大多数 linux 系统上,.key 文件需要设置为 600 的模式,所以如果我不得不猜测这些文件中的哪一个可能会引发您的错误,那将是 client.key 文件。尝试运行

chmod 640 在密钥上,644 在证书文件上,然后确保您运行代码的用户拥有这些文件,或者至少在文件所属的组中,看看会发生什么。

于 2021-10-21T22:17:32.730 回答
0

通过运行此命令并更改文件的权限来解决此问题:

sudo chmod o+r+w client.key
sudo chmod o+r+w ca.key
sudo chmod o+r+w server.key
于 2021-10-27T08:14:37.370 回答