1

Redmine 版本:3.4.4.stable redmine_git_hosting 插件版本:1.2.3 gitolite v.3

HTTPS 仅访问存储库。我可以克隆 OK,但是在推送时出现以下错误:

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>`

提前感谢您的帮助!

4

2 回答 2

1

好的,我已经想通了(不感谢晦涩的错误消息)。我一定是唯一一个使用 https 的人!基本上我的虚拟主机配置缺少关于 SSL 的 3 个条目:

SSLEngine on SSLCertificateFile SSLCertificateKeyFile

于 2018-05-27T21:53:25.667 回答
0

当您通过 HTTP/HTTPS 与 Git 通信时,这是 SSL 终止的问题。

如果您在 NGINX 反向代理后面使用 Redmine,您应该添加一个额外的标头以保留有关原始请求方案的信息:

proxy_set_header   X-Forwarded-Proto $scheme;

对于执行 SSL 终止的 Apache,值应该是:

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

在您的情况下,您正在监听 *:443 并且没有为您的虚拟主机指定 SSL 证书设置。另一种选择是在 Redmine 设置下为 SmartHTTP 设置“仅 HTTP”。

于 2019-01-13T21:02:40.233 回答