fb
WSO2 7 min

So patchen Sie die Open Source-Version des WSO2 API Manager

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

WSO2 bietet ein komplettes Paket von Open Source-Produkten, mit denen Sie API-Verwaltung, Nachrichtenvermittlung und -umwandlung mit dem WSO2 Enterprise Integrator, WSO2 Identity and Access Management mit dem WSO2 Identity Server und schließlich Stream Processing mit dem WSO2 Stream Processor durchführen können.

Was WSO2 besonders macht, ist, dass es Open Source ist. Der komplette Quellcode kann von der WSO2 GitHub-Seite heruntergeladen werden, um von Ihnen kompiliert, verändert, geprüft und genutzt zu werden. Wie jede Software gibt es von Zeit zu Zeit ein Sicherheitsbulletin, das Sie vor entdeckten Sicherheitslücken warnt. Zur Sicherheit müssen Sie dann einen Patch anwenden, der die Sicherheitslücke schließt. In den meisten Fällen sind diese Sicherheitslücken nicht gleichbedeutend damit, dass Sie eine Hintertür offen lassen. Viele dieser Sicherheitsrisiken sind sehr spezifisch, d.h. eine Situation, nennen wir sie A, in der Umgebung B und mit den Einstellungen C könnte es jemandem, der D versucht, ermöglichen, sich Zugang zu verschaffen. Dies soll nicht den Schweregrad eines Sicherheitsbulletins herunterspielen. Sie müssen diese Dinge ernst nehmen.

Open Source contra Produktsupport

WSO2 kann von jedem heruntergeladen und genutzt werden, ohne dass dafür jemals Kosten anfallen. Allerdings haben Sie in diesem Fall keine Unterstützung von WSO2 in Bezug auf Produkt- und Sicherheitspatches mit dem WSO2 Update Manager (WUM). Mit diesem Tool und einem kostenpflichtigen Produkt-Support-Konto können Sie eine Baseline von WSO2-Produkten erstellen und regelmäßig prüfen, ob es neue Updates gibt, und dann eine neue aktualisierte Version erstellen, die Sie ausprobieren und in Ihrer IT-Landschaft einsetzen können. Für die Open-Source-Version gibt es regelmäßige Updates, etwa alle drei bis sechs Monate. Allerdings gibt es einige Sicherheitspatches, die Sie herunterladen und anwenden können.

Die Links zu den Sicherheitspatches sind etwas schwierig zu finden. Sie können sie auf der Website von WSO2 in einer Übersicht über alle Produkte oder in einer Übersicht pro Jahr finden. Wie läuft der Prozess also ab? Eigentlich ist es ein ganz einfacher Prozess, sehen Sie sich dieses Flussdiagramm an:

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

Es gibt einige Unterschiede zu WUM. WUM übernimmt alle Updates und wendet sie automatisch an, Sie können also nicht nur ein Update auswählen. Patches können auf eine bestehende Bereitstellung angewendet werden (Neustart erforderlich).

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

Patching für WSO2 API Manager

Der WSO2 API Manager 2.6.0 hat 2019 einige Sicherheitsupdates erhalten. Wir werden eines davon herunterladen und es auf den API Manager anwenden. 

Wir arbeiten für diesen Blog auf einem Windows-Rechner und haben einen sofort einsatzbereiten (Open Source) API Manager auf dem Desktop installiert. Ein Blick auf die übergeordnete Baumstruktur des API Managers zeigt uns, dass die Bereitstellung einen Patches-Ordner enthält:

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

Das Patch-Verzeichnis finden Sie unter [APIM-HOME]/repository/components.

Wir haben ein Patch von der WSO2 API Manager-Seite heruntergeladen und das aktuellste ausgewählt.

Die ZIP-Datei umfasst eine Readme-Datei. In dieser Datei werden die Schritte beschrieben und in diesem Fall gibt es einen manuellen Schritt:

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

Sie sehen also, dass wir dieses Update nicht einfach anwenden können. Lassen Sie uns die API öffnen:

API:[APIM_home]/repository/conf/identity/identity.xml file

Ich habe die Konfiguration am Anfang der Datei eingefügt, da sie nur innerhalb des <Server>-Tags stehen muss:

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

Das Verzeichnis patch3865 habe ich in das Verzeichnis patches des APIM-Managers kopiert.

Nun ist es an der Zeit, den Server zu starten. Da es sich um Windows handelt, verwende ich die wso2server.bat.

Konsolen-Ausgabe

Der Prozess org.wso2.carbon.server.extensions.PatchInstaller wird gestartet.

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}

Es wird ein Baseline-Verzeichnispatch0000 erstellt, das ein Rollback des Patches ermöglicht.

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

Der API-Manager wird nun weiter geladen und wenn Sie die Verwaltungs-URL auf der Konsole sehen:

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}

Sie können mit der Arbeit beginnen.

Den Patch entfernen

Wenn wir den Patch aus dem Verzeichnis entfernen und den API Manager neu starten, erkennt das System, dass der Patch entfernt wurde und stellt die von ihm erstellte Baseline wieder her. Die manuellen Änderungen sind jedoch noch intakt.

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}

Fazit

Es erfordert viel Aufmerksamkeit, Ihre Open Source-Versionen von WSO2 auf dem neuesten Stand zu halten, was Sicherheitspatches angeht. Es ist ein wesentliches Element, um Ihre Produkte bestmöglich zu schützen. Die neue Version muss natürlich auch getestet werden, in der Regel in einer Test- oder Abnahmeumgebung, bevor sie in die Produktionsumgebung übernommen wird. Wenn Sie über ein Produkt-Support-Konto verfügen, ist dieses Verfahren nicht für Sie geeignet. Normalerweise würden Sie WSO2 Update Manager-Updates verwenden, um eine neue Version aller Sicherheits- und Produktpatches zu erstellen und diese nach der Konfiguration und den Tests in Ihre Umgebung zu übertragen.

Benötigen Sie Hilfe oder weitere Informationen?

Wenn Sie nicht auf öffentliche Patches oder Releases warten möchten und neue Patches sofort benötigen, dann könnte ein Produkt-Support-Konto für Sie von Interesse sein. Yenlo hilft Ihnen auch mit verschiedenen anderen Support-Versionen. Lesen Sie mehr über unsere Supportdienste oder kontaktieren Sie uns für weitere Informationen.