通过PHP请求客户端证书进行身份验证

时间:2014-12-29 19:55:56

标签: php authentication ssl certificate

我试图请求浏览器以编程方式发送已安装的p12证书进行身份验证。

以下代码段根据需要生成证书:

$res = \openssl_pkey_new(Config\authentication_key_options());

\openssl_pkey_export($res, $private);
$public = \openssl_pkey_get_details($res);
$public = $pubKey["key"];

# Generate the x509 cert
$csr = \openssl_csr_new(Config\authentication_dn(), $private);
$x509 = \openssl_csr_sign($csr, null, $private, Config\AUTHENTICATION_CERT_VALID_FOR);

# Generate the pcks12
\openssl_pkcs12_export($x509, $p12, $private, null);

然后将生成的证书发送到客户端浏览器进行下载,并将私钥保存在服务器端以供以后使用。

我已将以下内容添加到apache的配置中:

SSLVerifyClient optional_no_ca
SSLVerifyDepth  10
SSLOptions +ExportCertData +StdEnvVars

如果没有这样做,我尝试让我的测试脚本发送401标头,但无济于事。添加WWW-Authenticate选项同样不成功:

header("HTTP/1.0 401");
header("WWW-Authenticate: Basic");
header("WWW-Authenticate: transport mode=\"tls-client-certificate\"");

那么我必须以编程方式添加(非静态地通过apache' s配置)请求浏览器端证书?

2 个答案:

答案 0 :(得分:0)

在做了更多阅读之后,似乎根本无法完成。

回到绘图板我去

答案 1 :(得分:0)

我所知道的是

  1. CA证书应加载到JKS。
  2. " SSLVerifyClient optional_no_ca"这应该是SSLVerifyClient require