redmine с умным http и redmine_git_hosting не позволяет отправлять в хранилище

Версия Redmine: 3.4.4.stable версия плагина redmine_git_hosting: 1.2.3 gitolite v.3

HTTPS только доступ к репозиториям. Я могу клонировать ОК, но при нажатии я получаю следующую ошибку:

fatal: Authentication failed for '<repo URL>'

На стороне сервера в git_hosting.log я получаю следующую ошибку:

SmartHttp : your are trying to push data without SSL!, exiting !

Я запутался в том, какова реальная причина проблемы

Файл конфигурации Redmine моего виртуального хоста:

`<VirtualHost *:443>
    ServerName .....
    ServerAlias ......
    ServerAdmin ....
    DocumentRoot  /opt/redmine/public
    PassengerRuby ......
    PassengerFriendlyErrorPages on

    ErrorLog /var/log/httpd/redmine-error_log
    CustomLog /var/log/httpd/redmine-access_log common

    <Directory "/opt/redmine">
      Require all granted
      # MultiViews must be turned off
      Options -MultiViews
    </Directory>

    PerlLoadModule Apache::Authn::Redmine

    <Location />
     Order allow,deny
     Allow from all

    PerlAccessHandler Apache::Authn::Redmine::access_handler
    PerlAuthenHandler Apache::Authn::Redmine::authen_handler

    RedmineDSN "DBI:Pg:database=redmine;host=127.0.0.1"
    RedmineDbUser "redmine"
    RedmineDbPass "xxxxx"

    RedmineGitSmartHttp yes
  </Location>
</VirtualHost>`

Заранее спасибо за любую помощь!

1 ответ

Решение

Хорошо, я понял это (спасибо за неясные сообщения об ошибках). Я должен быть единственным, кто использует https! В основном в моей конфигурации виртуального хоста отсутствуют 3 записи о SSL:

SSLEngine on SSLCertificateFile SSLCertificateKeyFile

Это проблема с завершением SSL, когда вы общаетесь с Git через HTTP/HTTPS.

Если вы используете Redmine за обратным прокси-сервером NGINX, вы должны добавить дополнительный заголовок, чтобы сохранить информацию об исходной схеме запроса:

proxy_set_header   X-Forwarded-Proto $scheme;

Для Apache, выполняющего завершение SSL, значения должны быть:

RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
RequestHeader set "X-Forwarded-SSL" expr=%{HTTPS}

В вашем случае вы прослушиваете *:443 и не указали настройки SSL-сертификата для вашего виртуального хоста. Другой вариант - установить "Только HTTP" для SmartHTTP в настройках Redmine.

Другие вопросы по тегам