У меня уже несколько месяцев есть установленный GitLab, и я решил, что пришло время добавить настоящий SSL-сертификат (не самоподписанный).
Следуя документации, я меняю следующую строку:
external_url 'http://<domain>.com'
к:
external_url 'https://<domain>.com'
И раскомментировал следующие строки:
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.crt"
nginx['ssl_certificate_key'] "/etc/gitlab/ssl/gitlab.key"
И чтобы убедиться, я еще раз проверил ключевые файлы:
root@host:/etc/gitlab# cat /etc/gitlab/ssl/gitlab.crt
-----BEGIN CERTIFICATE-----
...
root@host:/etc/gitlab# cat /etc/gitlab/ssl/gitlab.key
-----BEGIN PRIVATE KEY-----
...
Затем я запустил gitlab-ctl reconfigure
, и в конце получил сообщение об успешном выполнении. Однако, перейдя по URL-адресу GitLab, я получаю ERR_CONNECTION_REFUSED
. Когда я закомментировал все строки выше и запустил gitlab-ctl reconfigure
, все вернулось в норму на HTTP-порту 80.
Что может заставить nginx отклонять соединения, когда я передаю файлу конфигурации два сертификата и корректирую URL? Спасибо!
решение1
Похоже, что GitLab не слушает 443. Перенаправление на 80 отправляет вас на 443, где вы получаете Connection Refused. В конфигурации должна быть строка listen 443
(см.http://nginx.org/en/docs/http/configuring_https_servers.html), что позволяет ему принимать SSL-запросы.
Пример со страницы:
server {
listen 443 ssl;
server_name www.example.com;
ssl_certificate www.example.com.crt;
ssl_certificate_key www.example.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
...
}