2017-09-20 1 views
1

Ich bin ein PHP-Client-Entwicklung mit Nominet EPP-Server zu kommunizieren, und als ich in ihrer Website zu finden: http://registrars.nominet.uk/namespace/uk/registration-and-domain-management/registrar-systems/epp/registrationphp-Buchse: mit Symantec Zertifikat ohne ein privaten Schlüssel

Ich brauche einen „Verisign Class 3 zu verwenden, Öffentliches Haupt-Zertifizierungsstelle "Stammzertifikat. Ich fand eine hier (Verisign von Symantec gekauft wird): https://knowledge.symantec.com/support/mpki-for-ssl-support/index?page=content&id=SO5624&actp=LIST&viewlocale=en_US

Wenn ich es in meinem PHP-Code:

//$context = stream_context_create(array($this->protocol => $options)); 
$context = stream_context_create(); 
stream_context_set_option($context, $this->protocol, 'local_cert', __DIR__ . '/../../certificates/'.$this->certificate_path); 

$errno = false; 
$errstr = false; 
$this->socket = stream_socket_client($this->protocol.'://'.$this->hostname.':'.$this->port, $errno, $errstr, 5 , STREAM_CLIENT_CONNECT, $context); 

Alles ist ok: Pfad des Zertifikats, Port, Host-Name ... Und ich bekomme:

"stream_socket_client(): Unable to set private key file ..."

ich weiß, dass ich einen privaten Schlüssel benötigen, aber in Symentec Website sie keinen privaten Schlüssel geben.

Hat jemand eine Idee?

Vielen Dank,

Hassan,

Antwort

0

Sie den richtigen Kontext Option nicht verwenden. Mit dieser Option können Sie Ihr Zertifikat definieren. Was Sie wollen, verwenden Sie das Zertifikat, das Sie gefunden haben, um den Peer-Server zu authentifizieren, um sicherzustellen, dass Sie wirklich mit dem richtigen sprechen.

Wie dies angegeben:

Um die Identität des sicheren Servers überprüfen Sie das ‚Verisign Class 3 öffentliche Primary Certification Authority‘ Stammzertifikat von www.verisign.com kostenlos erhältlich müssen (Das Zertifikat ist auch mit den meisten Webbrowsern verteilt).

Auf PHP Doc:

local_cert

Zeichenfolge Pfad zur lokalen Zertifikatsdatei auf Dateisystem. Es muss eine PEM-codierte Datei sein, die Ihr Zertifikat und Ihren privaten Schlüssel enthält.

Aber was Sie wollen, ist dies:

CaFile

Lage Certificate Authority auf einem lokalen Dateisystem, das sollte mit dem verify_peer Kontext-Option verwendet werden, um die Identität des Remote zu authentifizieren Peer.

+0

Dank Salketer für Ihre Antwort, ich es geändert und ich „stream_socket_client(): Krypto ermöglichen Failed“ –

+0

den Fehler googeln, so scheint es, dass die Menschen es zu lösen, indem die curl Modul Hinzufügen ... I‘ d überprüfe das zuerst. – Salketer

+0

Was meinen Sie mit dem Hinzufügen des Curl-Moduls? Meinst du das Senden einer Curl-Anfrage anstelle von "stream_socket_client"? –

Verwandte Themen