2011-01-05 8 views
0

最近、私は自分のPHPストアの銀行口座の支払いオプションを追加することに決めました。実装の仕様を読んだら、すべてがおかしくなりましたが、その1ポイントです。すべての公開鍵(証明書)交換はX509形式です。これで最後の意味は何ですか?また、パスワードで保護された通常の.pemファイルとはどう違うのですか? また、通常のパスワードで保護された.pemファイルでは、私はopenssl_verify()openssl_sign()によって署名されたようなPHP関数を使用することはできません。PHPで動作するOpenSSLの証明書を作成するには?

この支払い方法を提供している銀行にこれに関する情報はほとんどなく、これにはまったく新しいことがあるので、私はここでいくつかアドバイスを受けてください。

私はここで必要なルーチンは、それらのためのrequest.pemを生成し、それらに送信することです。その後、彼らはそれに署名するか、私が何をdunnoと私は私のアプリケーションでそれを使用することができる必要があります。

私の情報が十分でない場合は、証明書またはopensslがいつ来るか分かりませんので、教えてください。

答えて

1

PEMファイルには暗号化されたbase64エンコードの「生の」証明書/秘密鍵の値が含まれているため、PEMで機能する関数は生の証明書でも機能するはずです。 OpenSSLはある形式から別の形式に変換できるはずです。

+0

PEMをDERに変換しようとしましたので、PHPでopenssl_verifyを読み取ると、結果がfalseになります。私はx509で新しい証明書を作成し、秘密鍵からパスフレーズを削除しました。 – arma

1

curlコンセプトを使用する必要があります。

curl_setopt($ch, CURLOPT_SSLCERT,'CA.pem'); 
0

私は似たようなことをやっていました。違いは、彼らは私にpemファイルを与えて、私は彼らのサーバーに接続するために使用されます。

以下、私はあなたの推測を書いた。 :)

  1. opensslツールを使用してmyreq.pemを生成します。
  2. myreq.pemを送信し、署名付き証明書ca.pemを取得します。
  3. 以下のようにPHPでca.pemを使用してください。正直なところ

 

$context = stream_context_create(); 
stream_context_set_option($context, 'ssl', 'verify_peer', false); //or can be true 
stream_context_set_option($context, 'ssl', 'cafile', "ca.pem"); 
stream_context_set_option($context, 'ssl', 'local_cert', "ca.pem"); 
stream_context_set_option($context, 'ssl', 'passphrase', 'your pem file password'); 
//instead tls can be ssl, sslv3, sslv2 depending requirements, 10 is timeout 
$sock = stream_socket_client("tls://host:port", $errno, $errstr, 10, STREAM_CLIENT_CONNECT, $context); 
fwrite($sock, "Hi server\r\n"); 
$strResponse; 
while(!feof($sock)) { $strResponse = $strResponse . fgets($sock, 1024); } 
fclose($s); 
echo $strResponse; 
1

、PHPでOpenSSLの機能はひどいです。あなたの最善の策は、phpseclibのようなすばらしいパッケージに行くことです。

関連する問題