Вопрос

Недавно я решил добавить вариант оплаты BankLink для моего магазина PHP и после чтения спецификаций реализации все кажется Okey, но 1 точка зрения. Все публичные ключи (сертификаты) обменные находятся в формате X509. Теперь, что означает, что это в последний раз, и как он отличается от обычного защищенного паролем .pem файл? Также с помощью обычного файла защищенного паролем .pem i нельзя использовать функцию PHP, как openssl_verify() подписано openssl_sign() функция.

Могу ли я получить несколько советов здесь, пожалуйста, поскольку банк, который предлагает этот способ оплаты, имеет очень мало информации об этом и я полностью новичок.

Таким образом, рутина, которую мне нужно сделать, здесь генерирует запрос. PEM для них и отправить его им. После этого они подпишет его или что-то, что я не знаю, и я должен быть в состоянии использовать его в моем приложении.

Пожалуйста, скажите, если моя информация недостаточно, потому что, как я сказал, я не знаю много, когда входит в сертификаты или OpenSSL.

Это было полезно?

Решение

PEM-файл содержит зашифрованную и базовую 64-закодированное значение «RAW» сертификата / частное значение ключа, поэтому функции, которые работают с PEM, должны также работать с необработанными сертификатами. OpenSSL должен быть в состоянии преобразовать из одного формата в другое.

Другие советы

Вы должны использовать curl концепция.

curl_setopt($ch, CURLOPT_SSLCERT,'CA.pem');

Честно говоря, возможности OpenSSL в PHP являются Abysmal. Ваша лучшая ставка - пойти на потрясающий пакет, как phpseclib..

Давным-давно я делал что-то подобное. Разница в том, что они просто дали мне файл PEM, и я использовал его для подключения к их серверу.

Ниже я написал для тебя моего отдыха. :)

  1. Создайте myreq.pem с помощью инструмента OpenSSL.
  2. Отправьте их myreq.pem и получите подписанный сертификат ca.pem.
  3. Используйте ca.pem в php, как ниже.

 

$context = stream_context_create();
stream_context_set_option($context, 'ssl', 'verify_peer', false); //or can be true
stream_context_set_option($context, 'ssl', 'cafile', "ca.pem");
stream_context_set_option($context, 'ssl', 'local_cert', "ca.pem");
stream_context_set_option($context, 'ssl', 'passphrase', 'your pem file password');
//instead tls can be ssl, sslv3, sslv2 depending requirements, 10 is timeout
$sock = stream_socket_client("tls://host:port", $errno, $errstr, 10, STREAM_CLIENT_CONNECT, $context); 
fwrite($sock, "Hi server\r\n");
$strResponse;
while(!feof($sock)) { $strResponse = $strResponse . fgets($sock, 1024); }
fclose($s);
echo $strResponse;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top