2015-01-27 1 views
1

Я относительно новичок в php с завитом и хотел задать вопрос проверки здравомыслия.php curl с сертификатом и без ключевого файла или кодовой фразы

Я пытаюсь отправить XML-файл на https-сервер с сертификатом в формате DER, предоставленным администратором сервера. Я также успешно преобразовал файл DER в формат ascii PEM и получаю по существу ту же ошибку.

With PEM format: 
* unable to use client certificate (no key found or wrong pass phrase?) 

With DER format: 
cURL Error (58): unable to set private key file: 

With DER I use: CURLOPT_SSLCERTTYPE => "DER" 

Мое исследование указывает на то, что PHP Curl также необходим ключевой файл в формате PEM или по крайней мере парольная фраза. Администратор сервера должен будет предоставить мне тот или иной.

Я знаю устаревший вопрос завитка на Centos и некоторых Линукс коробки и модернизировал завиток до последней версии: curl 7.40.0 (x86_64-redhat-linux-gnu) libcurl/7.40.0 OpenSSL/1.0.1e zlib/1.2.3 c-ares/1.10.0 libidn/1.18 libssh2/1.4.3

Разрешения на моих CER и PEM файлы r--r--r--

Я правильно о недостающем ключе или есть способ сделать такую ​​запись на https-сервере только с сертификатом DER или PEM? Любое понимание очень ценится.

Вот сердце моего PHP скрипта:

$ch = curl_init(); 

$options = array(
    CURLOPT_POST => 1, 
    CURLOPT_HTTPHEADER => ['Content-Type:', 'text/xml'], 
    CURLOPT_POSTFIELDS => $testorder, 
    CURLOPT_RETURNTRANSFER => 1, 
    CURLOPT_SSLCERTTYPE => "DER", // commented out for PEM version 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_HEADER   => true, 
    CURLOPT_FOLLOWLOCATION => true, 
    CURLOPT_SSL_VERIFYHOST => false, 
    CURLOPT_SSL_VERIFYPEER => false, 
    CURLOPT_USERAGENT => 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)', 
    CURLOPT_VERBOSE  => true, 
    CURLOPT_URL => $url, 
    CURLOPT_SSLCERT => $cert_file, 
); 

curl_setopt_array($ch , $options); 

$output = curl_exec($ch); 
+0

Вы пытаетесь использовать аутентификацию сертификата клиента (поэтому публичный и закрытый ключ клиента должен находиться в PEM) или вы пытаетесь проверить сертификат сервера (поэтому публичный сертификат сервера должен находиться в PEM). Похоже, вы задали параметры аутентификации клиентского сертификата, но только предоставляете PEM-файл с открытым ключом в нем, без закрытого ключа. –

+0

Спасибо за ответ Hans Z. Я использую сертификат, предоставленный мне администратором сервера для аутентификации на своем сервере. Я считаю, что это означает, что я пытаюсь использовать аутентификацию сертификата клиента как способ аутентификации себя на сервере и, следовательно, разрешать отправку сообщения. Кажется, мне нужно включить закрытый ключ, которого я не знаю. – mba12

+0

Да, для аутентификации с использованием PKI вам нужен секретный ключ –

ответ

2

Похож задать параметры для проверки подлинности сертификата клиента, но только обеспечивает PEM файл с открытым ключом в нем, нет ключа. Вам также нужен секретный ключ.

 Смежные вопросы

  • Нет связанных вопросов^_^