我的解释来自这个PHP / Apache的例子 。 这是一个简单的解释,看看有关完整信息,原来的例子。
该客户端为服务器生成的公钥和保持私钥。
公钥是由服务器提取:
$key = $_REQUEST['pubkey'];
服务器构建一个客户端证书:
$command = "/usr/bin/openssl ca -config ".$opensslconf." -days ".$days." -notext -batch -spkac ".$certfolder.$uniq.".spkac -out ".$certfolder.$uniq." -passin pass:'".$capw."' 2>&1";
$output = shell_exec($command);
并发送回客户端。
然后,您可以将Apache配置为允许访问鉴别的客户:
SSLEngine on
SSLCipherSuite HIGH:MEDIUM
SSLCertificateFile /etc/CA/certs-pub/domain.der
SSLCertificateKeyFile /etc/CA/certs-priv/domain.pem
SSLCACertificateFile /etc/CA/certs-pub/ca.pem
SSLCARevocationFile /etc/CA/crl/cacrl.pem
SSLVerifyClient require
SSLVerifyDepth 1