Как зашифровать каждый запрос на мыло в php

Я не могу выполнить зашифрованный запрос SOAP в PHP. В соответствии с документацией я зашифровал каждый запрос на платежный шлюз. Я создал CSR и отправил его в орган для сертификата. Они отправили мне сертификат домена и сертификат CA. Самая большая проблема заключается в том, что документация не предназначена для PHP. В соответствии с документом:

Веб-сервис защищен знаком WS-Security и шифрованием политика

После долгого поиска я обнаружил вспомогательный класс из Git, но всякий раз, когда я пытаюсь подключиться, я получаю следующую ошибку:

Общая ошибка безопасности (для дешифрования (KeyId) не найдено сертификатов)

FaultCode: wsse: InvalidSecurity

Я попытался установить заголовок SSL следующим образом:

$contextOptions = array(
    'ssl' => array(
        'verify_peer'   => false,
        'verify_peer_name'  => false,
        'cafile'        => '../../certs/CA.cer',
        'local_cert'        => '../../certs/server.cer',
        'local_pk'        => '../../certs/private_key.key',
        'verify_depth'  => 0,
        'allow_self_signed'=>true,
    )
);

$sslContext = stream_context_create($contextOptions);

Обновление

Я определил ключи как:

define('PRIVATE_KEY', 'server_prvate_key.key');
define('CERT_FILE', 'domain_cert.cer');
define('SERVICE_CERT', 'CA.cer');

Что-то не так с этим определением (см. ссылку выше GIT)?

Ответ 1

Вы пытаетесь использовать curl?

Для установки сертификата используйте следующий параметр:

    curl_setopt($ch,CURLOPT_CAINFO, 'CA.cer' );
    curl_setopt($ch,CURLOPT_SSLCERT, 'domain_cert.cer' );
    curl_setopt($ch,CURLOPT_SSLKEY, 'server_prvate_key.key' );
    curl_setopt($ch,CURLOPT_SSLCERTPASSWD, 'certificate_password' ); //if have

Я использую зашифрованное соединение с платежными шлюзами и другими сервисами, используя завиток и работаю как шарм.