команда curl с сертификатами на php SoapClient (BankID)
На основе https://www.bankid.com/assets/bankid/rp/bankid-relying-party-guidelines-v2.13.pdf
У меня есть рабочая curl
команда:
curl https://appapi.test.bankid.com/rp/v4?wsdl -E --cacert /path/to/BankID_SSL_Root_Certification_Authority_TEST.pem --cert /path/to/ServerCertificate.cer --key /path/to/PrivateKey.key
serverCertificate.cer и PrivateKey.ключ были извлечены из сертификата PFX (https://www.bankid.com/assets/bankid/rp/FPTestcert2_20150818_102329.pfx ) с помощью команды openssl
.
Но я не могу заставить его работать с PHP SoapClient:
SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://appapi.test.bankid.com/rp/v4?wsdl' : failed to load external entity "https://appapi.test.bankid.com/rp/v4?wsdl"
Я буду признателен за любую помощь здесь.
2
2 answers
Спасибо вам, ребята, за ваши ответы.
Решение:
openssl pkcs12 -in FPTestcert2_20150818_102329.pfx -nocerts -out key.pem -nodes
openssl pkcs12 -in FPTestcert2_20150818_102329.pfx -nokeys -out cert.pem
openssl rsa -in key.pem -out server.key
- Скопир
-----BEGIN RSA PRIVATE KEY----- ... -----END RSA PRIVATE KEY-----
участок отserver.key
и-----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----
участок отcert.pem
и положить их в новыйcertname.pem
файле.
Затем:
try {
$this->client = new SoapClient( $this->wsdl, array( "local_cert" => "/path_to_cert/certname.pem" ) );
} catch (Exception $e) {
return json_encode( array( "result" => false, "reason" => $e->getMessage() ) );
}
1
Author: Dmitry, 2017-03-01 13:43:51
Просто для будущих людей, столкнувшихся с той же проблемой BankID, Дмитрий дал очень хороший учебник о том, как получить правильный сертификат, но код, который работал для меня, требовал еще нескольких параметров:
try {
$client = new SoapClient('https://appapi2.test.bankid.com/rp/v4?wsdl',
["local_cert" => "certname.pem",
"stream_context" => [
"ssl" => [
"verify_peer" => false,
"verify_peer_name" => false,
"allow_self_signed" => true
]
]
]);
} catch (Exception $e) {
return json_encode( array( "result" => false, "reason" => $e->getMessage() ) );
}
1
Author: Fran, 2017-11-14 14:24:26