CRM/SRM - VNSGmagazine.nl

Tips & Tricks – SSL Communicatie
SSL Communicatie
Introductie
Met een SAP CRM systeem is het mogelijk om communicatie met webservices mogelijk te
maken. Of het nu gaat om webservices, die we ter beschikking stellen of het gaat om
webservices die we consumeren (client proxy’s).
Natuurlijk willen we deze services voorzien van een goede beveiliging. Nu is het inrichten
van een SSL beveiliging niet een van de moeilijkste zaken, echter als men gebruik wil maken
van bijvoorbeeld een X.509 certificaat beveiliging, dan wordt het een erg complexe zaak.
Daarbij komt nog, dat veel systemen, gebaseerd op Windows, certificaten leveren, die niet
direct in SAP kunnen worden gebruikt. Veelal zijn dit al ondertekende certificaten en dan is SAP
weerbarstig bij de import en gebruik ervan.
Met deze tip wordt een eenvoudige wijze van SSL beveiliging verzorgd, zonder al te
complexe certificaat handelingen. Voor deze beveiliging is het aanpassen van de WSDL niet
nodig.
Uitleg
Bij bepaalde webservices dient het inloggen (op de server) te worden beveiligd met een
X.509 certificaat. Daarbij wordt het X.509 certificaat niet gebruikt voor het versleutelen van de
gegevensstroom maar alleen om toegang te verkrijgen tot de webservice.
De toegang wordt daarbij verkregen via het gebruik van een SSL verbinding. Ook hierbij zijn
X.509 certificaten betrokken. In SAP worden X.509 certificaten bewaard in een ‘Personal
Security Environment’, afgekort ‘PSE’. Deze PSE’s worden op hun beurt weer onderhouden via
de SAP transactie STRUST.
Normaliter legt men een nieuwe PSE aan vanuit STRUST waarbij een eigen certificaat wordt
gegenereerd (zelf ondertekenend) dat men kan laten ondertekenen door een Certificaat
Autoriteit (CA) om een bepaalde vertrouwdheid te bemachtigen.
SAP’s transactie STRUST is voor dit soort transacties voldoende uitgerust. Wanneer echter
een volledig ondertekend certificaat wordt ontvangen van een partij, dat schiet de functionaliteit
van STRUST soms te kort.
VNSG magazine jaargang 18 NR. 4  DECEMBER 2014
Blad 1
Tips & Tricks - SSL Communicatie
SAP heeft ervoor gekozen PSE’s op twee plaatsen afzonderlijk te bewaren en te
onderhouden. Vanuit de database en vanaf het OS. Daarbij dienen deze PSE’s op beide
locaties gelijk met elkaar te zijn.
Het is weliswaar niet mogelijk om via de transactie STRUST een ondertekend certificaat te
gebruiken om een PSE aan te leggen maar dit kan wel op OS niveau. Wel dient men deze PSE
daarna te kunnen registreren in de database wil men deze PSE als valide beschouwen binnen
het SAP systeem.
De methode om met een gesigneerd certificaat een PSE aan te leggen is gebaseerd op drie
handelingen en wat voorbereiding.
0. Voorbereidingen;
1. Registreren PSE in STRUST;
2. Aanleggen PSE op OS-niveau;
3. Registreren PSE op OS-niveau in database.
Voorbereidingen
Er zijn een paar zaken, die vooraf geregeld moeten zijn op het SAP CRM applicatieserver,
waar met de webservices wordt gecommuniceerd en die qua communicatie beveiligd moeten
worden.
1. De SAP Cryptographic Library moet zijn geïnstalleerd. Dat is een taak voor basis
beheer. Voor meer informatie kunt u de volgende SAP help pagina raadplegen:
http://help.sap.com/saphelp_nw73/helpdata/en/d3/62453cc7f35d0ee10000000a11405a/content.htm
2. De standaard certificaat sleutellengte van SAP staat op 1024 bytes. Echter de uitgevers
van certificaten eisen tegenwoordig een minimum sleutellengte van 2048.
Als u uw certificaten moet laten ondertekenen door een externe partij dan moet de
profielparameter sec/rsakeylengthdefault (SAP Instance profile) worden ingesteld. Zet
deze parameter in het profiel dan op de waarde 2048.
Ook dit is een taak voor basis beheer.
3. Op de applicatie server zelf privé en publiek sleutel paar aanwezig en een publiek
sleutel certificaat. Dit is op OS niveau geregeld. Als dat niet het geval is, moet systeem
beheer dit alsnog regelen, omdat SSL zijn bescherming bepaalt aan de hand van het
publiek sleutel certificaat.
De applicatieserver heeft dus een sleutel paar met certificaat nodig om zichzelf als server te
identificeren en een sleutel paar met certificaat nodig om zich als client te identificeren voor
binnenkomende met SSL beveiligde verbindingen.
VNSG magazine jaargang 18 NR. 4  DECEMBER 2014
Blad 2
Tips & Tricks - SSL Communicatie
4. Het ondertekende certificaat, dat is ontvangen van de partij, waarmee communicatie via
webservices wordt opgezet, moet op de server in de beveiligde store zijn opgenomen
(op OS niveau).
Er is een template met beschrijving beschikbaar voor het (deels) automatisch configureren in
de SAP Support Portal:
http://service.sap.com/instguides
Volg de navigatie:
SAP Business Suite Applications  Cross-Application Tools  Automated Configuration
Hier vindt u de pdf: Guide for Automated Config.: SSL Validation (ABAP and J2EE)
Registratie PSE in STRUST
Via transactie STRUST moeten we een PSE registreren. Kies een eigen ID.
Door een gekozen naam, wordt ook de fysieke naam van de PSE bekend.
Als voor een nieuwe SSL-client ID de naam CUSTOM wordt gekozen, dan wordt op OS
niveau in de sec sub-map van DIR_INSTANCE een bestand met de naam
SAPSSLCUSTOM.PSE worden aangelegd.
De gekozen omschrijving komt in de navigatieboom van transactie STRUST terug.
Hiervan is om begrijpelijke redenen geen schermafdruk.
VNSG magazine jaargang 18 NR. 4  DECEMBER 2014
Blad 3
Tips & Tricks - SSL Communicatie
Aanleggen PSE op OS niveau
Op OS-niveau heeft SAP een uitvoerbaar programma beschikbaar om PSE’s te
onderhouden: SAPGENPSE.EXE.
Één van de argumenten van SAPGENPSE is het argument ‘import_p8’. Hiermee kan men
een PKCS#8 certificaat importeren. PKCS#8 is een manier om private sleutels te bewaren.
(PKCS = Public-Key Cryptography Standard, gepubliceerd door de RSA Laboraties.)
Men kan een PSE aanleggen op basis van een ondertekend certificaat d.m.v. de private
sleutel van dit ondertekende certificaat, het certificaat zelf en alle voorloper certificaten in de
‘ketting van vertrouwen’ (Chain of Trust) als argumenten op te geven bij de uitvoer van het
uitvoerbare programma SAPGENPSE.
Hieronder de opsomming van de argumenten waarvan een aantal optioneel zijn voor ons
doel. Deze behoren specifiek toe aan SAPGENPSE met argument ‘import_p8’.
-v (Optionele optie: verklaring tonen van de uitgevoerde werkzaamheden)
-x (Optionele optie: pincode/wachtwoord voor de nieuwe PSE. Indien niet gegeven wordt
hier interactief om gevraagd)
-p bestand (Opgave van de naam van de aan te leggen PSE)
-c map locatie + bestand (Opgave van de locatie van het ondertekende certificaat)
-r map locatie + bestand (Opgave van de locatie van een voorloper certificaat. Dit argument
kan tot 10 keer opgegeven worden)
Naam van het PKCS#8 certificaat.
Gebruik: sapgenpse import_p8 [options] [-c <cert-file>] [-r <cert-file(s)>] <private-key-file>
Als u goed heeft gekeken, dan ziet u, dat er een <private-key-file> wordt verwacht. Hoe vindt
men de private sleutel van het ondertekende certificaat?
Men kan de private sleutel uitsluitend uit het ondertekende certificaat halen wanneer het
certificaat dit toestaat. Dat is in het certificaat aangegeven. Als dat niet het geval is, houdt het
hier voor u op. De leverende partij, die de certificaten beschikbaar stelt, zal u de beschikking
moeten geven over de private sleutel, wil dit in SAP kunnen worden gerealiseerd. Dat kan,
doordat zij zelf de sleutel exporteren in een .pfx bestand.
VNSG magazine jaargang 18 NR. 4  DECEMBER 2014
Blad 4
Tips & Tricks - SSL Communicatie
Wanneer dit wel toegestaan wordt door het certificaat dan is het mogelijk dit bijvoorbeeld via
de certificaat manager van Microsoft Windows (certmgr.msc) te exporteren. Het certificaat zal te
vinden zijn in de sectie ‘Persoonlijk’.
Deze geëxporteerde private sleutel is in PKCS#12 formaat (.pfx).
Men zal deze dienen te converteren naar PKCS#8 formaat (.pem).
Hiervoor heeft u een gereedschap nodig, die dat kan. Een prima gereedschap is XCA (X
Certificate and Key Management) en die is via internet te downloaden.
Voorloper certificaten kan men vaststellen door het gesigneerde certificaat in de certificaat
manager van Microsoft Windows te bekijken. Identificeer deze en haal alle voorloper certificaten
op en bewaar ze op OS-niveau. Bewaren kan door de certificaten via de certificaat manager te
exporteren naar een bestand (elk certificaat zijn eigen bestand).
Het is mogelijk, dat de leverende partij een of meerdere voorloper certificaten heeft geleverd.
Eventueel meegeleverde CA certificaten zijn op dit punt nog niet nodig voor het commando.
Denk eraan, dat onze PSE in STRUST de ID had van CUSTOM.
Stel het te importeren certificaat heet: CERTIFICATE.cer.
Stel het voorloper certificaat heet: ROOT.cer.
Stel het bestand met de private sleutel heet: CERTIFICATE.pem.
Dan kunnen we nu met SAPGENPSE de PSE aanleggen met het volgende commando.
sapgenpse import_p8 –v –p SAPSSLCUSTOM.pse –c <dir>\CERTIFICATE.cer
–r <dir>\ROOT.cer <dir>\CERTIFICATE.pem
hierbij wordt <dir> vervangen door de map locatie <drive>:\usr\sap\ABC\DVEBMGS00\sec .
Omdat hierbij geen –x optie is meegegeven, krijgt u de vraag om een pincode/wachtwoord:
Please enter PSE PIN/Passphrase:
Door op [ENTER] te drukken passeert u deze vraag.
Please reenter PSE PIN/Passphrase:
Door op [ENTER] te drukken passeert u deze vraag.
Daarna volgt een waarschuwing, als u geen PIN heeft opgegeven.
VNSG magazine jaargang 18 NR. 4  DECEMBER 2014
Blad 5
Tips & Tricks - SSL Communicatie
U krijgt een soortgelijk resultaat als hieronder (geanonimiseerd):
e
LET OP  Maak een kopie van de tekst na de 1 Subject regel in dit resultaat.
In het commando venster zal dit mogelijk meerdere regels beslaan.
Nu zal het certificaat in de PSE zitten, echter als we in SAP kijken met de transactie
STRUST, dan is deze nog niet zichtbaar.
Registreren PSE op OS-niveau in database
Omdat we SAPGENPSE hebben gebruikt, is het certificaat wel in het OS beschikbaar, maar
nog niet in de database. STRUST kijkt voornamelijk naar de database.
Gelukkig heeft SAP hiervoor een oplossing.
VNSG magazine jaargang 18 NR. 4  DECEMBER 2014
Blad 6
Tips & Tricks - SSL Communicatie
Gebruik hiervoor transactie SE37 met de standaard SAP functiebouwsteen
SSFPSE_STORE.
Schakel de checkbox Uppercase/Lowercase in.
Parameternaam
FNAME
PSEPIN
PSENAME
ID
HOST
INSTANCEID
TYPE
FORMAT
B_NEWDN
B_CLEANUP
B_DISTRIBUTE
Inhoud
Naam van de gegenereerde PSE (met volledig pad naar sec map/directory)
Als u een PIN heeft opgegeven, dient u die hier te vullen
Naam van de gegenereerde PSE (alleen bestandsnaam)
De ID zoals die bij de generatie via SAPGENPSE zichtbaar is geworden (1e subject)
De instance van het SAP systeem (zoals bekend bij de inlog van SAP)
PSE
RAW
X
X
Met deze bouwsteen wordt de PSE op OS niveau gesynchroniseerd in de SAP database en
daardoor is het certificaat zichtbaar geworden in STRUST.
Voor meer informatie wordt verwezen naar SAP Note 518185 (Trust Manager - Creating
SSL certificates with complex DN).
VNSG magazine jaargang 18 NR. 4  DECEMBER 2014
Blad 7
Tips & Tricks - SSL Communicatie
Om het certificaat echter bruikbaar te maken in STRUST, moeten de meegeleverde CA
certificaten in met transactie STRUST bij de aangelegde PSE worden geïmporteerd.
Na de import zijn de geïmporteerde certificaten bij de PSE toegevoegd.
Ook moet u de voorloper certificaten hiermee importeren.
Hiermee zijn de stappen om de certificaten voor SSL communicatie gereed. Het
geïmporteerde certificaat met de CA en voorloper certificaten worden gebruikt voor de
communicatie met de partij, die de certificaten heeft geleverd.
VNSG magazine jaargang 18 NR. 4  DECEMBER 2014
Blad 8
Tips & Tricks - SSL Communicatie
Bent u er dan?
Voor wat betreft de inrichting van SSL met reeds ondertekende certificaten wel, maar voor
gebruik met webservices nog niet. Om gebruik te maken van webservices, die worden beveiligd
met de geleverde certificaten, heeft SAP nog een issue.
Webservice koppelen aan deze PSE
In SOAMANAGER kunt u niet aangeven, dat een webservice endpoint gebruik moet maken
van een specifieke PSE. Dus onze specifieke PSE kan niet worden gekozen.
Daarvoor zou u de WSDL moeten aanpassen en dat is een moeilijk karwei.
Om die reden vallen we terug op een “oude” manier.
We maken een RFC verbinding van het type G (HTTP-verbinding met externe server).
Van de leverancier van de webservice heeft u bepaalde gegevens nodig. Die zijn uit de
WSDL te halen.
Veld
Doelhost
Servicenr.
Pad prefix
Aanmeldprocedure
SSL
SSL-clientcertificaat
Gebruiker
Password
Tabblad
Technische instellingen
Technische instellingen
Technische instellingen
Aanmelding/beveiliging
Aanmelding/beveiliging
Aanmelding/beveiliging
Aanmelding/beveiliging
Aanmelding/beveiliging
Inhoud / Beschrijving
Naam van de host waar de webservice is
Service nummer van de webservice
Pad prefix waar de webservice gebruik van maakt
Standaard verificatie
Actief
Kies uit de drop-down lijst uw eigen PSE
Logon gebruiker
Logon password
Genereer de webservice (via transactie SE80).
Volg de wizard. Er is geen actie nodig in SOAMANAGER.
VNSG magazine jaargang 18 NR. 4  DECEMBER 2014
Blad 9
Tips & Tricks - SSL Communicatie
Onder normale condities zou in SOAMANAGER een endpoint voor de webservice worden
aangelegd, maar dat doen we in dit speciale geval niet.
We gebruiken de “ouderwetse” transactie LPCONFIG hier.
Druk op [ENTER].
Vul de naam in van de proxy klasse van de gegenereerde webservice.
Vul de gewenste naam in van de logische poort.
Zet de checkbox Defaultpoort aan.
Druk op de [CREATE] knop en bevestig de dialoog.
Dat is alles.
Deze tip is aangeleverd door Superp Technology Consultants BV (http://www.superp.nl/).
Voor vragen of extra informatie over dit onderwerp kunt u via email contact opnemen met
Robbie Veenstra (mailto:[email protected]).
VNSG magazine jaargang 18 NR. 4  DECEMBER 2014
Blad 10