Post

🌐Domaine home.arpa + AutoritĂ© de certification (AC)

🌐Domaine home.arpa + AutoritĂ© de certification (AC)

“.home.arpa” est un nom de domaine Ă  usage spĂ©cial qui est dĂ©signĂ© pour une utilisation non unique dans les rĂ©seaux domestiques rĂ©sidentiels (c’est-Ă -dire non autorisĂ© sur l’Internet public). Il a toujours besoin d’un serveur DNS privĂ© pour la rĂ©solution des noms d’hĂŽtes.

Informations

.local est utilisĂ© par mDNS (multicast DNS), un protocole conçu par Apple. Utiliser exemple.local ne fonctionne que sur les systĂšmes (et pour les destinations) qui ont un dĂ©mon mDNS en cours d’exĂ©cution (par exemple MacOSX, distributions Linux actuelles comme Ubuntu/Fedora).

  • “.home.arpa” est un nom de domaine Ă  usage spĂ©cial qui est dĂ©signĂ© pour une utilisation non unique dans les rĂ©seaux domestiques rĂ©sidentiels (c’est-Ă -dire non autorisĂ© sur l’Internet public). Il a toujours besoin d’un serveur DNS privĂ© pour la rĂ©solution des noms d’hĂŽtes.
  • “.local” est un nom de domaine Ă  usage spĂ©cial qui peut fonctionner sans serveur DNS local (c’est-Ă -dire privĂ©).

Le home.arpa spTLD n’est pas un nom de domaine unique Ă  l’échelle mondiale, et vous ne pouvez pas le rĂ©soudre sur Internet. Il est destinĂ© uniquement Ă  ĂȘtre utilisĂ© Ă  l’intĂ©rieur d’un petit rĂ©seau, comme votre rĂ©seau domestique. Les routeurs et les serveurs du systĂšme de noms de domaine (DNS) savent, [en thĂ©orie], ne pas transmettre les demandes ARPA qu’ils ne comprennent pas sur Internet public.

Domaine home.arpa

Autorité de Certification (AC)

En cryptographie, une AutoritĂ© de Certification (AC ou CA pour Certificate Authority en anglais) est un tiers de confiance permettant d’authentifier l’identitĂ© des correspondants. Une autoritĂ© de certification dĂ©livre des certificats dĂ©crivant des identitĂ©s numĂ©riques et met Ă  disposition les moyens de vĂ©rifier la validitĂ© des certificats qu’elle a fournis.
Les services des autorités de certification sont principalement utilisés dans le cadre de la sécurisation des communications numériques via le protocole Transport Layer Security (TLS) utilisé par exemple pour sécuriser les communications web (HTTPS) ou email (SMTP, POP3, IMAP
 sur TLS), ainsi que pour la sécurisation des documents numériques (par exemple au moyen de signatures électroniques avancées telles que PAdES pour des documents PDF, ou via le protocole S/MIME pour les e-mails).

[Citation wikipédia Autorité de certification]

Utilisation de l’application OpenSSL qui est installĂ©e par dĂ©faut sur toutes les distributions linux

Créer une Autorité de Certification nommée homearpaCA
Créer le dossier

1
2
mkdir $HOME/homearpaCA
cd $HOME/homearpaCA

Procédure

  • GĂ©nĂ©rer une autoritĂ© de certification (AC) pour usage privĂ©
  • GĂ©nĂ©rer un certificat SSL pour un domaine
  • ParamĂ©trer les services concernĂ©s : Ngnix
  • Quelques abrĂ©viations:
    • CA :
      • Certificate Authority
      • AutoritĂ© de Certification
    • KEY :
      • Private key
      • ClĂ© privĂ©e
    • CSR :
      • Certificate Signing Request
      • Demande de Signature de Certificat
    • CN :
      • Common Name
      • Nom Commun (nom pleinement qualifiĂ© dans le cas du certificat client)
    • CRT :
      • Certificat

On va générer des certificats pour un domaine interne home.arpa.
Il sera nĂ©cessaire, pour que le certificat soit reconnu officiellement, d’ajouter le CA dans le magasin de certificat du systĂšme.

Clé homearpaCA.key

On commence par le plus important, la clé privé de votre autorité de certification. Elle sera à préserver de tout (vol, perte, suppression, etc ).

C’est elle qui vous permettra de signer de nouveaux certificats.

