Как исправить ошибку «SSL certificate problem: self signed certificate» при использовании команды git config?

Как можно исправить ошибку с самоподписанным SSL-сертификатом после попытки настройки SSL на сервере GitLab? Выполнил следующие шаги:

1. Создал SSL-ключ и сертификат с помощью OpenSSL:
```
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout gitlab.key -out gitlab.crt
```

2. Разместил полученные файлы в папке `/etc/gitlab/ssl`.

3. Изменил конфигурационный файл `/etc/gitlab/gitlab.rb`, добавив строки:
```
#nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.crt"
#nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.key"
```

4. Применил конфигурацию, запустив `gitlab-ctl reconfigure`.

5. На клиенте скопировал `.crt` файл в `/etc/ssl/certs` и настроил git для работы с SSL, используя команду:
```
git config --global http.sslCAInfo /etc/ssl/certs/gitlab.crt
```

6. При попытке клонирования репозитория возникает следующая ошибка:
```
SSL certificate problem: self signed certificate
```

Также отметил, что рассматривал возможность добавления необходимых настроек SSL без комментариев в `/etc/gitlab/gitlab.rb`. Как можно решить эту проблему?
  • 4 декабря 2023 г. 9:30
Ответы на вопрос 2
Проблема, с которой вы столкнулись, возникает потому, что самоподписанный сертификат, который вы создали и использовали для вашего GitLab сервера, не является доверенным в системе клиента (не подписан удостоверяющим центром, которому доверяет система). 

Чтобы решить эту проблему, у вас есть несколько опций:

### 1. Добавление самоподписанного сертификата в список доверенных на клиенте

На Linux это можно сделать так (вы уже попытались это сделать, но убедитесь, что все шаги выполнены корректно и сертификат действительно добавлен в системное хранилище):

```sh
sudo cp gitlab.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
```

Убедитесь также, что путь до сертификата в настройках git указан верно:

```sh
git config --global http.sslCAInfo /etc/ssl/certs/gitlab.crt
```

### 2. Отключение проверки SSL для конкретного GitLab хоста

Если вам нужно работать только с одним конкретным GitLab сервером и вы полностью доверяете ему, можно отключить проверку SSL:

```sh
git config --global http."https://your.gitlab.server".sslVerify false
```

Замените `your.gitlab.server` на доменное имя вашего GitLab сервера. Но помните, что это снижает безопасность соединения.

### 3. Отключение проверки SSL глобально (не рекомендуется)

Для временного решения проблемы, и если иные варианты не подходят, можно отключить проверку SSL на всех Git операциях:

```sh
git config --global http.sslVerify false
```

Это не рекомендуется, так как это создает потенциальный вектор атаки для man-in-the-middle (MitM) атак.

### 4. Использовать Let's Encrypt для получения бесплатного SSL сертификата

Если у вашего сервера есть доменное имя и доступ к интернету, можно использовать сертификаты, выданные Let's Encrypt, чтобы избежать проблем с самоподписанными сертификатами.

После установки и настройки сертификата Let's Encrypt проблемы с подписью должны быть решены, так как он будет автоматически признан большинством устройств и приложений.

Наконец, убедитесь, что вы убрали комментарии (`#`) перед настройками сертификата в файле `/etc/gitlab/gitlab.rb`, чтобы они были активированы:

```ruby
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.key"
```

И после этого снова запустите `gitlab-ctl reconfigure`.
Чтобы обновить список доверенных сертификатов в вашей системе, используйте команду `sudo update-ca-certificates -f`. Эта команда принудительно обновляет сертификаты, игнорируя ранее добавленные. 
Похожие вопросы