Wie man den Private Key einer PSE Exportieren kann

Hat man innerhalb eines SAP Systems über die Transaktion STRUST eine neue PSE mit entsprechendem Public und Private Key erstellt ist es über die TX STRUST keine Herausforderung , den Public Key zu exportieren. Aber wie sieht es mit dem Private Key aus? Hier zuckt der geneigte Admin dann nur kurz mit den Achseln und wendet sich anderen Aufgaben zu.

Oder aber er öffnet eine Shell, meldet sich als sidadm am Server an und nutzt sapgenpse zum Exportieren der Informationen. Das funktioniert leider nicht direkt, sondern erfordert einen Zwischenschritt und letztendlich zum Beispiel den Einsatz von openssl.

Zunächst muss die PSE in ein PKCS12 Format exportiert werden. Dies wird hier am Beispiel der SSL Server PSE beschrieben:

sapserver:d01adm 2> sapgenpse export_p12 -p SAPSSLS.pse ssl_server_.p12
Please enter PSE PIN/Passphrase: *********
Please enter PKCS#8 encryption password: *********
For verification, please reenter password: *********
 
!!! WARNING: For security reasons it is recommended to use a PIN/passphrase
!!! WARNING: which is at least 8 characters long and contains characters in
!!! WARNING: upper and lower case, numbers and non-alphanumeric symbols.
sapserver:d01adm 3>

Man benötigt den PIN der PSE Datei um die Daten zu exportieren. Zudem wird nach einem PIN für die Verschlüsslung der neu zu erzeugenden Datei ssl_server_.p12 PKCS12 Datei gefragt. Dieser wird später benötigt, um die PKCS12 Datei entschlüsseln zu können.

Mit Hilfe von openssl wird die PKCS12 Datei ausgelesen und die einzelnen Bestandteile in der Textdatei ssl_server_keys.txt ausgegeben:

sapserver:d01adm 3> openssl pkcs12 -in ssl_server_.p12 -out ssl_server_keys.txt -nodes
Enter Import Password:
MAC verified OK
 
sapserver:d01adm 4>

Innerhalb der Textdatei sind die verschiedenen Keys – hier Private und Public, sowie die Public Keys von ggf. vorhandenen Root CAs enthalten und können im PEM Format direkt weiter verwendet werden. Die Keys sind im Standard jeweils mit Deskriptoren markiert. Der Private Key zum Beispiel ist eingeklammert mit:

-----BEGIN PRIVATE KEY----- // -----END PRIVATE KEY-----

Der Inhalt der Textdatei sieht dann zum Beispiel so aus:

sapserver:d01adm 61> cat ssl_server_keys.txt

sapserver:d01adm 4> cat ssl_server_keys.txt
Bag Attributes
    localKeyID: 01 00 00 00
    friendlyName: SAPSSLS
Key Attributes: <No Attributes>
-----BEGIN PRIVATE KEY-----
MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQDqatLCqBVBqFfw
SkIWuFS/+XB+XLTyS4OJ4H+N49ZxciHNr8pj23pwKEEnVtJsQhKiPP6wEnEpRODe
p7WDKYDK5zCaBbbVd6WSnAyUynZR6FuDeUluE0psC4ZV
YiSY/xOf9x+YNY1kvLT/aSDS60+0/JHl0OVdcsTN/GvhiycmeVyyNeaxSsIpGYbB
W+bxxxjxcPCiYudnsA54mETXwviPOV59tHjzQbQNihsWsjVPAKMalEG5iPGmqRia
ffRJH4RHABUJhgMWUP34r18HYxsyty6s+7X8Oha8wyzeCYKIoxwCFDGxV8cvbwUC
yo+fyHOsxLsOioIbfMz5+XItgL3UpCTY76UT3zZYIRBOPr0CHfwOJWP8F01EyXE0
y5Y3stLu2IYOEX6Ttc+HlzdT0t0/xMDWXQjiyFUinFYTXniGzV1ieU8HSZ62w3aL
+ZmhL+SPaDQFOd5vxYP14QKCAQEA72UOWG+ZdA4nXxG4C2kEHfR/LUDvE+EyDVfx
Xws13fQgwEBQksoXsaCv3wYVgH/evNtsHg7Zbv7lw3SWOfurf61Isrua70oD/hk3
O4as2IN49lIJbSenLhqvmXqzc+0xF2PVEhMpeqiu5i5Q4TNPsyYjE6tmnMMoJ7IH
loEEX0kOEQit65wabD4DISEfa0184XnoPzchhKTSkqn081VMHnKzK4eF/PjSE/ND
+ZkcT5nAiS45sHLCkBBXxhY1qwlmLw==
-----END PRIVATE KEY-----
Bag Attributes
    localKeyID: 01 00 00 00
    friendlyName: SAPSSLS
