fb
WSO2 7 minuten

Hoe patch je de open source versie van de WSO2 API Manager?

Rob Blaauboer
Rob Blaauboer
Integration Consultant & WSO2 Trainer
Blog Patch open source API
Scroll

WSO2 biedt een volledige stack aan open source producten waarmee je API management, berichtbemiddeling en -transformatie kunt regelen in de WSO2 Enterprise Integrator, identiteits- en toegangsbeheer doet met de WSO2 Identity Server en tot slot stream processing door de WSO2 Stream Processor te gebruiken.

Wat er zo speciaal is aan WSO2, is dat het open source is. De broncode is volledig zichtbaar en kan gedownload worden van de WSO2 GitHub pagina om die vervolgens te compileren, aan te passen, controleren en zelf te gebruiken. Zoals bij alle software zal er af en toe een veiligheidsbulletin uitkomen waarin je gewaarschuwd wordt voor ontdekte kwetsbaarheden. Het is vervolgens aan jou om de patch toe te passen en de kwetsbaarheden te ondervangen zodat je veilig blijft. In de meeste gevallen zijn deze zwakheden niet vergelijkbaar met een wijd openstaande achterdeur. Vaak gaat het om kwetsbaarheden waar in een situatie A binnen een specifieke omgeving B en met instellingen C iemand die D probeert toegang kan krijgen. Hiermee wil ik het belang van veiligheidsbulletins niet onderuit halen, want de dingen die genoemd worden horen wel degelijk serieus genomen te worden.

Open source tegenover productondersteuning

WSO2 kan gedownload en gebruikt worden zonder dat je daar ooit kosten voor in rekening gebracht krijgt. Maar in dat geval ontvang je geen support van WSO2 wat betreft de (beveiligings)patches voor de producten vanuit de WSO2 Update Manager (WUM).

Met deze tool en een betaald abonnement kun je een basis aan WSO2-producten opbouwen en regelmatig controleren of er nieuwe updates zijn en daarmee een nieuwe, bijgewerkte versie creëren die je kunt uitproberen en vervolgens kunt uitrollen in je IT-landschap. De open source versie wordt regelmatig, iedere drie tot zes maanden, geüpdate. Maar er zijn ook beveiligingspatches die je kunt downloaden en toepassen.

De link naar de beveiligingspatches staat niet zo in het zicht, maar kun je op de WSO2-website vinden in het overzicht met alle producten of in het jaaroverzicht. Hoe werkt het proces vervolgens? Eigenlijk is het proces relatief eenvoudig zoals de flowchart hieronder weergeeft:

yenlo_blog_patch-open-source-wso2-api-manager_figure-1

Er zijn een aantal verschillen in de flow in vergelijking met WUM. WUM neemt alle updates en past ze automatisch toe, je kunt er niet voor specifieke losse updates kiezen. Patches kunnen vervolgens toegepast worden op een bestaande deployment (opnieuw opstarten is vereist).

yenlo_blog_patch-open-source-wso2-api-manager_figure-2

Patching WSO2 API Manager

De WSO2 API Manager 2.6.0 heeft in 2019 een aantal beveiligingsupdates gehad. Laten we er één downloaden en toepassen op de API Manager. 

We runnen nu een Windows Machine voor deze blog en dat is een installatie van een out-of-the-box (open source) API Manager op een desktop. Als we naar de high-level boomstructuur van de API Manager kijken, dan zien we dat de deployment een map met patches bevat:

Bestandsmap van C:UsersrobDesktopAPIMwso2am-2.6.0repositorycomponents

Directory of C:UsersrobDesktopAPIMwso2am-2.6.0repositorycomponents 

10/02/2019  10:28 AM    <DIR>          . 
10/02/2019  10:28 AM    <DIR>          .. 
09/14/2018  08:32 PM    <DIR>          api-key-manager 
09/14/2018  08:32 PM    <DIR>          api-publisher 
09/14/2018  08:32 PM    <DIR>          api-store 
09/14/2018  08:32 PM           247,452 artifacts.xml 
09/06/2018  10:22 AM    <DIR>          default 
09/06/2018  10:06 AM    <DIR>          dropins 
09/06/2018  10:06 AM    <DIR>          extensions 
09/14/2018  08:32 PM    <DIR>          features 
09/14/2018  08:32 PM    <DIR>          gateway-worker 
09/14/2018  08:32 PM    <DIR>          lib 
09/14/2018  08:32 PM    <DIR>          p2 
09/06/2018  10:06 AM    <DIR>          patches 
09/14/2018  08:32 PM    <DIR>          plugins 
09/06/2018  10:06 AM    <DIR>          servicepacks 
10/02/2019  10:29 AM                 0 test.txt 
09/14/2018  08:32 PM    <DIR>          tools 
09/14/2018  08:32 PM    <DIR>          traffic-manager
yenlo_blog_patch-open-source-wso2-api-manager_figure-3

De patch-map kan gevonden worden onder [APIM-HOME]/repository/components.

We downloaden een patch van de WSO2 API Manager pagina en kiezen de nieuwste versie.

Het ZIP-bestand bevat een readme tekstbestand waarin de benodigde stappen, in dit geval ook een handmatige stap, beschreven worden:

Patch ID         : WSO2-CARBON-PATCH-4.4.0-3865 
Applies To       : wso2am-2.6.0 
Associated JIRA  : N/A 

DESCRIPTION 
----------- 
This update provides the ability to perform an intermediate certificate validation for certificate based requests. 

