Blog

Configure SSL for SonarQube on Windows

12 Apr, 2016
Xebia Background Header Wave
The documentation for SonarQube explains how to configure SSL when you’re running on Linux and how to use the native Tomcat functionality for a simple test environment, yet they recommend not to use this functionality in any production like setting.

Instead SonarQube recommends the use of a Reverse Proxy to secure you sonar installation. With the help of IIS and the Url Rewrite module, that’s a piece of cake to setup.

What you’ll need:

After installing and enabling these features, I had to do an IIS Reset and re-open the IIS Manager for all features to start working.
Next we’ll go through the steps to configure the reverse proxy.
First step is to create a IIS website which will act as the reverse proxy.

addwebsite

Unless you’re required to do Kerberos authentication, you don’t need to configure any form of authentication on your Reverse Proxy. It should forward the challenge from SonarQube if you’ve configured Active Directory integration there. 
Authentication
Configure the binding to use SSL and setup the correct hostnames and the certificate. I’m cheating a little by using the IIS Express Development Certificate installed on my machine:
binding
Next we’ll open the URL Rewrite settings to configure reverse proxy:

open-url-rewrite

Click Add Rule to create a new rule

add rule

And pick “Reverse Proxy” from the list of templates:

selectreverseproxy

Enter the destination server URL (can be https://xebia.com/blog:9000, or even a remote server) and click OK to create the rule:

Untitled

You’re back in the URL Rewrite screen where we’ll need to add an extra server variable which we’ll send along with the request to the other server in order to tell SonarQube it’s actually behind a Reverse Proxy that’s doing the SSL offloading for it:

open server variables

Click “Add…” to create the server variable:

add server variable

Add the server variable “X_FORWARDED_PROTO” to allow the Rewrite Module to manipulate this header:

add server variable

You should now have the variable listed in the Variable list. Click “Go back to Rules” to move back to the rules list:

back to rules

Edit the URL Rewrite rule you’ve just created:

edit rule

Expand the Server variables section of the rule definition:

edit server variable

Add the “X_FORWARDED_PROTO” header you’ve allowed in the previous step and give it the value “https“:

add header

Apply the changes:

apply changes

And now you should be able to access SonarQube over SSL. You may want to configure the original SonarQube instance to only accept traffic from your reverse proxy or only accept traffic from localhost through the Windows Firewall.
Jesse Houwing
Jesse is a passionate trainer and coach, helping teams improve their productivity and quality all while trying to keep work fun. He is a Professional Scrum Trainer (PST) through Scrum.org, Microsoft Certified Trainer and GitHub Accredited Trainer. Jesse regularly blogs and you'll find him on StackOverflow, he has received the Microsoft Community Contributor Award three years in a row and has been awarded the Microsoft Most Valuable Professional award since 2015. He loves espresso and dark chocolate, travels a lot and takes photos everywhere he goes.
Questions?

Get in touch with us to learn more about the subject and related solutions

Explore related posts