1
openssl genrsa -out homearpaCA.key

Certificats racines homearpaCA

homearpaCA.pem

Maintenant qu’on a la clĂ©, on va gĂ©nĂ©rer le certificat racine homearpaCA.pem :

1
openssl req -x509 -new -nodes -key homearpaCA.key -sha256 -days 7300 -subj "/C=FR/ST=PAYS-DE-LOIRE/L=BOPRO/O=HOMEARPA/OU=HOMEARPA/CN= HOMEARPA CA" -out homearpaCA.pem

Note : L’option -subj permet d’éviter de rĂ©pondre Ă  un certain nombre de questions. On gĂ©nĂšre le certificat pour une durĂ©e de 20 ans (7300).

homearpaCA.crt

GĂ©nĂ©rer un certificat au format crt en plus du pem pour l”autoritĂ© de certification CA

1
openssl x509 -in homearpaCA.pem -inform PEM -out homearpaCA.crt

Nous avons maintenant 3 fichiers :

  • homearpaCA.key => La clĂ© privĂ©e
  • homearpaCA.pem => Certificat racine au format pem
  • homearpaCA.crt => Certificat racine au format crt

Copie homearpaCA crt et key

Copier les fichiers homearpaCA.key et homearpaCA.crt dans /etc/ssl/private/

1
2
sudo cp homearpaCA.key /etc/ssl/private/
sudo cp homearpaCA.crt /etc/ssl/private/

Déployer Autorité Certification

Les certificats d’AC nous aident à identifier et à faire confiance aux autres parties. Lorsqu’un tiers envoie un certificat, le client qui le reçoit valide le certificat.
Tout d’abord, le client rĂ©cupĂšre la clĂ© publique de cette autoritĂ© de certification particuliĂšre qui a signĂ© le certificat, Ă  partir de son magasin de confiance. Il dĂ©crypte ensuite la signature prĂ©sente dans le certificat du tiers pour obtenir une valeur de hachage.
Ensuite, le client calcule indĂ©pendamment le hachage Ă  l’aide des donnĂ©es du certificat client et le compare avec la valeur de hachage dĂ©chiffrĂ©e. Si elle correspond, le tiers est digne de confiance. En gĂ©nĂ©ral, la vĂ©rification du certificat se fait de cette maniĂšre.

Pour que vos certificats *.home.arpa soient reconnus, il faut installer le certificat racine de votre CA (homearpaCA.crt ou Ă©quivalent, pas la clĂ© .key) dans le magasin d’AC de confiance du systĂšme ou du navigateur.

Red Hat, CentOS, Alma Linux, Rocky

Red Hat, CentOS, Alma Linux, Rocky: https://www.linuxtricks.fr/wiki/red-hat-centos-alma-linux-rocky-ajouter-une-autorite-de-certification-au-magasin-systeme

Debian distributions

Copier le certificat

1
2
sudo mkdir -p /usr/local/share/ca-certificates
sudo cp homearpaCA.crt /usr/local/share/ca-certificates/

Mettre Ă  jour le magasin de certificats :

1
sudo update-ca-certificates

Un message indique qu’un certificat a Ă©tĂ© ajoutĂ© :

1
2
3
4
5
Updating certificates in /etc/ssl/certs...
rehash: warning: skipping ca-certificates.crt, it does not contain exactly one certificate or CRL
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done

VĂ©rifier que le certificat a bien Ă©tĂ© ajoutĂ© en vĂ©rifiant qu’un .pem a Ă©tĂ© créé dans /etc/ssl/certs :

1
ls /etc/ssl/certs/ | grep -i homearpa

Archlinux, Manjaro, EndeavourOS

Pour des clients ArchLinux ça se fait alors avec la commande trust

1
2
# en mode su
trust anchor --store homearpaCA.crt

On peut vĂ©rifier qu’il est bien dans la liste Ă  partir de son nom: trust list | rg -C 2 "HOMEARPA"

1
2
3
4
5
pkcs11:id=%9E%E4%56%A9%A1%3D%7D%54%3D%76%65%14%DD%E1%40%6D%D1%36%85%F7;type=cert
    type: certificate
    label:  HOMEARPA CA
    trust: anchor
    category: authority

On en profite pour bien vĂ©rifier que le certificat est un certificat d’autoritĂ© (catĂ©gorie authority) et bien sĂ»r que ce soit bien un certificat (type certificate).

