Authentification forte avec Apache et certificats délivrés par vous à des partenaires |
|
Si vous avez besoin de protéger l'accès par certificats à un extranet (site utilisé par des tiers), vous allez avoir la problématique de l'attribution des certificats.
Bien sur, vous pourriez demander à vos partenaires de se procurer un certificat par eux même, et suivre le procédé L'autre solution consiste à leur délivrer vous même le certificat à utiliser. Impossible d'utiliser une offre TBS X509 PKI, car elle ne permet de délivrer des certificats qu'à votre personnel en interne. Vous pouvez par contre utiliser un certificat de type TBS X509 Sign&Login ou TBS X509 Email (Voir les certificats utilisateurs). Vous pouvez commander ces certificats pour vos partenaires ou clients (contact administratif = votre partenaire, contact technique = vous même). Il vous est possible de faire toute la procédure d'obtention vous même ou de faire participer votre partenaire (mode invitation). Exemple:
|
|
Préalable: votre serveur doit être correctement configuré en tant que serveur SSL. Dans votre VirtualHost SSL, placez deux instructions: SSLCARevocationPath conf/ssl.crl/ SSLCACertificateFile conf/chain-mon-pki.txtL'instruction SSLCARevocationPath concerne la révocation. Voir
L'instruction SSLCACertificateFile décrit la chaîne de certification des certificats acceptés (donc celle de
|
Maintenant au niveau d'un répertoire dans la conf apache, il faut placer
SSLRequireSSL SSLVerifyClient require SSLVerifyDepth 4pour activer la demande de certificat client, et spécifier la longueur maxi de la chaîne. Vous pouvez en rester là pour la configuration et vous reposer sur l'application pour attribuer les autorisations en fonction de chaque certificat. Vous pouvez également utiliser un filtre comme ci-dessous:
SSLRequire %{SSL_CLIENT_I_DN} eq "/C=FR/ST=Calvados/L=Caen/O=TBS INTERNET/OU=Terms and Conditions: http://www.tbs-internet.com/CA/repository/OU=TBS INTERNET CA/CN=TBS X509 CA persona" \
and ( ( %{SSL_CLIENT_S_DN_O} eq "NOM-DE-LA-SOCIETE" and %{SSL_CLIENT_S_DN_CN} eq "ref1" ) \
or ( %{SSL_CLIENT_S_DN_O} eq "NOM-SOCIETE2" and %{SSL_CLIENT_S_DN_CN} eq "ref2" ) \
or ( %{SSL_CLIENT_S_DN_O} eq "NOM-SOCIETE3" and %{SSL_CLIENT_S_DN_CN} eq "ref3" ) \
)
Dans cette expression, la première ligne vérifie l'autorité qui a émis le certificat (si vous avez suivi notre méthode et autorisé une seule autorité de certification, ce test redondant. Il est par contre utile si vous avez autorisé plusieurs CA.).Ensuite chaque ligne vérifie un couple nom de société et référence. Vous pourriez aussi filtrer sur d'autres champs, par exemple le numéro de série. Voir la documentation Apache pour connaitre les champs disponibles.
|
Si vous avez de nombreux certificats à accepter, l'usage d'un filtre sslrequire n'est pas optimum. Vous pouvez utiliser le mécasnisme d'authentification SSL par certificat. Pour se faire, ajoutez à votre configuration:
SSLOptions +FakeBasicAuth AuthName "Acces par certificat" AuthType Basic AuthUserFile conf/certificats.passwd require valid-userPuis dans le fichier conf/certificats.passwd placez: /C=DE/L=Munich/O=Snake Oil, Ltd./OU=Staff/CN=Foo:xxj31ZMTZzkVA /C=US/L=S.F./O=Snake Oil, Ltd./OU=CA/CN=Bar:xxj31ZMTZzkVA /C=US/L=L.A./O=Snake Oil, Ltd./OU=Dev/CN=Quux:xxj31ZMTZzkVACe fichier est constitué du sujet du certificat (le DN complet) puis de :xxj31ZMTZzkVA, un pseudo mot de passe, toujours le même. Pour connaitre le sujet d'un certificat, il suffit de faire: openssl x509 -subject -noout -in fichier-certificat.cer |
| [Contribuer à cette Entrée] |
| 2008-Apr-11 10:51am |
| Précédent: |
|
| Suivant: |
|
| ||||
| C'est une Faq-O-Matic 2.721. |