Skip to content

Custom Domain (ForgeMIA)

David Carayon edited this page May 30, 2024 · 1 revision

NB : Les exemples ci-dessous sont tirés du déploiement d'un projet nommé diaspara. N'oubliez pas d'adapter les commandes à votre projet.

Auteur : Eric Quinton

Ajouter un DNS à un site statique Gitlab et générer le certificat

GITLAB permet de générer des sites statiques à partir du composant Pages. Ce document décrit comment :

  • demander la création de l'entrée DNS
  • demander la création du certificat
  • intégrer le DNS et le certificat créés dans GITLAB

Demander la création de l'entrée DNS

La création de l'entrée DNS est à réaliser via ARIANE : https://ariane.inrae.fr/block?id=ariane_sc_cat_item&sys_id=3b374bf637d002006da398a543990e9c

Les informations à fournir sont :

  • sous-domaine concerné par la demande : l'adresse finale du site, par exemple : diaspara.bordeaux-aquitaine.inrae.fr ou monsite.eabx.inrae.fr ;
  • choix 2, nom DNS existant à lier à ce nouveau nom : pages.mia.inra.fr

Donnez quelques explications et les raisons de la création du DNS et mettez en copie le "responsable" du sous-domaine (pour eabx.inrae.fr, l'administrateur des données, par exemple).

Demander le certificat

La création du certificat nécessite quelques opération techniques, qui sont décrites ici à partir de Linux (ou utilisez Powershell avec Windows, ça peut fonctionner - non testé). Attention : une clé privée va être générée, celle-ci doit impérativement être protégée et ne pas être diffusée.

La documentation technique pour la création de la demande de certificat est ici. Voici l'ensemble des opérations à réaliser :

Créer la demande de certificat

Dans un espace protégé de votre ordinateur (chiffré), dans une console :

openssl req -new -newkey rsa:2048 -nodes -keyout diaspara.key -out diaspara.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:.
Locality Name (eg, city) []:.
Organization Name (eg, company) [Internet Widgits Pty Ltd]:INRAE
Organizational Unit Name (eg, section) []:.
Common Name (e.g. server FQDN or YOUR name) []:diaspara.bordeaux-aquitaine.inrae.fr
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Les points (.) permettent de conserver les champs vides pour les options par défaut. Indiquez l'adresse de votre site dans Common Name. Ne mettez pas de mot de passe (contrairement à ce qui est indiqué dans la doc Ariane).

Deux fichiers ont été générés :

  • diaspara.key, qui contient la clé privée
  • diaspara.csr, qui contient la clé publique associée à la demande de certificat. C'est ce fichier qu'il faut déposer dans le formulaire Ariane.

Vous pouvez consulter la demande de certificat avec cette commande :

openssl req -in diaspara.csr -noout -text
Certificate Request:
    Data:
        Version: 1 (0x0)
        Subject: C=FR, O=INRAE, CN=diaspara.bordeaux-aquitaine.inrae.fr
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:9d:33:d5:96:30:0b:f2:73:63:23:ca:db:1f:71:
(...)

Réaliser la demande de certificat

Ouvrez un nouveau formulaire Ariane Certificat de sécurité pour les serveurs, et indiquez ces informations :

  • Common Name : indiquez l'adresse du site web (sans https://), p. e. diaspara.bordeaux-aquitaine.inrae.fr
  • Type de plate-forme : indiquez Apache
  • joignez le fichier diaspara.csr généré préalablement

La demande de certificat est en général traitée en 2-3 jours (parfois immédiatement !). Vous recevrez un message vous indiquant que le certificat est prêt.

Une fois que le certificat aura été généré, vous récupérerez deux fichiers :

  • diaspara_bordeaux-aquitaine_inrae_fr_cert.cer, qui est le certificat proprement dit
  • diaspara_bordeaux-aquitaine_inrae_fr_interm.cer, qui contient l'ensemble des certificats intermédiaires permettant de valider le certificat généré.

Vous devez maintenant créer le certificat complet, avec la commande :

cat diaspara_bordeaux-aquitaine_inrae_fr_cert.cer diaspara_bordeaux-aquitaine_inrae_fr_interm.cer > diaspara_bordeaux-aquitaine_inrae_fr_full.cer

C'est donc le contenu de diaspara_bordeaux-aquitaine_inrae_fr_full.cer qu'il faudra intégrer dans Gitlab.

Intégrer le DNS et le certificat dans Gitlab

Dans votre projet Gitlab, positionnez-vous dans le menu Déploiement > Pages. Cliquez sur le bouton Nouveau domaine, puis :

  • indiquez le dns du site dans la zone Domaine par exemple diaspara.bordeaux-aquitaine.inrae.fr
  • ajoutez le certificat et la clé privée. Pour cela, dans un terminal :
    • affichez le contenu du certificat : cat diaspara_bordeaux-aquitaine_inrae_fr_full.cer, copiez-collez le contenu dans le champ correspondant
    • faites la même chose pour la clé privée : cat diaspara.key, et copier-coller.

Si une information est erronée, Gitlab vous affichera une page d'erreur.

Enregistrez ensuite les informations : votre domaine est alors créé.

Ne vous inquiétez pas si votre site semble inaccessible dans les minutes qui suivent : il faut un certain temps pour que les redirections soient actives.