如果这个问题很愚蠢,请原谅,但我是这个领域的新手。
我需要通过 SSL 从 Drupal 7 站点连接到服务。我有一个扩展名为“.p12”的文件及其密码。另外,我使用 PHP 7.1 1 和 Windows 7 64x。
我使用以下命令将 .p12 文件转换为 .pem 文件。
openssl pkcs12 -in myfile.p12 -out myfile.pem
在我将 Openssl 安装到我的计算机中并将路径添加到 Windows 之前。
之后,我尝试使用以下代码通过 CURL 函数连接到服务器。
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'my_addr');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSLCERT, 'myfile.pem');
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, 'mypsw');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
if ($result === FALSE){
$curl_error = curl_error($ch);
}
curl_close($ch);
不幸的是,curl_exec 返回 FALSE,curl_error 返回以下内容:
could not load PEM client certificate, OpenSSL error error:02001003:system library:fopen:No such process, (no key found, wrong pass phrase, or wrong file format?)
我决定在 Linux 共享主机上的客户端站点上执行此代码,而我的本地主机在 Windows 7 64x 上运行。代码执行没有任何错误,但curl_exec返回一个空字符串。
我想澄清一下,我做错了什么以及为什么 PEM 客户端证书不想加载?我应该在本地主机上做什么来解决这个问题?
我不能放弃使用 Windows 7 并开始使用 Linux。