5

我目前正在使用 tcp 套接字在 PHP 中使用套接字流在服务器和客户端之间交换数据。我希望每个客户端都有一个唯一的证书(我将为他们生成)来访问我的服务器,这样只有我认识的人才能使用它。我已经搜索并发现仅如何在服务器端使用证书,这将使我能够建立 SSL 套接字连接,但我真正需要的是使用客户端服务器证书来识别连接到我的服务器的客户端。这可能使用 PHP 吗?

我想象客户端是这样连接的:

$clientCert = './clientCert.pem';
$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', $clientCert);
$server = stream_socket_client('ssl://IP', $error, $errorString, 2, STREAM_CLIENT_CONNECT, $streamContext);

但是服务器如何处理(识别等)这个客户端证书?

希望我的问题很清楚。

提前致谢, 拉斐尔

4

1 回答 1

1

您应该使用stream_context_set_optionto 设置verify_peertrue; 这将要求对方验证客户端的证书是否可信。cafile验证是通过检查证书是否由受信任的权威机构签署来完成的,因此您需要通过orcapath选项指定可以在何处找到权威机构的公钥。

请注意,以上内容在服务器端(允许您对客户端进行身份验证)客户端都适用——除非您明确指定,否则服务器也不会经过身份验证。

于 2013-04-22T19:28:30.630 回答