Configurer Apache pour l'authentification mutuelle SSL
From Knowledge
Ce tutoriel explique comment configurer Apache pour l'authentification mutuelle SSL dans le but d'exiger du visiteur la présentation d'un certificat/d'une SmartCard.
Contents
Prérequis
- Installation fonctionnelle XCA
- Base de données XCA fonctionnelle (veillez à stocker la base de données sur un emplacement local ou au moins sur un emplacement réseau mappé sur un lecteur)
- Certificat et clef pour le serveur
- Certificat de la CA (il peut y en avoir plusieurs) (voir tutoriel Créer une CA)
Solution retenue
Le présent tutoriel part du principe que deux autorités de certification (ci-après appelées CA) ont été crées:
- Une autorité de certification racine (ci-après appelée root CA)
- Une ou plusieurs autorités de certification intermédiaires (ci-après appelées intermediate CA)
Etapes
La configuration du serveur Apache pour l'authentification mutuelle SSL implique les étapes suivantes:
- Exportation des certificats et des clefs depuis XCA
- Configuration du serveur Apache
Chacune des deux étapes est documentée plus en détail ci-dessous.
Exportation des certificats et des clefs
Certificats des autorités de certification
- Ouvrir le programme XCA
- Sous l'onglet Certificats, cliquer (avec le bouton droit) sur le certificat de l'autorité de certification racine (p.ex. ... Root CA), pointer sur Exporter et cliquer sur Presse-papier
- Au moyen du bloc-notes ou d'un autre éditeur, préparer un fichier texte nommé cacerts.pem. Coller ensuite le certificat copié à l'étape précédente dans l'éditeur.
- Compléter les informations collées dans l'éditeur avec des informations sur le certificat en question (p.ex. Issuer, Subject, Fingerprint). Voici à quoi cela pourrait ressembler:
Issuer: /C=CH/L=Neuchatel/O=OFS/OU=SR/CN=Premium Root CA
Subject: /C=CH/L=Neuchatel/O=OFS/OU=SR/CN=Premium Root CA
Fingerprint: ab3c4e425857...d31fc3ca0db0a
-----BEGIN CERTIFICATE-----
FgYDVQQDEw9QcmVtaXVtIFJvb3QgQ0EwHhcNMTQwOTA1MDc0NTAwWhcNMjQwOTA1
...
uPhsmgqC/IVfF8h6LnTr+rzryfs02r+gSUweXOqdd/RsW3plQT72LkDuVYo8kJzY
HGh+
-----END CERTIFICATE-----
- Sous l'onglet Certificats, cliquer (avec le bouton droit) sur le certificat de l'autorité de certification intermédiaire (p.ex. ... Server CEA), pointer sur Exporter et cliquer sur Presse-papier
- Coller le certificat copié à l'étape précédente à la suite du fichier cacerts.pem.
- Compléter les informations collées dans l'éditeur avec des informations sur le certificat en question (p.ex. Issuer, Subject, Fingerprint). Voici à quoi cela pourrait ressembler:
Issuer: /C=CH/L=Neuchatel/O=OFS/OU=SR/CN=Premium Root CA
Subject: /C=CH/L=Neuchatel/O=OFS/OU=SR/CN=Premium Server CA
Fingerprint: 7260e7537dc4...36dc9e79369c
-----BEGIN CERTIFICATE-----
QTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANcDoeK43xZU9DbDziQD
...
zpG4Fwn+d2uBae6UeLJDxf5wgmmEmMsvVBIO/dGs6GCqGknbxoHJM7XMXFU4MLsL
qzBFt40=
-----END CERTIFICATE-----
- Le fichier cacerts.pem devrait ressembler à ceci (l'ordre des certificats dans le fichier est important. D'abord l'autorité de certification racine, puis l'/les autorité(s) de certification intermédiaire(s))
Issuer: /C=CH/L=Neuchatel/O=OFS/OU=SR/CN=Premium Root CA
Subject: /C=CH/L=Neuchatel/O=OFS/OU=SR/CN=Premium Root CA
Fingerprint: ab3c4e425857...d31fc3ca0db0a
-----BEGIN CERTIFICATE-----
FgYDVQQDEw9QcmVtaXVtIFJvb3QgQ0EwHhcNMTQwOTA1MDc0NTAwWhcNMjQwOTA1
...
uPhsmgqC/IVfF8h6LnTr+rzryfs02r+gSUweXOqdd/RsW3plQT72LkDuVYo8kJzY
HGh+
-----END CERTIFICATE-----
Issuer: /C=CH/L=Neuchatel/O=OFS/OU=SR/CN=Premium Root CA
Subject: /C=CH/L=Neuchatel/O=OFS/OU=SR/CN=Premium Server CA
Fingerprint: 7260e7537dc4...36dc9e79369c
-----BEGIN CERTIFICATE-----
QTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANcDoeK43xZU9DbDziQD
...
zpG4Fwn+d2uBae6UeLJDxf5wgmmEmMsvVBIO/dGs6GCqGknbxoHJM7XMXFU4MLsL
qzBFt40=
-----END CERTIFICATE-----
- Sauvegarder et fermer le fichier cacerts.pem
Certificat du serveur
- Ouvrir le programme XCA
- Sous l'onglet Certificats, cliquer (avec le bouton droit) sur le certificat du serveur concerné, pointer sur Exporter et cliquer sur Presse-papier
- Au moyen du bloc-notes ou d'un autre éditeur, préparer un fichier texte nommé servercert.pem. Coller ensuite le certificat copié à l'étape précédente dans l'éditeur.
- Compléter les informations collées dans l'éditeur avec des informations sur le certificat en question (p.ex. Issuer, Subject, Fingerprint). Le fichier servercert.pem devrait ressembler à ceci:
Issuer: /C=CH/L=Neuchatel/O=OFS/OU=SR/CN=Premium Server CA
Subject: /C=CH/L=Neuchatel/O=OFS/OU=SR/CN=xyz.abc.def.ch
Fingerprint: 912a8224cefc...5757981e8a47
-----BEGIN CERTIFICATE-----
MIIDcTCfAlmgAwIBAgIBAzANBgkqhkgG9w0BAQsFADBYMQswCQYDVQQGEwJDSDES
...
G1edo/yGqajmt872j3Ex/5qVEGgDCQgdE0Bs/DGkqJVu8C1cUHEobqcJ4fyqgK6m
KLVAkhxJXSax9RX0davxSE72Myqx
-----END CERTIFICATE-----
- Sauvegarder et fermer le fichier servercert.pem
Clef du serveur
- Ouvrir le programme XCA
- Sous l'onglet Clés privées, cliquer (avec le bouton droit) sur le certificat du serveur concerné et cliquer sur Exporter
- Dans l'assistant d'export, choisir le nom de fichierserverkey.pem et le format d'exportation PEM. Dans les cases à cocher, sélectionner uniquement Exporter aussi la partie privée de la clé
Configuration du serveur Apache
- Fichier httpd-ssl.conf
SSLCipherSuite HIGH:!aNULL:!MD5
SSLHonorCipherOrder on
ServerName xyz.abc.def.ch:443
SSLCertificateFile "c:/abcd/efgh/servercert.pem"
SSLCertificateKeyFile "c:/abcd/efgh/serverkey.pem"
SSLCertificateChainFile "c:/abcd/efgh/cacerts.pem"
- Fichier httpd.conf
LoadModule socache_dbm_module modules/mod_socache_dbm.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so
ServerName xyz.abc.def.ch:80
Include conf/extra/httpd-ssl.conf