не удается подключиться: ошибка при загрузке пары ключей X.509

#openssl #ssl-certificate #x509certificate #ca #mtls

Вопрос:

введите описание изображения здесьЯ написал программу golang, которая mTLS сертифицирует

 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(), amp;client.Config{
        Hostname:   "localhost",
        Port:       5060,
        CertFile:   "/etc/falco/certs/client.crt",
        KeyFile:    "/etc/falco/certs/client.key",
        CARootFile: "/etc/falco/certs/ca.crt",
    })
}
 

Я сгенерировал сертификаты с помощью openssl в каталоге /etc/falco/certs . При запуске программы я получаю эту ошибку.

 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
 

Как это исправить?

Комментарии:

1. Отказано в разрешении говорит о том, что ключ не может быть прочитан. Вам необходимо убедиться, что пользователь, запускающий приложение, действительно имеет разрешения на чтение обоих файлов, а также имеет разрешения rx для всех каталогов, ведущих к этому файлу.

2. Как это сделать?

3. «Как это сделать?» — Я не уверен, в чем именно проблема. Если у вас есть базовые знания о том, как работают права доступа к файлам UNIX, это должно быть легко. Если у вас нет этих знаний, возможно, лучше их получить. В Интернете достаточно информации об этом, попробуйте, например kb.iu.edu/d/abdb

Ответ №1:

Проверьте владельца и маску разрешений файлов в /etc/falco/certs. Если владелец этих файлов не совпадает с тем пользователем, от имени которого вы запускаете свой код, вы получите ошибку разрешения. В большинстве систем Linux для файла .key необходимо установить режим 600, поэтому, если бы мне пришлось угадать, какой из этих файлов, вероятно, выдает вашу ошибку, это был бы клиент.ключевой файл. попробуйте запустить

chmod 640 для ключа и 644 для файлов сертификатов, затем убедитесь, что пользователь, от имени которого вы запускаете код, владеет этими файлами или, по крайней мере, входит в группу, к которой принадлежат файлы, и посмотрите, что произойдет.

Комментарии:

1. Мои файлы ключей можно открыть, на них есть какой-то символ креста

2. Итак, просто для подтверждения, когда вы перечисляете каталог, содержащий файлы ключей и сертификатов, разрешения для файлов выглядят примерно так? -rw-r-r- ca.crt -rw-r-r- client.crt -rw-r —- клиент.ключ

3. -rw-r—— 1 корневой корень 3247 20 октября 09:21 клиент.ключ -rw-r-r- 1 корневой корень 2017 20 октября 09:19 ca.crt -rw-r-r- 1 корневой корень 1874 20 октября 09:21 клиент.crt

4. Мои разрешения выглядят следующим образом…

5. Если вы не запускаете свою программу от имени root, то вы. получит сообщение об ошибке «отказано в разрешении» для файла .key. Вы используете его от имени пользователя root? Если нет, то вам нужно будет изменить файл ключа, который будет принадлежать пользователю, от имени которого вы запускаете программу.

Ответ №2:

Устранена путем запуска этих команд и изменения разрешений файлов:

 sudo chmod o r w client.key
sudo chmod o r w ca.key
sudo chmod o r w server.key