ADP API无法通过SSL错误

时间:2016-04-13 15:22:36

标签: php api ssl xampp

我有一个ADP SSL密钥,pem,pfx,csr。我尝试使用Xampp服务器从本地计算机进行连接。

对于我的生活,我无法克服这个错误: "无法使用客户端证书(没有找到密钥或错误的密码短语?)"。

通过在MS Management Console中安装.pfx文件,我能够让Google Postman使用ADP API。

我是否需要在Xampp服务器本身的某处安装这些文件?

我在应用程序中有一个文件夹,用于存储我指向的.key和.pem文件。

感谢任何见解。

$auth = array();
$auth['cert'] = "/certs/xxxxxxxxxxxxxxx.pem";
$auth['key'] = "/certs/xxxxxxxxxxxxxxxx.key";
$auth['user'] = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";

$postfields = array(
   "grant_type" => "client_credentials"
);

$ch = curl_init();
curl_setopt_array($ch, array(
   CURLOPT_URL => "https://api.adp.com/auth/oauth/v2/token",
   CURLOPT_SSLCERT => $auth['cert'],
   CURLOPT_SSLKEY => $auth['key'],
   CURLOPT_USERPWD => $auth['user'],
   CURLOPT_RETURNTRANSFER => 1,
   CURLOPT_POSTFIELDS => http_build_query($postfields, '', '&')
));

$auth['token'] = curl_exec($ch);
curl_close($ch);

$response = json_decode($auth['token'], true);


$_SESSION['bearer'] = $response['access_token'];

$ch = curl_init();

curl_setopt_array($ch, array(

   CURLOPT_URL => 'https://api.adp.com/hr/v1/corporate-contacts' ,
   CURLOPT_SSLCERT => $auth['cert'],
   CURLOPT_SSLKEY => $auth['key'],
   CURLOPT_RETURNTRANSFER => 1,
   CURLOPT_HTTPHEADER => array(
   'Accept: application/json',
   'Authorization: Bearer ' . $auth['token']
)

));
$data = curl_exec($ch);

if(!$data)
    print_r('ERROR: ' . curl_error($ch));
else
    print_r('SUCCESS: ' . curl_error($ch));

curl_close($ch);

2 个答案:

答案 0 :(得分:0)

  

..我无法通过此错误:“无法使用客户端证书(未找到密钥或错误的密码短语?)”。

我不了解ADP API,但错误消息表明找不到密钥(您声称它在那里),没有正确的权限(Web服务器是否可读?),没有正确的格式(应该以{{1​​}}等开头)或者你有这个密码的密码并且你给出了错误的一个或没有。查看代码,我看到你提供了证书和密钥,但没有密码:

-----BEGIN RSA PRIVATE KEY-----

我不知道如果密码完全丢失,你是否试图错误地使用CURLOPT_USERPWD来提供密码短语,但要添加你需要使用CURLOPT_KEYPASSWD

答案 1 :(得分:0)

在完成所有故障排除后,我发现.pem和.key文件的路径不正确。

正确的语法:     $ auth [' cert'] = DIR 。 " /certs/my_cert.pem" ;;     $ auth [' cert'] = DIR 。 " /certs/my_cert.key" ;;

现在工作(丢失一些脑细胞)。