У меня уже была установленная версия 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? Спасибо!
Похоже, GitLab не прослушивает 443. Редирект на 80 отправляет вас на 443, где вы получаете сообщение об отказе в соединении. Конфигурация должна иметь 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;
...
}