2016-04-13 16 views
0

私はADP SSLキーpem、pfx、csrを持っています。 Xamppサーバーを使用してローカルマシンから接続しようとしています。ADP APIが過去のSSLエラーを取得できません

私の人生にとって、私はこのエラーを過ぎることはできません。 "クライアント証明書を使用できません(キーが見つからないか、パスフレーズが間違っていますか?")。

MS管理コンソールに.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); 

答えて

0

.. I cannot get past this error: "unable to use client certificate (no key found or wrong pass phrase?)".

(私はADP APIの知識がないが、エラーメッセージは、キーが見つからないいずれかのことを示唆している(あなたはそれがあると主張している)、適切な権限を持っていないことで、それが読み取り可能ですWebサーバーは?)、正しい形式(-----BEGIN RSA PRIVATE KEY-----などで始まるはずです)を持っていないか、このキーのパスフレーズがあり、間違ったものを与えているか、まったく与えていません。コードを見て私は、あなたが証明書とキーが、ノーパスフレーズを提供することを参照してください。

CURLOPT_SSLCERT => $auth['cert'], 
CURLOPT_SSLKEY => $auth['key'], 
CURLOPT_USERPWD => $auth['user'], 

私はあなたがパスフレーズが完全に欠落している場合、誤ってパスフレーズを与えることCURLOPT_USERPWDを使用しようとするかわからないが、あなたを追加しますCURLOPT_KEYPASSWDを使用する必要があります。

+0

ありがとうございます。パスフレーズはありません。鍵ファイルは実際には----- BEGIN RSA PRIVATE KEY -----で始まります。ファイルのパーミッションはうまくいきます - Xamppを実行している私のWindowsマシンです。 – bacemail

+0

この鍵と証明書は、自分のマシンで作成した同僚によって私に与えられました。これは問題でしょうか? – bacemail

+0

@bacemail:キーが証明書と一致する限り、それは重要ではありません。このペアが一緒に属していることを確認する方法については、https://support.comodo.com/index.php?/Default/Knowledgebase/Article/View/684/17/how-do-i-verify-that-a-privateを参照してください。 -key-matches-a-certificate-openssl –

0

このようなトラブルシューティングを行っても、.pemファイルと.keyファイルへのパスが正しくないことがわかりました。

正しい構文: $ auth ['cert'] = DIR。 "/certs/my_cert.pem"; $ auth ['cert'] = DIRです。 "/certs/my_cert.key";

作業中(一部の脳細胞を失った)。