2015-11-03 42 views
6

SoapClient üzerinden bağlantı kurmaya çalışıyorum. Bunun için bir sertifikaya ihtiyacım var. .pfx sertifikası aldım. Bir .pem dosyası oluşturmak için aşağıdaki komutu kullandım.Sertifika kabul edilmedi. Özel anahtar dosyası ayarlanamadı

openssl pkcs12 -in cert.pfx -out cert.pem -nodes 

Sertifikada bir parola var, bu yüzden cert.pem dosyasını almadan önce girmem gerekiyor. Şimdiye kadar çok iyi, bence.

Şimdi WSDL hizmetine bağlanmayı deniyorum.

$url = "https://test.website.com/webservices/transfer.asmx?WSDL"; 
$cert = '/path/to/cert.pem'; 
$passphrase = "12345678";            

$soapClient = new SoapClient($url, array('local_cert'=>$cert,'passphrase'=>$passphrase)); 

aşağıdaki hatayı alıyorum:

(Warning) SoapClient::SoapClient(): Unable to set private key file `/var/www/vhosts/............./cert.pem'

Sorunun belgesi olduğunu düşünüyorum. .pfx'i bir .pem'e doğru şekilde dönüştürdüm.

+0

Hala bu konuda sorun yaşıyorum. Bunu buldum. not: "-nodları" bayrağı dahil olmak üzere özel anahtar (lar) ın şifrelenmesi için bir parola kullanılmasını engeller. Parola veya parola olmadan aynı hatayı alıyorum. –

+0

kamuya açık mı yoksa özel mi? –

+2

neden '-clcerts' yerine' -nodes' kullandınız? –

cevap

6

Karşılaştığınız sorun, .pem sertifikasının her zaman şifrelenmiş bir dosya olması gerektiğidir. -nodes kullandığınızda OpenSSL docs for the pkcs12 command'a göre, hiçbir şey şifrelemediğinden, her düğümü düz metne koyun, bu da .pem sertifikasının geçersiz olmasına ve SoapClient geçersiz dosyanın ayrıştırılamamasına neden olur.

sadece bu hattı kullanarak yeniden dönüştürmek, umarım orijinal cert.pfx silmediyseniz Bunu düzeltmek için:

openssl pkcs12 -in cert.pfx -out cert.pem -clcerts 

ve cert.pem dosya doğru olacaktır.

İlgili konular