SSL
Bei einer Umstellung auf https müssen alle Programme über dasselbe Protokoll miteinander kommunizieren! In der Regel sind folgende Programme betroffen und es werden folgende Zertifikate benötigt:
- Tomcat8
PFX / P12 Datei mit Kennwort - TableService
Zertifikat BASE64 codiert (PEM Datei, wobei die Endung keine große Rolle spielt)
Private Key (unverschlüsselt – kein RSA Key) ebenfalls BASE64 codiert - Squeeze
Zertifikat BASE64 codiert (PEM Datei, wobei die Endung keine große Rolle spielt)
Private Key (unverschlüsselt – kein RSA Key) ebenfalls BASE64 codiert
Zertifikatskette (wenn vorhanden) ebenfalls BASE64 codiert.
WennDer Zertifikatsspeicher (PFX) bzw. das Zertifikat,Zertifikat muss mindestens mit dem Signaturalgorithmus SHA-256 signiert sein.
Es kann bei veraltet konfigurierten CAs (Certificate Authority) vorkommen, dass ein Exportvorgang mit SHA-256 erfolgreich abgeschlossen, das Zertifikat jedoch immer noch mit SHA-1 signiert wurde. SHA-1 gilt seit 2017 als NICHT SICHER!
Der Kunde soll einen PFX Zertifikatsspeicher bereitstellen und das Passwort mitteilen. Gegebenenfalls wird im DEXPRO-Ordner bereits der Unterordner OpenSSL ausgeliefert. Der Ordner enthält die Zertifikatsketteopenssl.exe sowieund 2 DLL's sowieeine ExtractPfx.bat. In der privateBAT-Datei Schlüsselmüssen eineslediglich PFXder ZertifikatsspeichersDateiname, fürdas etwaPasswort und der Pfad angepasst werden. Die PFX-Datei muss in den TomcatUnterordner oder"IN" den Apache Webserver benötigt wird, kann diese Batch ausgeführtabgelegt werden. Dazu müssen die folgenden Variablen innerhalb der Batch ausgetauscht werden
SETREM OPENSSL=D:\DEXPRO\TOOLS\OPENSSL\openssl.exeVARIABLES TO SET!
SET PFXFILE=D:\DEXPRO\ZERTIFIKATE\ORIGINALS\Kundenzertifikat.FILENAME=cert.pfx
SET OUTPUTFOLDER=D:\DEXPRO\ZERTIFIKATE\OUT\PW=mySecretPW
SET OUTPUTFILENAME=KONVERTIERTES_KUNDENZERTIFIKAT
SET REMOVEPASSPHRASE=truePATH=D:\Documents5\DEXPRO\OpenSSL\
Durch die Extraktion werden die folgenden Dateien erstellt:
- Das eigentliche Zertifikat ist die
.crtDatei. - Der Private Key (mit PEM-Passphrase) ist
.keyDatei. - Die Zertifikatskette ist die
_chain.pemDatei, wenn diese leer ist, dann gibt es keine weitere Kette. - Der Private Key (ohne PEM-Passphrase) ist die
_nopass.keyDatei.
Bei allen Dateien müssen die von openssl generierten Informationen entfernt werden. Der folgende Code kann in eineDie ExtrctPfx.bat kopiertsollte mit Administrator-Berechtigungen ausgeführt werden. Das Ergebnis sollte wie im folgenden Screenshot zu sehen aussehen.
@ECHO
offDie ECHOkonvertierte -crt-Datei -enthält -nur -zusätzliche -Informationen, -welche -manuell -aus -der -Datei -gelöscht -werden -müssen.
- - - - - - - - - - - -
REM VARIABLES TO SET!
SET OPENSSL=D:\DEXPRO\TOOLS\OPENSSL\openssl.exe
SET PFXFILE=D:\DEXPRO\ZERTIFIKATE\ORIGINALS\KUNDENZERTIFIKAT.pfx
SET OUTPUTFOLDER=D:\DEXPRO\ZERTIFIKATE\OUT\
SET OUTPUTFILENAME=KONVERTIERTES_KUNDENZERTIFIKAT
REM REMOVE PEM PASSPHRASE? -> TRUE / FALSE
SET REMOVEPASSPHRASE=true
REM START DER EXTRAKTION
ECHO EXTRACTION OF THE INDIVIDUAL COMPONENTS OF A PFX CERTIFICATE STORE
ECHO Setting the variables ...
ECHO openssl.exe: [%OPENSSL%]
ECHO PFX certificate store: [%PFXFILE%]
ECHO Destination folder: [%OUTPUTFOLDER%]
ECHO Destination file name: [%OUTPUTFILENAME%]
ECHO - - - - - - - - - - - - - - - - - - - - - - -
ECHO Checking the variables ...
if exist %OPENSSL% (
ECHO openssl.exe found
) else (
ECHO openssl.exe [%OPENSSL%] not found - please adjust the path!
goto ERROREND
)
if exist %PFXFILE% (
ECHO Customer certificate store [%PFXFILE%] found
) else (
ECHO Customer certificate store [%PFXFILE%] not found - please adjust the path!
goto ERROREND
)
if exist %OUTPUTFOLDER% (
ECHO Destination folder [%OUTPUTFOLDER%] found
) else (
ECHO Destination folder [%OUTPUTFOLDER%] not found - please adjust the path!
goto ERROREND
)
if "%OUTPUTFILENAME%"=="" (
ECHO No destination filename was specified!
goto ERROREND
)
ECHO - - - - - - - - - - - - - - - - - - - - - - -
ECHO Start extraction ...
ECHO PRIVATE KEY EXTRACTION
%OPENSSL% pkcs12 -in %PFXFILE% -nocerts -out %OUTPUTFOLDER%%OUTPUTFILENAME%.key
ECHO CERTIFICATE EXTRACTION
%OPENSSL% pkcs12 -in %PFXFILE% -clcerts -nokeys -out %OUTPUTFOLDER%%OUTPUTFILENAME%.crt
ECHO CERTIFICATE CHAIN EXTRACTION
%OPENSSL% pkcs12 -in %PFXFILE% -cacerts -nokeys -chain -out %OUTPUTFOLDER%%OUTPUTFILENAME%_chain.pem
REM REMOVE PEM PASSPHRASE
IF "%REMOVEPASSPHRASE%"=="true" (
ECHO REMOVE PEM-PASSPHRASE
%OPENSSL% rsa -in %OUTPUTFOLDER%%OUTPUTFILENAME%.key -out %OUTPUTFOLDER%%OUTPUTFILENAME%_nopass.key
) ELSE (
ECHO PEM-Passphrase is not removed
)
GOTO END
:END
ECHO - - - - - - - - - - - - - - - - - - - - - - -
ECHO EXTRACTION COMPLETED!
ECHO - - - - - - - - - - - - - - - - - - - - - - - - -
PAUSE
EXIT
:ERROREND
ECHO - - - - - - - - - - - - - - - - - - - - - - -
ECHO EXTRACTION FAILED!
ECHO PLEASE CHECK ALL PARAMETERS!
ECHO - - - - - - - - - - - - - - - - - - - - - - - - -
PAUSE
EXIT

