Mit Hilfe von Client SSL Zertifikaten können Sie Clients anhand eines SSL Zertifikats authentifizieren anstelle z.B. eines Logins oder Kennworts. Es ist möglich, den Public Bereich der Homepage mit z.B. einem PositiveSSL oder RapidSSL Zertifikat an alle Benutzer auszuliefern, und den Administrationsbereich nur Benutzern mit installiertem Client Zertifikat zu erlauben.
Die Zertifikatsdetails sind u.a. mit PHP auslesbar und können z.B. der Unterscheidung verschiedener Benutzer dienen.
Folgend sehen Sie eine Minimalkonfiguration. - Im Test wurde ein RapidSSL Wildcard Zertifikat genutzt, das Client Zertifikat wurde selbst erstellt und ist dem Wildcard Zertifikat abgeleitet.
Einstellungen Apache:
SSLEngine on SSLCertificateFile /home/frank/ssl/.b-nm.at.crt SSLCertificateKeyFile /home/frank/ssl/.b-nm.at.key SSLCertificateChainFile /home/frank/ssl/RapidSSL_CA_bundle.neu.ct.pem SSLCACertificateFile /home/frank/ssl/.b-nm.at.crt #SSLVerifyClient require #SSLVerifyClient optional SSLVerifyClient optional_no_ca SSLVerifyDepth 4 SSLOptions +StdEnvVars +ExportCertData
Erstellung des Client Zertifikats:
cp /etc/ssl/openssl.cnf ./openssl-for-signing-csrs.cnf #countryName_default auf "AT" setzen ... #http://stackoverflow.com/questions/16659197/how-to-sign-a-clients-csr-with-openssl#16675058 #80,82c80,82 #< countryName = match #< stateOrProvinceName = match #< organizationName = match #--- #> countryName = supplied oder optional #> stateOrProvinceName = supplied oder optional #> organizationName = supplied oder optional mkdir -p demoCA/newcerts touch demoCA/index.txt echo 1001 > demoCA/serial openssl genrsa -out client.key 4096 -sha256 openssl req -new -key client.key -out client.csr openssl ca -cert .b-nm.at.crt -keyfile .b-nm.at.key -out client.crt -in client.csr -config openssl-for-signing-csrs.cnf openssl pkcs12 -export -inkey client.key -name "Frank" -in client.crt -certfile .b-nm.at.crt -out client.p12
#PHP: ssltest.php
====================
<pre><?php
print_r($_SERVER);
?></pre>
Weitere Details:
http://www.phpgangsta.de/client-zertifikate-als-sicherer-login-ersatz
http://cweiske.de/tagebuch/ssl-client-certificates.htm