Menu
picture of tbs certificates
picture of tbs certificates
Les produits
Notre gamme
Partenaires
Support
Numéro vert
Focus


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é Authentification forte avec Apache et certificats délivrés par de multiples CA . Ils risquent néanmoins de ne pas réussir à s'en procurer, parce que c'est trop compliqué ou trop couteux, à moins qu'un de vos prestataires s'occupe de déploiement.
L'autre solution consiste à leur délivrer vous même le certificat à utiliser. Utiliser une offre PKI comme TBS X509 PKI est possible, mais nécessite de créer un espace d'adressage dans votre organisation, ce qui n'est pas toujours souhaitable.

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:
  1. Déposez la demande de certificat chez nous. La génération du CSR se fera via notre outil Keybot (plus d'infos ). Vous pouvez aussi l'effectuer à la main avec openssl. Soit vous mettez la facture à votre nom et la réglez, soit l'utilisateur final devra la payer.
  2. Nous auditons votre demande. En particulier nous appelons le contact administratif pour nous assurer de son accord. Il est particuliérement important qu'il soit au courant de la demande de certificat et qu'il accepte que vous lui fournissiez le certificat.
  3. Générer votre certificat au format PKCS12 (.pfx) depuis la page statut de votre certificat, bouton "Generer PFX/PEM" (vous pouvez aussi le fabriquer à la main avec openssl)
  4. Fournissez ce pkcs#12 à l'utilisateur final avec les instructions d'importation dans son navigateur
Nos certificats sont disponible avec des remises sur volume à partir de 3 unités.

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.txt
L'instruction SSLCARevocationPath concerne la révocation. Voir Gestion des listes de révocation dans Apache pour mettre en place la gestion de la revocation.
L'instruction SSLCACertificateFile décrit la chaîne de certification des certificats acceptés (donc celle de TBS X509 CA persona
). Consultez

Maintenant au niveau d'un répertoire dans la conf apache, il faut placer
SSLRequireSSL
SSLVerifyClient require
SSLVerifyDepth 4
pour 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-user
Puis 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:xxj31ZMTZzkVA
Ce 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