Jak se mohu přihlásit jednoduchým přihlášením (single sign-on) klientskými certifikáty podobně jako k CAcertu?

Napřed potřebujete mod-ssl a nastavení Apache (To už je mimo rozsah této položky FAQ a bude třeba vyhledat na Google apod. informace nastavení LAMP). Doporučuji mod-ssl raději než Apache-ssl, protože to znamená. že potřebujete méně prostředků k dosažení stejného výsledku.

Jakmile máte vše nastaveno a funkční, bude třeba přidat do souboru apache.conf řádky podobné těmto:

<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>

Prosím uvědomte si, že budete muset ve výše uvedeném příkladu (který je pouze příkladem!) změnit cesty, název počítače (hostname) a IP-adresu. Směrnice SSLCACertificateFile má ukazovat na soubor s kořenovým certifikátem, kterým si přejete ověřovat své klientské certifikáty, neboť pro web CAcert samozřejmě přijímáme jen certifikáty vydané naším vlastním webem a k počátečnímu ověření používáme naše kořenové certifikáty.

Jakmile máte všechno funkční a otestováno i zasílání klientských certifikátů Vašemu webu, takže je vše konečně OK, můžete začít s přidáním kódu do PHP (nebo jiného jazyka, který dokáže získat informace o serveru). Nyní mám k dispozici pouze PHP kód, a proto je příklad psán v PHP (zase jako příklad s použitím cacert.org):

   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;
         }
   }


HELP/9/CZ (last edited 2015-02-25 12:25:00 by AlesKastner)