Configurer Apache pour l'authentification mutuelle SSL

From Knowledge
Jump to: navigation, search

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.

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:

  1. Exportation des certificats et des clefs depuis XCA
  2. 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