Cita:
te paso el codigo que yo utilice para convertir el archivo a .pem.
Código:
//---------------------------------------------------------procedure TfrmEmpresa.KeyToPem;var BatFile: TStringList; LlaveDerToPEM, OutFile, BatFileName: string;begin //Convertimos el CERTIFICADO de formato DER a formato PEM con la siguiente instrucción de OpenSSL OutFile:= FolderFilesPEM + ExtractFileName(txtPrivateKey.Text)+'.pem'; LlaveDerToPEM := 'C:\MiFactura\Bin\openssl pkcs8 -inform DER -in '+ txtPrivateKey.Text +' -out ' + OutFile; //Creamos el archivo .Bat BatFileName:= 'C:\MiFactura\Bin\'+LlaveBat; BatFile:= TStringList.Create; BatFile.Add(LlaveDerToPEM); BatFile.SaveToFile(BatFileName); try WinExecAndWait32(BatFileName,1); except on E : Exception do ShowMessage(E.ClassName+' Se provoco la excepción : '+E.Message); end; if FileExists(OutFile) then begin if LengthFile(OutFile) = 0 then MessageDlg('Verifique que la contraseña sea correcta e intentelo nuevamente.', mtError, [mbOk], 0); end; PrivateKeyPemFile:= OutFile;end;//---------------------------------------------------------
Saludos.
|
No he probado esta rutina aunque parece muy buena, ahora, si me permites dos consejos :
1. Enmarca los nombre de archivo con comilla doble, eso te permite usar directorios con nombres largos y espacios entre ellos
2. usa la opcion -passin para pasarle la clave y que no te la pida en la ventana de MSDOS
Es decir, te recomiendo que agregues:
Código Delphi
[-]
clave := InputBox('SE REQUIERE LA CLAVE','Introduzca su Clave Privada del Certificado','');
...
...
LlaveDerToPEM := 'C:\MiFactura\Bin\openssl pkcs8 -inform DER -in "'+ txtPrivateKey.Text +'" -passin pass:' + clave + ' -out "' + OutFile +'"';