SoapUI Client Zertifikate

Drucken

Webservices setzen sich in der SAP Welt immer stärker durch. Im Gegensatz zu klassischen RFC Verbindungen bedeutet das für Administratoren und Entwickler einen höheren Konfigurationsaufwand. Insbesondere die Verwendung von Client Zertifikaten zur Authentifizierung von Benutzern will sauber aufgesetzt werden. Häufig übersieht man dabei einen entscheidenden Aspekt. Wie bestimmt der Client das zu sendende Zertifikat? Dieser Artikel gibt einen Überblick wie man hierfür SoapUI als einfache Testumgebung für SAP Webservices nutzen kann.

Die Einrichtung der Service Runtime im Netweaver bietet Stoff für einen eigenen Artikel. Daher seien an dieser Stelle nur stichpunktartig die wichtigsten Konfigurationsaufgaben gelistet, damit HTTPS für Webservices genutzt werden kann.

Auf dieser Grundlage kann ein SSL basierter Webservice Endpunkt angelegt werden, der eine Client Authentifizierung erfordert. Für unser Testszenario reicht die Datenverschlüsselung über HTTPS - die sogenannte Transportverschlüsselung. Die alternative Verschlüsselung auf Nachrichtenebene wird nicht weiter betrachtet.

 

Mit dieser Einstellung sendet der Server während der Anmeldephase für den gewählten Endpunkt dem Client eine CertificateRequest Nachricht. Darin ist eine Liste der CAs enthalten, denen der Server traut. Auf dieser Basis wählt der Client idealerweise das eine Anmeldezertifikate aus seiner privaten Liste, das von einem der CAs signiert wurde. Mehr Details in dieser Abhandlung. Das heißt für unser Szenario:

Dabei ist es egal, ob Server und Client von ein und der selben oder unterschiedlichen CAs signiert wurden. Ein SAP System vertraut automatisch den CAs unter denen die servereigenen Zertifikate signiert wurden. Andere vertrauenswürdige CAs können zusätzlich manuell importiert werden. Im folgenden wird der Einfachheit halber davon ausgegangen, dass beide Seiten mit der gleichen CA arbeiten. Will man Geld sparen, so kann man sich mit openssl und wenigen Handgriffen eine eigene CA generieren.

> openssl genrsa -des3 -out ca.key 4096
Generating RSA private key, 4096 bit long modulus
...................................................++
.........................++
e is 65537 (0x10001)
Enter pass phrase for ca.key:
Verifying - Enter pass phrase for ca.key:

> openssl req -new -x509 -days 365 -key ca.key -out ca.crt
Enter pass phrase for ca.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:DE
State or Province Name (full name) [Some-State]:NRW
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Collogia
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:CollogiaCA
Email Address []:

> ls -al
total 16
drwxr-xr-x  2 ssmadm sapsys 4096 Jun  6 20:46 .
drwxr-xr-x 17 ssmadm sapsys 4096 Jun  6 20:45 ..
-rw-r--r--  1 ssmadm sapsys 2033 Jun  6 20:46 ca.crt
-rw-r--r--  1 ssmadm sapsys 3311 Jun  6 20:46 ca.key

Nachdem mit der Transaktion STRUST ein Certificate Signing Request für das HTTPS Server Zertifikat erstellt wurde, kann dieser mit der CA signiert werden.

> openssl x509 -req -days 365 -in sao.csr -CA ca.crt \
-CAkey ca.key -set_serial 01 -out sap.crt
Signature ok
subject=/O=HTTPS/CN=colvm02.collogia.de
Getting CA Private Key
Enter pass phrase for ca.key:

Das CA Zertifikat importiert man mittels Transaktion STRUST in die SAP Zertifikatsdatenbank und liest anschließend die Zertifikatsantwort ein.

Auf SoapUI Client Seite muss ein Personal Information Exchange (PFX) Zertifikat bereitgestellt werden. Dabei handelt es sich um ein Paket bestehend aus einem privaten Schlüssel, dem zugehörigen signierten Zertifikat sowie der ausstellenden CA. Hier helfen openssl sowie das bereits existierende CA weiter.

> openssl genrsa -des3 -out soapui.key 4096
Generating RSA private key, 4096 bit long modulus
.....................................++
e is 65537 (0x10001)
Enter pass phrase for soapui.key:
Verifying - Enter pass phrase for soapui.key:
colvm02:ssmadm 113> openssl req -new -key soapui.key -out soapui.csr
Enter pass phrase for soapui.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:DE
State or Province Name (full name) [Some-State]:NRW
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Collogia
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:soapui
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

> openssl x509 -req -days 365 -in soapui.csr -CA ca.crt \
-CAkey ca.key -set_serial 01 -out soapui.crt
Signature ok
subject=/C=DE/ST=NRW/O=Collogia/CN=soapui
Getting CA Private Key
Enter pass phrase for ca.key:

> openssl pkcs12 -export -out soapui.pfx -inkey soapui.key \
-in soapui.crt -certfile ca.crt
Enter pass phrase for soapui.key:
Enter Export Password:
Verifying - Enter Export Password:

> ls -al
total 40
drwxr-xr-x  2 ssmadm sapsys 4096 Jun  6 21:14 .
drwxr-xr-x 17 ssmadm sapsys 4096 Jun  6 20:45 ..
-rw-r--r--  1 ssmadm sapsys 2033 Jun  6 20:46 ca.crt
-rw-r--r--  1 ssmadm sapsys 3311 Jun  6 20:46 ca.key
-rw-r--r--  1 ssmadm sapsys 1781 Jun  6 21:14 soapui.crt
-rw-r--r--  1 ssmadm sapsys 1643 Jun  6 21:14 soapui.csr
-rw-r--r--  1 ssmadm sapsys 3311 Jun  6 21:13 soapui.key
-rw-r--r--  1 ssmadm sapsys 5533 Jun  6 21:14 soapui.pfx

Die PFX Datei wird SoapUI unter Einstellung - SSL Settings inklusive Exportpasswort bereitgestellt und die Option für die Übermittlung von Clientzertifikaten aktiviert. Es ist anzumerken, dass der in älteren Internetartikeln häufig erwähnte VM Parameter sun.security.ssl.allowUnsafeRenegotiation aktuell nicht mehr gebraucht wird.

Als letzter Schritt fehlt die Zuordnung zu einem SAP Benutzer. Nostalgische Gefühle machen sich breit, wenn man den antiquierten Pflegedialog der Tabelle VUSREXTID betritt. Im Arbeitsbereich DN (X509 Zertifikate) wird das SoapUI Zertifikat importiert.

Tags: , , , ,