プロバイダーから 2 つの証明書ファイルを取得しました。1 つは .cer 形式で、もう 1 つは .p7b 形式です。次に、p7b 証明書を p12 証明書に変換しました。この証明書を使用すると、ブラウザから wsdl に接続できます。次に、このサイトで見つけたいくつかの手順を使用して、その証明書を .pem 形式に変換しました。
openssl pkcs12 -clcerts -nokeys -out test.pem -in mycert.p12
openssl pkcs12 -nocerts -out key.pem -in mycert.p12
次に、次のコマンドを使用して証明書とキーを組み合わせます。
cat test.pem key.pem > cert.pem
Web サービス クラスの構成は次のとおりです。
public function __construct() {
$wsdl_url = 'https://url.to/web_service?wsdl';
$pass = 'passphrase';
$cert = 'cert.pem';
try {
$this->client = new SoapClient($wsdl_url, array('local_cert' => $cert, 'passphrase' => $pass));
} catch(SoapFault $e) {
print_r($e);
}
}
そして、ここにエラーがあります:
SSL operation failed with code 1. OpenSSL Error messages: error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca in /var/www/html/..
以下を使用して証明書を検証しようとしています:
openssl verify cert.pem
次のエラーが表示されます。
error 20 at 0 depth lookup:unable to get local issuer certificate
また、次の openssl コマンドを使用して .pem-certificate を作成しようとしました。
openssl pkcs12 -in mycert.p12 -out mycert.pem
これを確認すると問題ありませんが、PHP で次のエラーが表示されます。
Unable to set local cert chain file `mycert.pem'; Check that your cafile/capath settings include details of your certificate and its issuer
.p12-certificate. しかし、どのように進めるべきかについての解決策を見つけることができません。前もって感謝します。