2017-10-17 4 views
0

Ich muss digital signierte PDF mit PFX-Dateien erstellen. Ich verwende TCPDF dafür, aber TCPDF arbeitet mit PEM/CRT-Dateien. Wenn ich Datei auf dem Shared Hosting hochlade und versuche, die Datei zu konvertieren, ist es immer Null KB.Wie kann ich pfx auf Shared Hosting wie Godaddy mit PHP Script in crt/pem umwandeln?

Dies ist der Code, den ich ausprobiert habe.

exec('openssl pkcs12 -in cert.pfx -nocerts -out keyfile-encrypted.key'); 
+0

Was geschieht, wenn Sie 'openssl pkcs12 -in cert.pfx -nocerts -out keyfile-encrypted.key' von der Befehlszeile ausführen? Es führt Sie wahrscheinlich zu ["openssl pkcs12" Website: stackoverflow.com] (https://www.google.com/search?q= "openssl + pkcs12" + Website% 3Astackoverflow.com). – jww

+0

danke! aber ich fand es heraus ... extrahierte privaten Schlüssel und Zertifikat in den einzelnen neuen Dateien mit .key und .cer Erweiterungen beziehungsweise. @jww –

Antwort

0

Einige Möglichkeiten:

  • ich für die digitale Signatur glauben Sie sowohl den privaten Schlüssel und das Zertifikat in PEM-Form benötigen. Sie haben die Option -nocerts verwendet, sodass Sie nur den privaten Schlüssel erhalten. Entfernen Sie diese Option, um das Zertifikat als Teil des PEM-Exports zu behalten.
  • Wenn die PFX-Datei, die Sie haben, verschlüsselt ist, müssen Sie das Verschlüsselungskennwort irgendwie an den Befehl openssl übergeben, um die PFX-Datei zu entschlüsseln. Wenn Sie eine 0KB-Datei von openssl erhalten, ist es möglich, dass sie die nicht-interaktive Art Ihrer Anfrage erkennt und beendet.
  • Sie müssen die Option -nodes im Befehl openssl angeben, um zu verhindern, dass openssl versucht, die resultierende Datei zu verschlüsseln. Auch wenn openssl auf Eingabe wartet (ein Verschlüsselungskennwort), aber einen nicht interaktiven Anruf erkennt, kann es passieren, dass es ausfällt, ohne etwas in die Datei zu schreiben.
  • die Ausgabe verwenden und var Parameter des exec Aufruf in PHP zurückgeben falsch, um zu bestimmen, was los ist:

    exec ('openssl pkcs12 -in cert.pfx -nocerts -out keyfile-encrypted.key', $ output , $ retval);

Die $output Variable sollte die Ausgabe des Befehls enthalten; Die Variable $retval enthält den Rückkehrcode, den Sie dann mit der Dokumentation von openssl überprüfen können.

+0

danke! aber ich fand es heraus .. extrahiert privaten Schlüssel und Zertifikat in separaten neuen Dateien mit. Schlüssel und .cer Erweiterungen jeweils. –

Verwandte Themen