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

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

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

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

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

Код ошибки: 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 выше)?

11

Решение

Вы пробовали использовать 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

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

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]