INSTALLATION INSTRUCTIONS 
------------------------- 
NOTE: If you are a WSO2 customer with support subscription, do not apply this patch. Use WSO2 Update Manager (WUM) to receive the same fixes. This patch is applicable to above listed products, only for WSO2 public (free) users. 
- Add the following config to the <APIM_home>/repository/conf/identity/identity.xml file inside the <Server > tag. 
- To enable the intermediate certificate validation change enable="false" to enable="true" as follows <IntermediateCertValidation enable="true">. 
- Add the intermediate certificate CN in the <CertCN> element. Multiple <CertCN> elements can be used for multiple certificates. 
- Add exemptable context paths from this validation in the <Context> element. Multiple <Context> elements can be used for multiple contexts.

     <IntermediateCertValidation enable="false">
     <IntermediateCerts>
       <!--Add intermediate certificate CN. Multiple <CertCN> elements can be used for multiple certificates.-->
       <CertCN>localhost</CertCN>
     </IntermediateCerts>
     <ExemptContext>
       <!--Add exemptable context paths. Multiple <Context> elements can be used for multiple contexts.-->
       <!-- <Context>oauth2</Context> -->
     </ExemptContext>
   </IntermediateCertValidation> 

- The incoming certificate request CN should be the username of the user and the certificate issuer CN should be in a <CertCN> tag. 
- If a context path is required to be exempted from the validation that context can be added with a <Context> tag. 

(i)  Shutdown the server, if you have already started. 
(ii) Copy the patch3865 to  <CARBON_SERVER>/repository/components/patches/ 
(iii) Restart the server with :
        Linux/Unix :  sh wso2server.sh
        Windows    :  wso2server.bat

Zo kun je zien dat we deze update niet zomaar kunnen toepassen. Laten we de API openen:[APIM_home]/repository/conf/identity/identity.xml file

Ik heb de configuratie aan het begin van het bestand toegevoegd, omdat er alleen staat dat het binnen de <Server> tags moet staan:

yenlo_blog_patch-open-source-wso2-api-manager_figure-4

Ik kopieer de patch3865-map naar de patches-map van de API Manager.

Nu is het tijd om de server te starten. Omdat dit Windows is, gebruik ik wso2server.bat.

Console output

Het org.wso2.carbon.server.extensions.PatchInstaller proces is aan het starten.

TID: [2019-10-02 11:04:51,336]  INFO {org.wso2.carbon.server.extensions.PatchInstaller} -  Patch changes detected  {org.wso2.carbon.server.extensions.PatchInstaller} 

TID: [2019-10-02 11:05:11,153]  INFO {org.wso2.carbon.server.util.PatchUtils.console} -  Backed up plugins to patch0000 {org.wso2.carbon.server.util.PatchUtils.console} 

TID: [2019-10-02 11:05:11,304]  INFO {org.wso2.carbon.server.util.PatchUtils.console} -  Patch verification started {org.wso2.carbon.server.util.PatchUtils.console} 

TID: [2019-10-02 11:05:11,393]  INFO {org.wso2.carbon.server.util.PatchUtils.console} -  Patch verification successfully completed. {org.wso2.carbon.server.util.PatchUtils.console}

Dit maakt een referentieversie directorypatch0000 aan, waardoor de patch teruggedraaid kan worden.

yenlo_blog_patch-open-source-wso2-api-manager_figure-5

De API Manager gaat verder met laden en als de Management URL getoond wordt op de console:

TID: [-1234] [] [2019-10-02 11:12:34,320]  INFO {org.wso2.carbon.ui.internal.CarbonUIServiceComponent} -  Mgt Console URL  : https://192.168.2.28:9443/carbon/ {org.wso2.carbon.ui.internal.CarbonUIServiceComponent}

kun je ermee aan de slag.

De patch verwijderen

Als we de patch uit de map verwijderen en de API Manager opnieuw opstarten, herkent het systeem dat de patch verwijderd is en zal het de aangemaakte referentieversie terugzetten. De handmatige wijziging is echter nog wel van kracht.

TID: [2019-10-02 11:27:25,452]  INFO {org.wso2.carbon.server.extensions.PatchInstaller} -  Patch changes detected  {org.wso2.carbon.server.extensions.PatchInstaller}

TID: [2019-10-02 11:27:43,962]  INFO {org.wso2.carbon.server.util.PatchUtils.console} -  Patch verification started {org.wso2.carbon.server.util.PatchUtils.console}

TID: [2019-10-02 11:27:43,967]  INFO {org.wso2.carbon.server.util.PatchUtils.console} -  Patch verification successfully completed. {org.wso2.carbon.server.util.PatchUtils.console}

Conclusie

Het vraagt aandacht en tijd om je open source versies van WSO2 qua beveiligingspatches up-to-date te houden. Het is een belangrijk element in het onderhouden van de veiligheid van je producten. Natuurlijk moeten ook nieuwe versies eerst getest worden, wat normaliter op een test- of proefomgeving gebeurt, voordat de veranderingen in de productieomgeving worden doorgevoerd. Als je een abonnement voor productondersteuning hebt, dan is deze procedure voor jou niet nodig. Je kunt dan gewoon de updates met de WSO2 Update Manager uitvoeren om een nieuwe versie met alle beveiligings- en productpatches te creëren, die je natuurlijk eerst test en dan pas doorzet naar je werkomgeving.

Hulp of meer informatie nodig?

Als je niet wilt wachten op openbare patches of releases en je wilt nieuwe patches direct toepassen, dan ben je wellicht geïnteresseerd in een abonnement op productondersteuning. Yenlo kan je ook helpen met de ondersteuning bij verschillende versies. Lees meer over de support die wij als dienst aanbieden of neem contact op voor meer informatie.