There are two ways to run SonarQube over HTTPS:
- By building a standard reverse proxy infrastructure
- By configuring the SonarQube server that natively supports SSL (since version 4.0)
Building 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.
Configuring the SonarQube Server that Natively Supports SSL
The configuration is pretty standard. The information to access the certificate must be provided in the configuration of the web server. JVMs used by the analyzers (SonarQube Runner, Maven, etc.) must know of the certificate.
You'll find below a complete example: from the generation of an SSL Certificate to the configuration of the SonarQube web server and analyzers.
Generating the SSL Certificate
Run the following command:
It adds the certificate to USER_HOME/.keystore
Configuring the SonarQube Web Server
Open the SONARQUBE_HOME/conf/sonar.properties file and update it as below:
Restart the web server. You should now only be able to access the SonarQube server over HTTPS on port 8999.
Configuring the Analyzers
From your browser, export the certificate into a file. Example with Chrome:
Click on Certificate information link and copy the certificate through the Details tab.
Add the certificate to the keystore of the JVM (that will be used by your analyzer) by running the following command:
Update the settings of your analyzer (SONARQUBE_HOME/conf/sonar-runner.properties for SonarQube Runner or settings.xml for Maven...):
Analyze one of your projects to check that it works fine.