GitLab-CI SonarQube avec un certificat auto-signé

sonarqube févr. 13, 2021

Lorsque le serveur SonarQube est déployé avec un certificat auto-signé, le sonar-scanner doit faire confiance à l'autorité de certification racine afin de pouvoir s'y connecter, sinon une erreur sera renvoyée. Pour se faire on utilisera l'option javax.net.ssl.trustStore qui va utiliser un magasin de confiance qu'on aura créé avec l'outil keytool de Java.

La solution serait de faire une image personnalisée avec le magasin de confiance intégré mais c'est pas une bonne pratique et c'est difficile à maintenir sur la durée. Donc voici une solution que j'ai mis en place, qui demande peu d'intégration et surtout qui est trÚs facile à maintenir.

Pour commencer, récupérez l'autorité de certification racine et encodez-la en base64 comme ceci :

cat root-ca.crt | base64

Le rĂ©sultat devra ĂȘtre intĂ©grĂ© dans une variable dans votre projet GitLab (et qui sera nativement disponible dans votre CI). Dans cet exemple j'ai nommĂ© la variable SONARQUBE_ROOTCA.

Ensuite dans le job qui va effectuer le scan, ajoutez une nouvelle étape de préparation (before_script) ainsi qu'une variable afin de définir la bonne option pour le sonar-scanner, voici un exemple :

sonar-scanner:
  stage: scan
  image: sonarsource/sonar-scanner-cli:4.5
  variables:
    - SONAR_SCANNER_OPTS: -Djavax.net.ssl.trustStore=/tmp/sonarqube-keystore.jks -Djavax.net.ssl.trustStorePassword=gitlabci
  before_script:
    - echo $SONAR_ROOTCA | base64 -d | keytool -import -noprompt -trustcacerts -alias sonarqube -storepass gitlabci -keystore /tmp/sonarqube-keystore.jks
    - mkdir .scannerwork && chown 1000:1000 .scannerwork
  script:
    - sonar-scanner

La seconde commande (mkdir/chown) prĂ©sente dans le before_script est pour limiter les problĂšmes de droits si jamais les fichiers de votre projet ont des droits root par exemple. L'image sonar-scanner tournant avec l'ID 1000, il lui sera impossible de crĂ©er son dossier, d'oĂč ce petit "fix".

Bien évidemment si vous utilisez sonar-scanner sans les options/arguments (sauf pour la variable SONAR_SCANNER_OPTS que vous venez de rajouter), il va prendre en compte la configuration que vous aurez spécifiez dans le fichier sonar-project.properties à la racine de votre projet (ou sinon il faut l'exécuter au bon endroit).

Une solution facile, rapide et simple Ă  maintenir pour vos projets !

Mots clés

DJΞRFY đŸŒ±

Linux Admin N3. Like #Apple, #Linux, #Kubernetes & #Docker, #TraefikAmbassador, #Hacking, #CTF, #Proxmark, #RFID ¯\_(ツ)_/¯

Super ! Vous vous ĂȘtes inscrit avec succĂšs.
Super ! Effectuez le paiement pour obtenir l'accĂšs complet.
Bon retour parmi nous ! Vous vous ĂȘtes connectĂ© avec succĂšs.
Parfait ! Votre compte est entiÚrement activé, vous avez désormais accÚs à tout le contenu.