Verwenden von LWP mit SSL und Clientzertifikaten

8

Ich portiere eine Anwendung von PHP / cURL nach Perl und LWP :: UserAgent. Ich muss eine POST-Anfrage an einen Webserver richten und ein Client-Zertifikat und eine Schlüsseldatei bereitstellen. Der PHP-Code, den ich versuche zu replizieren, ist dies:

%Vor%

Und hier ist mein Perl-Code:

%Vor%

Der PHP-Code verbindet sich erfolgreich mit dem Server, aber der Perl-Code schlägt fehl mit:

SSL-Lesefehlerfehler: 14094410: SSL-Routinen: SSL3_READ_BYTES: sslv3-Alert-Handshake-Fehler

Ich kann nicht herausfinden, was ich vermisse.

    
kent 02.10.2012, 20:05
quelle

3 Antworten

3

Die Antwort von emazep oben löste mein Problem. Ich verwende den Perl-Beispielcode von UPS, um über XML eine Verbindung mit dem Tarifservice herzustellen. Aus meinen Tests funktioniert das immer dann, wenn LWP :: UserAgent ohne Argumente aufgerufen wird, die Sie direkt steuern können. Dies ist praktisch, wenn Sie ein anderes Modul verwenden, das Anrufe an LWP für Sie durchführt. Verwenden Sie einfach Net :: SSL (zusätzlich zu den Paketen, die bereits LWP verwendet haben) und legen Sie einige Umgebungsvariablen fest:

%Vor%

Das ist es! Sie sollten nicht einmal den Pfad zum Stammzertifikat Ihres Servers mit $ ENV {PERL_LWP_SSL_CA_FILE} angeben müssen.

    
goddogsrunning 13.11.2012 17:02
quelle
2
%Vor%     
nexoma 12.10.2012 12:45
quelle
1

Tatsächlich ist das ein unordentliches bisschen. Abhängig von Ihrer Konfiguration kann LWP :: UserAgent eines von (mindestens) zwei SSL-Modulen für die SSL-Verbindung verwenden.

  • IO :: Socket :: SSL
  • Net :: SSL

Der erste sollte der Standard für neuere Versionen von LWP :: UserAgent sein. Sie können testen, welche davon installiert sind, indem Sie den Standardbefehl in einem Terminal für jedes Modul ausführen:

%Vor%

IO :: socket :: SSL erfordert die SSL-Konfiguration mit dem ssl_opts wie in Ihrem Beispiel.

Net :: SSL erfordert die SSL-Konfiguration in Umgebungsvariablen wie in goddogsrunnings Antwort.

Ich persönlich bin in der zweiten Kategorie und hatte eine gute Inspiration von der Crypt :: SSLeay Seite . Vor allem der Abschnitt namens "CLIENT CERTIFICATE SUPPORT".

    
Phluks 24.09.2015 12:39
quelle

Tags und Links