如何删除 SonarQube 到此站点的连接不安全

How to remove Connection to this Site is not Secure for SonarQube

我们的组织正在使用 SonarQube 应用程序,该应用程序托管在我们内部使用的 Azure 服务器中,无法通过互联网访问。为了增加安全性,我们借助内部证书颁发机构提供的 ssl 证书为应用程序实施 https。

但是在我实施 https 之后,我们得到 "Your Connection to this Site is not Secure"。 他们有什么方法可以确保连接安全吗?因为我们在内部使用该应用程序。

根据 SonarQube 文档,为了添加 security/Https,他们的建议是使用反向代理,而不是直接将 SSL 添加到 SonarQube 网站。这是官方文档和 link:

To run the SonarQube server over HTTPS, you must build a standard reverse proxy infrastructure. The reverse proxy must be configured to set the value "X_FORWARDED_PROTO: https" in each HTTP request header. Without this property, redirection initiated by the SonarQube server will fall back on HTTP.

使用 Apache 代理

我们假设您已经安装了带有模块 mod_proxy 的 Apache 2,SonarQube 是 运行 并且在 http://private_sonar_host:sonar_port/ 上可用,并且您想要为 www.public_sonar.com。 此时,编辑 www.public_sonar.com 虚拟主机的 HTTPd 配置文件。包括以下内容以通过 mod_proxy 在 http://www.public_sonar.com/:

公开 SonarQube
    ProxyRequests Off
ProxyPreserveHost On
<VirtualHost *:80>
  ServerName www.public_sonar.com
  ServerAdmin admin@somecompany.com
  ProxyPass / http://private_sonar_host:sonar_port/
  ProxyPassReverse / http://www.public_sonar.com/
  ErrorLog logs/somecompany/sonar/error.log
  CustomLog logs/somecompany/sonar/access.log common
</VirtualHost>

使用 Nginx

我们假设您已经安装了 Nginx,您正在为 www.somecompany.com 使用虚拟主机并且 SonarQube 是 运行 并且在 http://sonarhost:sonarport/ 上可用。 此时,编辑Nginx配置文件。包括以下内容以在 http://www.somecompany.com/:

公开 SonarQube
# the server directive is nginx's virtual host directive
server {
  # port to listen on. Can also be set to an IP:PORT
  listen 80;

  # sets the domain[s] that this vhost server requests for
  server_name www.somecompany.com;

  location / {
    proxy_pass http://sonarhost:sonarport;
  }
}

使用 IIS

SonarQube 建议使用反向代理来保护声纳安装。在 IIS 和 Url 重写模块的帮助下,设置起来轻而易举。

你需要什么:

  1. 在一台机器上启用 IIS(不必是 SonarQube 机器,但我假设您是在同一系统上执行此操作)
  2. IIS 的 Url Rewite 扩展 (https://www.iis.net/downloads/microsoft/url-rewrite)
  3. IIS 的基于应用程序的路由扩展 (https://www.iis.net/downloads/microsoft/application-request-routing)
  4. SSL 证书(可以是自签名的或真实的)

第一步是创建一个用作反向代理的 IIS 网站。

除非您需要进行 Kerberos 身份验证,否则您不需要在反向代理上配置任何形式的身份验证。如果您在那里配置了 Active Directory 集成,它应该转发来自 SonarQube 的挑战。

如果您使用的是 Kerberos 或 IIS 高级保护,请在此处查看有关正确配置的指导。 (https://blogs.technet.microsoft.com/latam/2015/06/24/kerberos-authentication-and-application-request-routing/)

配置绑定以使用 SSL 并设置正确的主机名和证书。我通过使用安装在我机器上的 IIS Express 开发证书来作弊:

接下来我们将打开URL重写设置来配置反向代理:

单击添加规则创建新规则:

然后从模板列表中选择 "Reverse Proxy":

输入目标服务器URL(可以是http://localhost:9000,甚至是远程服务器)并点击确定创建规则:

你回到了 URL 重写屏幕,我们需要添加一个额外的服务器变量,我们将把它连同请求一起发送到另一个服务器,以便告诉 SonarQube 它实际上落后了为其执行 SSL 卸载的反向代理:

点击"Add..."创建服务器变量:

添加服务器变量"X_FORWARDED_PROTO"以允许重写模块操作这个header:

您现在应该在变量列表中列出了该变量。单击 "Go back to Rules" 返回规则列表:

编辑您刚刚创建的 URL 重写规则:

展开规则定义的服务器变量部分:

添加您在上一步中允许的 "X_FORWARDED_PROTO" header 并为其指定值 "https":

应用更改:

现在您应该可以通过 SSL 访问 SonarQube。您可能希望将原始 SonarQube 实例配置为仅接受来自反向代理的流量或仅接受来自本地主机的通过 Windows 防火墙的流量。

复制自:

USING IIS

Server setup documentation