Il est alors installé dans le dossier /etc/ca-certificates/trust-source/.

1
2
3
4
5
/etc/ca-certificates/trust-source/
├── anchors
├── blocklist
├── _HOMEARPA_CA.p11-kit
└── README

Pour supprimer le certificat des certificats de confiance, on utilise le fichier généré dans ce dossier.

1
2
# en mode su
trust anchor --remove /etc/ca-certificates/trust-source/_HOMEARPA_CA.p11-kit

Alpine Linux

Sur Alpine et d’autres distributions Linux telles que Debian, un utilitaire de paquets appelĂ© ca-certificatesca-certificats comprend une collection de certificats de confiance des autoritĂ©s de certification. Ces certificats vĂ©rifient l’identitĂ© des sites Web auxquels nous nous connectons sur les connexions SSL (TLS).

Bien sĂ»r, nous devons mettre Ă  jour cette collection avec n’importe quel certificat nouvellement créé. La collection de certificats de confiance rĂ©side dans le fichier /etc/ssl/certs/ca-certificates.crt. Nous pouvons mettre Ă  jour ce magasin de confiance en ajoutant des certificats individuels situĂ©s dans le rĂ©pertoire /usr/local/share/ca-certificates/.

Mettre Ă  jour les paquets et installer ca:

1
sudo apk update && sudo apk add ca-certificates

En outre, il est recommandé de nettoyer le cache apk avant de mettre à jour la collection de certificats:

