Table des matières
Gérer des certificats pour serveurs Debian avec la CA de Microsoft
- Le sous-composant Service Web Inscription de certificats du rôle Service de certificats Active Directory doit avoir été installé.
Le Service Web Inscription de certificats (CES) permet à des machines et utilisateurs d’obtenir ou renouveler des certificats via HTTPS, même s’ils ne sont pas connectés au domaine (ex : ordinateurs en DMZ, machines distantes, BYOD…).
Création d'un compte dédié appelé svc_ces dans le domaine
- créer le compte svc_ces
Le configurer comme Identité du pool d’applications CES dans IIS.
- Redémarrer IIS en ligne de commande en tant qu'administrateur
iisreset
Configuration du service Web d'inscription des certificats
- Installation en Renouvellement seul :
- Authentification est Authentification du certificat client :
Principes de fonctionnement quand CES est configuré en renouvellement seulement :
- Le client envoie une requête de renouvellement (CSR)
- Il signe la requête avec la clé privée de son ancien certificat
- Le serveur CES valide que :
- le certificat à renouveler est légitime
- la signature correspond à la clé privée
- la CA accepte les renouvellements
La CA délivre un nouveau certificat basé sur l’ancien.
Aucune demande de nouveau certificat n'est acceptée.
Cela permet :
- d'exposer CES via Internet,
- de permettre uniquement la continuité, pas de nouvelles inscriptions
- pour des appareils non joints au domaine mais déjà équipés d’un certificat initial
- en réduisant l’exposition du service d’inscription
Disposer des autorisation d'enrollement sur les modèles de certificat
- lancer la console des modèles de certificats certtmpl.msc,
- cliquez-droit sur le modèle voulu et accédez à ses propriétés puis l'onglet Sécurité :
- donner l'autorisation Inscrire
Configurer un serveur Debian
Obtenir un certificat initial (bootstrap)
Générer une clé privée et un CSR
Pour les services comme Apache, Nginx, HAProxy ou Postfix, les clé privées sont enregistrées dasn le dossier /etc/ssl/private/ :
- répertoire défini pour contenir les clés privées sensibles
- avec les permissions suivantes : drwx–x–x root:root /etc/ssl/private
- En CLI
openssl genrsa -out /etc/ssl/private/server.key 2048 chmod 600 /etc/ssl/private/server.key chown root:root /etc/ssl/private/server.key
Gestion de la clé pour HAProxy
HAProxy préfère un fichier unique PEM contenant (dans l'ordre) :
- la clé privée,
- le certificat du serveur,
- la chaîne intermédiaire
Ce fichier PEM unique est placé dasn le dossier /etc/haproxy/certs/
Contenu du fichier PEM :
-----BEGIN PRIVATE KEY----- (key) -----END PRIVATE KEY----- -----BEGIN CERTIFICATE----- (cert) -----END CERTIFICATE----- (intermediate chain)
- Droits :
chmod 600 /etc/haproxy/certs/nomsite.pem chown root:root /etc/haproxy/certs/nomsite.pem
Gestion de la clé pour Apache2
Dossiers de la clé et du certificat
- clé privée : /etc/ssl/private/nomsite.key
- certificat : /etc/ssl/certs/nomsite.crt
Configuration du fichier pioru le site Web /etc/apache2/sites-enabled/site.conf :
SSLCertificateFile /etc/ssl/certs/nomsite.crt SSLCertificateKeyFile /etc/ssl/private/nomsite.key
Gestion du certificat pour Tomcat9
- créer le dossier /etc/tomcat9/ssl
- créer le fichier keystore unique contenant :
- la clé privée,
- le certificat signé,
- la chaîne intermédiaire ADCS
- Création du keystore PKCS12 depuis les fichiers PEM :
openssl pkcs12 -export \ -inkey server.key \ -in cert.pem \ -certfile chain.pem \ -out /etc/tomcat9/ssl/tomcat.p12
- Protection du certificat:
chmod 600 /etc/tomcat9/ssl/tomcat.p12 chown tomcat:tomcat /etc/tomcat9/ssl/tomcat.p12
- Configuration Tomcat dans /etc/tomcat9/server.xml, dans le bloc <Connector HTTPS> :
<Connector
protocol="org.apache.coyote.http11.Http11NioProtocol"
port="8443"*
maxThreads="200"
scheme="https"
secure="true"
SSLEnabled="true"
keystoreFile="/etc/tomcat9/ssl/tomcat.p12"
keystoreType="PKCS12"
keystorePass="LE_MOT_DE_PASSE_DU_P12"
clientAuth="false"
sslProtocol="TLS" />
- relancer le service Tomcat9
code> systemctl restart tomcat9 </code>
Génération du fichier de demande de signature pour le certificat
Crée un fichier san.cnf pour ajouter un SAN (recommandé) pur un serveur exemple appelé guac.lab.local avec ce contenu :
[ req ] default_bits = 2048 prompt = no default_md = sha256 req_extensions = req_ext distinguished_name = dn [ dn ] CN = guac.lab.local [ req_ext ] subjectAltName = @alt_names [ alt_names ] DNS.1 = guac.lab.local DNS.2 = guac
- générer le CSR
openssl req -new -key guac.lab.local.key \ -out guac.lab.local.csr \ -config san.cnf
* vérifiez le csr
openssl req -text -noout -verify -in guac.lab.local.csr
Certificate request self-signature verify OK
Certificate Request:
Data:
Version: 1 (0x0)
Subject: CN=guac.lab.local
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:b8:7f:55:b1:ca:09:23:12:fc:1b:d4:97:7a:76:
8e:50:37:24:ce:4a:e7:c8:3e:75:82:7b:78:9b:8b:
94:bb:6d:7e:31:6f:9c:25:77:4d:ab:55:c7:06:31:
09:dc:43:80:32:7f:5d:89:22:15:4c:ea:ea:ba:81:
79:6b:f0:16:53:3c:b1:38:db:04:33:bb:d2:04:24:
db:8f:d9:a6:a7:45:04:ea:ac:3d:eb:19:91:bb:ed:
d0:7b:8c:ba:6b:9b:a1:17:a2:cc:15:1b:c4:dc:fd:
b9:e7:dd:5c:47:d0:d9:53:93:70:4c:c8:1a:41:32:
84:e2:c5:63:3d:d2:93:96:81:0c:bf:d9:25:59:bd:
de:eb:99:56:e4:2d:06:ce:cb:33:92:98:a4:41:18:
5a:de:5d:8d:2a:b4:5b:c7:d2:d3:f1:e9:30:4c:ba:
93:fc:44:d5:f6:cf:7d:49:69:b7:b5:66:7d:99:4f:
1c:0a:cb:43:30:71:70:96:53:75:bc:18:43:ff:c8:
e6:94:00:2b:ad:d9:e5:a6:5b:cc:5a:c6:6b:1e:15:
69:35:a4:3c:30:80:e8:a7:c0:de:23:79:96:d5:ab:
0c:2d:48:ad:28:63:66:6c:dc:79:5f:e8:3d:b4:4e:
ab:6d:58:04:66:44:11:36:77:73:0a:50:7b:ed:59:
ad:01
Exponent: 65537 (0x10001)
Attributes:
Requested Extensions:
X509v3 Subject Alternative Name:
DNS:guac.lab.local, DNS:guac
Signature Algorithm: sha256WithRSAEncryption
Signature Value:
58:57:5e:29:66:bf:38:7d:b0:0f:c2:d5:cd:37:b9:51:ab:10:
7f:4c:ac:f1:15:1f:82:8b:d1:ca:e3:8f:da:03:a2:24:1c:ac:
78:f6:81:4c:8c:ac:0c:37:02:fe:ec:1f:f2:d0:51:d6:a3:f5:
da:01:d4:aa:c3:27:d9:d3:f1:5b:99:00:14:b3:e0:32:a4:a1:
2f:4c:2d:52:84:bc:da:fc:fd:c7:7c:ae:da:9c:b2:e3:78:24:
74:62:3d:50:af:7a:de:b5:92:91:c9:fe:f1:90:5c:8c:11:a1:
a7:ba:5b:ed:4f:59:05:7a:06:11:69:ca:d8:e4:1f:4e:ee:4b:
63:81:47:58:10:e1:0a:cf:cb:b9:0c:76:f5:2c:d1:05:a0:b2:
be:a5:da:dc:bc:9c:5e:9a:06:5b:0c:d8:13:a9:4a:fd:c3:c1:
c0:ff:8b:0e:33:2b:b8:0d:c8:73:f4:d3:3b:22:e6:4e:80:e3:
c5:f3:76:5b:a4:89:1c:f1:9b:6f:a9:88:ec:f7:f6:4e:58:2d:
42:6d:c6:06:b9:58:fa:98:db:17:9a:5c:ce:64:3a:fc:e5:be:
4f:08:58:ac:fe:3a:26:f1:ef:1d:09:9a:46:8c:2f:31:1b:68:
e5:96:08:ea:63:35:63:8c:6f:fb:4a:5d:28:2a:00:a5:c6:b8:
f8:b5:c4:ec
- ⇒ obtenir un fichier .cer.
- récupérer le certificat de l'autorité racine (Root CA), depuis Windows.
certutil -ca.cert rootCA.cer
- Copier le certificat .cer du serveur + celui de la CA dans le dossier conteneur LXC
Dans le conteneur LXC Convertir le certificat Microsoft en PEM
- convertir les fichiers .cer en .crt
openssl x509 -in guac.lab.local.cer -out guac.lab.local.crt openssl x509 -in rootCA.cer -out rootCA.crt
Construire le fichier .pem pour HAProxy
HAProxy doit avoir un seul fichier .pem contenant :
- la clé privée du serveur
- le certificat serveur
- la chaîne CA (intermédiaires + racine)
cat guac.lab.local.key guac.lab.local.crt rootCA.crt > /etc/haproxy/certs/guac.lab.local.pem
- Donner des permissions sécurisées :
chmod 600 /etc/haproxy/certs/guac.lab.local.pem
Recharger HAProxy
haproxy -c -f /etc/haproxy/haproxy.cfg systemctl reload haproxy
- Naviguer ensuite vers le site https://guac.lab.local








