Comment puis-je faire une connexion avec authentification Single Sign On (SSO) c'est à dire un login unique sur de multiples serveurs en utilisant des certificats client CAcert ?

En premier lieu, vous avez besoin de mod_ssl et de la configuration apache (C’est en dehors du sujet de cette FAQ et vous devriez chercher sur Google pour de plus amples informations. 'LAMP' est un bon mot clé de recherche). Je recommande mod_ssl de préférence à apache-ssl car cette configuration consomme moins de ressources pour le même résultat.

Une fois que tout est configuré et fonctionne, vous devrez ajouter dans votre fichier apache.conf des lignes similaires à ce qui suit


<VirtualHost 127.0.0.1:443>
SSLEngine on
SSLVerifyClient require
SSLVerifyDepth 2
SSLCACertificateFile /etc/ssl/cacert.crt
SSLCertificateFile /etc/ssl/certs/cacert.crt
SSLCertificateKeyFile /etc/ssl/private/cacert.pem
SSLOptions +StdEnvVars

ServerName secure.cacert.org
DocumentRoot /www
</VirtualHost>

Prenez note : vous allez avoir besoin de changer les chemins, les noms d’hôte et les adresses IP de l’exemple suivant, qui n’est juste qu’un exemple ! La directive SSLCACertificateFile est supposée pointer vers un fichier contenant le certificat racine avec lequel vous voulez vérifier les certificats client, pour le site Web CAcert nous n’acceptons évidemment que les certificats générés par notre propre site Web et qui correspondent à notre certificat racine.

Une fois que tout fonctionne, que vous avez testé l’envoi d’un certificat client vers votre site et que vous en êtes heureux, tout va bien et vous pouvez ajouter du code PHP (ou tout autre langage que vous pourrez intégrer à votre environnement serveur). A ce jour, je n’ai que du code PHP disponible et cet exemple est en PHP


        if($_SERVER['HTTP_HOST'] == "secure.cacert.org")
        {
                $query = "select * from `users` where `email`='$_SERVER[SSL_CLIENT_S_DN_Email]'";
                $res = mysql_query($query);
                if(mysql_num_rows($res) > 0)
                {
                        $_SESSION['profile']['loggedin'] = 1;
                        header("location: https://secure.cacert.org/account.php");
                        exit;
                }
        }

Les opérations CAcert sont parrainées par
À notre sujet | Dons | Adhésion à l'association | Règles de confidentialité | Exposé des Missions de CAcert.org | Contactez-nous | ©2002-2010 par CAcert