1
sudo rm -rf /var/cache/apk/*

Ensuite, nous copions server.crt aux /usr/local/share/ca-certificates/ :

1
sudo cp docker-data/homearpaCA.crt /usr/local/share/ca-certificates/

Enfin, nous pouvons ajouter le certificat Ă  la collection de ca-certificats en utilisant la commande update-ca-certificates:

1
sudo update-ca-certificates

Vérifier les mises à jour au bas du fichier.

1
tail -25 /etc/ssl/certs/ca-certificates.crt

Firefox (OBLIGATOIRE)

Firefox utilise UNIQUEMENT son propre magasin (base cert9.db).

Importer uniquement dans Firefox

  1. about:preferences#connectionSecurity dans la barre d’adresse.
  2. Descendez à la section « Certificats ».
  3. Cliquez sur « Gérez les certificats ».
  4. Onglet « Autorités ».
  5. Cliquez sur « Importer » et choisissez homearpaCA.crt.
  6. Cochez au minimum « Identifier des sites web » puis validez.

ParamĂštres –> Vie privĂ©e et sĂ©curitĂ©

Certificat wildcard *.home.arpa

Un certificat SSL Wildcard permet de sécuriser un domaine principal et tous ses sous-domaines avec un seul certificat, offrant ainsi flexibilité et simplicité de gestion

OpenSSL pour générer un certificat wildcard *.home.arpa signé par la CA (Autorité de Certification) locale dont la clé privée est homearpaCA.key (et le certificat homearpaCA.crt).

  • ClĂ© de la CA : /etc/ssl/private/homearpaCA.key
  • Certificat de la CA : /etc/ssl/private/homearpaCA.crt
  • Dossier pour le wildcard : /etc/ssl/home.arpa/

Clé privée pour le wildcard

En mode su

1
2
3
4
5
6
mkdir -p /etc/ssl/home.arpa
cd /etc/ssl/home.arpa

# clé privée RSA 2048 bits pour le certificat wildcard
openssl genrsa -out wildcard.home.arpa.key 2048
chmod 600 wildcard.home.arpa.key

Créer fichier pour les extensions (SAN)

Pour que les navigateurs modernes acceptent le wildcard, il faut un champ Subject Alternative Name (SAN).

Créer /etc/ssl/home.arpa/wildcard.home.arpa.ext :

1
2
3
4
5
6
7
8
9
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1 = *.home.arpa
DNS.2 = home.arpa

Générer CSR pour *.home.arpa

1
2
3
4
5
cd /etc/ssl/home.arpa

openssl req -new -key wildcard.home.arpa.key \
  -out wildcard.home.arpa.csr \
  -subj "/C=FR/ST=Pays-de-la-Loire/L=Beaupreau/O=HomeLab/CN=*.home.arpa"
  • Le CN est *.home.arpa.
  • Les SAN sont ajoutĂ©s au moment de la signature (prochaine Ă©tape) via le fichier .ext

Signer CSR avec AC homearpaCA

Autorité de Certification:

  • ClĂ© CA : /etc/ssl/private/homearpaCA.key
  • Certificat CA : /etc/ssl/private/homearpaCA.crt
1
2
3
4
5
6
7
8
9
10
11
12
13
cd /etc/ssl/home.arpa

openssl x509 -req \
  -in wildcard.home.arpa.csr \
  -CA /etc/ssl/private/homearpaCA.crt \
  -CAkey /etc/ssl/private/homearpaCA.key \
  -CAcreateserial \
  -out wildcard.home.arpa.crt \
  -days 3650 \
  -sha256 \
  -extfile wildcard.home.arpa.ext
  # Si passphrase homearpaCA.key
  #Enter pass phrase for /etc/ssl/private/homearpaCA.key:

Au final:

  • wildcard.home.arpa.crt : certificat serveur wildcard signĂ© par votre CA
  • wildcard.home.arpa.key : clĂ© privĂ©e correspondante

Information sur le role du fichier 'wildcard.home.arpa.ext'
Le fichier wildcard.home.arpa.ext n’est jamais vu ni interprĂ©tĂ© par les navigateurs : il ne sert qu’au moment oĂč vous signez le certificat avec OpenSSL pour y injecter les extensions (SAN, usages, etc.)
RÎle réel du .ext, lorsque vous lancez la commande de signature, vous faites quelque chose comme :

1
2
3
4
5
6
openssl x509 -req \
  -in wildcard.home.arpa.csr \
  -CA homearpaCA.crt \
  -CAkey homearpaCA.key \
  -out wildcard.home.arpa.crt \
  -extfile wildcard.home.arpa.ext
  • OpenSSL lit wildcard.home.arpa.ext et copie son contenu dans le certificat final wildcard.home.arpa.crt (dans les champs « X509v3 extensions »)
  • Le navigateur, lui, ne connaĂźt que le certificat prĂ©sentĂ© par le serveur (le .crt) et lit ses extensions dĂ©jĂ  intĂ©grĂ©es

Donc :

  • Le .ext est un fichier intermĂ©diaire de gĂ©nĂ©ration, purement cĂŽtĂ© serveur/admin.
  • Les navigateurs ne le tĂ©lĂ©chargent pas, ne le parsĂšment pas, ne savent mĂȘme pas qu’il existe.

Ce que voient réellement les navigateurs

Les navigateurs valident, dans le certificat fini (wildcard.home.arpa.crt) :

  • Le sujet / CN : ici *.home.arpa.
  • Le champ Subject Alternative Name (SAN) : par exemple DNS:*.home.arpa et DNS:home.arpa.
  • Les extensions comme Key Usage, Extended Key Usage, Basic Constraints, etc.

Tout cela vient du contenu du .ext, mais une fois « compilĂ© » dans le certificat, c’est totalement opaque pour le client que ça provenait d’un fichier sĂ©parĂ©.

En résumé :

  • Le navigateur ne tient jamais compte de /etc/ssl/home.arpa/wildcard.home.arpa.ext directement.
  • Il tient compte uniquement du certificat TLS que Nginx lui prĂ©sente.
  • Le .ext n’est qu’un moyen pratique de contrĂŽler ce qui sera Ă©crit dans ce certificat (SAN, usages, etc.).

Vérifier certificat wildcard.home.arpa.crt

1
openssl x509 -in wildcard.home.arpa.crt -noout -text | less

Analyse

1
2
3
4
5
6
7
8
9
[...]
        Subject: C=FR, ST=Pays-de-la-Loire, L=Beaupreau, O=HomeLab, CN=*.home.arpa
        Subject Public Key Info:
            X509v3 Subject Alternative Name: 
            X509v3 Subject Key Identifier: 
[...]
            X509v3 Subject Alternative Name: 
                DNS:*.home.arpa, DNS:home.arpa
[...]

Vérifiez bien :

  • Le Subject avec CN = *.home.arpa
  • La section X509v3 Subject Alternative Name contenant DNS:*.home.arpa et DNS:home.arpa

Vous pouvez ensuite les utiliser sur votre reverse proxy / services, en vous assurant que le certificat homearpaCA.crt est installé comme autorité de confiance sur tous les clients.

Cet article est sous licence CC BY 4.0 par l'auteur.