subject=/C=DE/ST=Hessen/L=Frankfurt am Main/O=Wessel/OU=IT/CN=sapserver.de/emailAddress=mail@sapserver.de
issuer=/CN=Sapserver Issuing CA Server/C=DE/ST=Hessen/L=Frankfurt am Main/O=Wessel/OU=IT/emailAddress=mail@sapserver.de
-----BEGIN CERTIFICATE-----
MIIIJDCCBwygAwIBAgICBPUwDQYJKoZIhvcNAQELBQAwgZ0xIzAhBgNVBAMMGkRl
a2FCYW5rIElzc3VpbmcgQ0EgU2VydmVyMRMwEQYDVQQLDAoyNjExMDQwMDEwMScw
JQYDVQQKDB5EZWthQmFuayBEZXV0c2NoZSBHaXJvemVudHJhbGUxGjAYBgNVBAcM
eNYWX2/hoNSWEWavWGoZvWkcR67HTZs7v8TGXwPGDQxtQmbEAOflhOfv/hZcXmZi
+czmAxDKHq24yxNAVl42mmYSdaE4qJ4rihR1JOsPGaK2FiaMoBjOK5iKBHKaFowf
Y3JsMB8GA1UdEQQYMBaCBnNhcHM5OYIMc2Fwczk5LmYuZGRrMA0GCSqGSIb3DQEB
CwUAA4IBAQAP7/6hCXfBvCxM8L2UMxvcjSg/3+5clnl9k0uK1pkHz7J7crMUsyX6
SHQY10v/nDRoywFM1H/oz4iEHEC64U2A
-----END CERTIFICATE-----
Bag Attributes: <No Attributes>
subject=/C=DE/ST=Hessen/L=Frankfurt am Main/O=Wessel/OU=IT/CN=sapserver.de/emailAddress=mail@sapserver.de
issuer=/CN=Sapserver Issuing CA Server/C=DE/ST=Hessen/L=Frankfurt am Main/O=Wessel/OU=IT/emailAddress=mail@sapserver.de
-----BEGIN CERTIFICATE-----
MIIEMTCCAxmgAwIBAgIGVYQdwTAFMA0GCSqGSIb3DQEBCwUAMFExGTAXBgNVBAMM
BgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwWAYDVR0fBFEwTzBNoEugSYZHaHR0cDov
nwaD42KCTOiZA980Pisv5NqHwJNThu2d6I+dp40bLhIRTqUq+c2996ntE2vuaIj1
AuUCnQxoAqunybr9rlqL5HfcPuizLGJyiXfVKpu/ys6j0Had1+Leomj25DTPdQLp
gQuHuKGI4OBoM00obggWa9doz3J6Cwcxeq6iRmwplmA4tT4A1fIlEj+alYgy5tkP
0PYXpsWOpb/xyMcxJxdgPyzu2PQT
-----END CERTIFICATE-----
Bag Attributes: <No Attributes>
subject=/CN=Sapserver Root CA/O=Wessel/C=DE
issuer=/CN=Sapserver Root CA/O=Wessel/C=DE
-----BEGIN CERTIFICATE-----
/gDuCQkWR+cmVJ3+CHl4qOA6GY6WuGtjtd0o4oHLbkdLHDuojacKzWQalu2iXqLR
W2w0BvHPp14MFLXNPnZJzMMwv2T6OfQXSZNOMn4HmQi5MQvGpenfqkFSXylzykf
SJq1xg6toH+mPdC4K05vIbMkWHbilRD0DqkWxjxiBgVN2E4Be1wr+GmmIdF2DpIF
rmcfHgzgCyaJyL7T
-----END CERTIFICATE-----
sapserver:d01adm 5>

Der Inhalt der hier Ausgegeben Datei ist natürlich bearbeitet und unvollständig und dient lediglich als Beispiel 🙂

Um die PKCS12 im Klarformat auszugeben kann die Textdatei ssl_server_keys.txt erneut mit Hilfe von openssl umgewandelt werden. Die Bereiche zwischen Begin und End Zertifikat werden dann noch entsprechend entschlüsselt.

sapserver:d01adm 5> openssl x509 -in ssl_server_keys.txt  -text -noout
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 1269 (0x4f5)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN=Sapserver Issuing CA Server C=DE ST=Hessen L=Frankfurt am Main O=Wessel OU=IT emailAddress=mail@sapserver.de
        Validity
            Not Before: Mar 18 09:04:36 2019 GMT
            Not After : Mar 17 09:04:36 2022 GMT
        Subject: C=DE, ST=Hessen, L=Frankfurt am Main, O=Wessel, OU=IT, CN=sapserver.de, emailAddress=mail@sapserver.de
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (4096 bit)
                Modulus:
                    4f:0c:ef:48:0e:47:60:60:06:6c:3a:5c:85:25:43:
                    2b:09:9b
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            Netscape Cert Type:
                SSL Client, SSL Server
            X509v3 Key Usage:
                Digital Signature, Non Repudiation, Key Encipherment
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication
            X509v3 CRL Distribution Points:
 
                Full Name:
                  URI:ldap:///CN=…
 
                Full Name:
                  URI:http://sapserver.de….
 
            Netscape Comment:
                DekaBank Issuing CA Server
            X509v3 Subject Key Identifier:
                D3:EC:38:84:B9:34:7C:54:2D´:31:7D:6D:29:82:1E:48
            X509v3 Authority Key Identifier:
                keyid:58:D8:3A:FB:DC:0B:E5:40:45:AC:6F:83:18:89
 
            Netscape CA Revocation Url:
                URI:ldap:///CN=sapserver.de….
            X509v3 Subject Alternative Name:
                DNS:sapserver, DNS:sapserver.sap
    Signature Algorithm: sha256WithRSAEncryption
         18:d7:4b:ff:9c:34:68:cb:01:4c:d4:7f:e8:cf:88:84:1c:40:
         ba:e1:4d:80
sapserver:d01adm 6>

Die PEM Datei kann man dann zum Beispiel nutzen und in einem J2EE Stack das gleiche Zertifikat wie im ABAP Stack importieren. Oder natürlich auch in einem non SAP Webserver wie dem Apache oder IIS nutzen.

About the author