0

そのため、暗号化と復号化を初めて使用していて、少し問題が発生しました。秘密鍵と公開鍵を取得するには、次のコードを使用します。

//get public key
$client_cert = openssl_x509_read(file_get_contents("path\to\certificate"));
$pub_key = openssl_pkey_get_public($client_cert);

//get private key
$pk = file_get_contents("path\to\pk.pem");
$private_key = openssl_pkey_get_private($pk);

$pub_key または $private_key のいずれかで var ダンプを実行すると、どちらも OpenSSL キー タイプのリソースであることがわかります。ただし、これらのいずれかで openssl_pkey_get_details を実行しようとすると、Web ページが停止し、Web ページが利用できないというメッセージが表示されます。これは、次の行を実行しようとした場合にも発生します。

openssl_private_encrypt($server_challenge, $encrypted_server_challenge, $private_key);

Apache と php の両方のログを確認しましたが、どちらも何も表示されません。どんな助けでも大歓迎です

編集:これはコードの完全なブロックです

//get public key
$client_cert = openssl_x509_read(file_get_contents("C:\Users\Brandon\Desktop\Work\ClientCertification.cer"));
$pub_key = openssl_pkey_get_public($client_cert);

//get private key
$pk = file_get_contents("C:\Users\Brandon\Desktop\Work\pk.pem");
$private_key = openssl_pkey_get_private($pk);

$client = new SoapClient("https://ws5.responsys.net/webservices/wsdl/ResponsysWS_Level1.wsdl");
$response = $client->authenticateServer($this->loginParameters);

//encrypt server challenge with private key
$server_challenge = implode($response->result->serverChallenge);

openssl_private_encrypt($server_challenge, $encrypted_server_challenge, $private_key);
4

0 に答える 0