Für Indy .p12 zu .pem wandeln

20.06.2018 - Lesezeit: 2 Minuten

Literatur

Zur Beachtung Unter Delphi 2009 funktioniert die unten angegebene Funktion testCert zwar, aber der Zugriff auf einen anderen Server lieferte nur 403 Forbidden. Unter Delphi 10 Tokyo funktioniert der Zugriff immer.

  • Delphi 2009: Indy version: 10.2.5
  • Delphi 10.2: Indy version: 10.6.2.5366

Convert a PKCS#12 file (.pfx .p12) containing a private key and certificates to PEM

openssl pkcs12 -in zugang.p12 -out zugang.pem -nodes

in Delphi

  • me ist vom Typ TMemo
    
    uses
    SysUtils, Classes, Forms, IdHTTP, IdSSLOpenSSL, idGlobal,
    Controls, ComCtrls, ToolWin, StdCtrls;

function TForm1.testCert: boolean; var IdHTTP1 : TIdHTTP; Id_HandlerSocket : TIdSSLIOHandlerSocketOpenSSL; cert:string; s : string; begin try me.Clear; IdHTTP1 := TIdHTTP.Create( self ); IdHTTP1.Request.BasicAuthentication := False; IdHTTP1.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0'; Id_HandlerSocket := TIdSSLIOHandlerSocketOpenSSL.Create( IdHTTP1 ); cert := 'zugang.pem'; Id_HandlerSocket.SSLOptions.CertFile := cert; ( PEM contain both CERT and Key ) Id_HandlerSocket.SSLOptions.KeyFile := cert;

  Id_HandlerSocket.SSLOptions.Mode := sslmClient;
  Id_HandlerSocket.SSLOptions.Method := sslvSSLv23;
  IdHTTP1.IOHandler := Id_HandlerSocket;

  me.Add( Id_HandlerSocket.SSLOptions.CertFile );

  s := IdHTTP1.Get( 'https://www.scriptjunkie.us/auth/verifycert' );

  me.Add( s );
  Result:=True;

finally
  Id_HandlerSocket.Free;
  IdHTTP1.Free;
end;

end;

Tags: Delphi-Programmierung Linux-Scripte