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
] [-r ] <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 \CERTIFICATE.cer –r \ROOT.cer \CERTIFICATE.pem hierbij wordt vervangen door de map locatie :\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