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.