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