Edge for Private Cloud auf FIPS-fähigem RHEL 8.X oder Rocky 8.X

Dieser Abschnitt enthält eine Anleitung zum Aktivieren des FIPS-Modus unter RHEL 8, um eine sichere und konforme Umgebung für Edge for Private Cloud-Versionen 4.53.00 oder höher zu gewährleisten.

Vorabinstallation

Achten Sie darauf, dass FIPS auf Ihren Knoten aktiviert ist, zusammen mit den anderen Standardkonfigurationsvoraussetzungen, die in der Dokumentation Edge-Installation – Übersicht aufgeführt sind.

fips-mode-setup --check  
FIPS mode is enabled.  # Command output

Wenn der FIPS-Modus derzeit deaktiviert ist, finden Sie in der offiziellen Red Hat-Dokumentation eine Anleitung zum Aktivieren: RHEL 8 in den FIPS-Modus wechseln.

Java-Anforderungen

Das verwendete Java sollte aus dem Repository von Red Hat heruntergeladen werden, damit die Sicherheitsmodule FIPS-konform sind und FIPS-spezifische Einschränkungen über die Java-Sicherheit ermöglicht werden.

Installation

Legen Sie in der Referenz zur Edge-Konfigurationsdatei FIPS_OS=true auf jedem Knoten fest. Sie können wie gewohnt die allgemeinen Installationsschritte für Edge for Private Cloud ausführen.

Format für privaten Schlüssel

Nur das PKCS12-/PFX-Format kann verwendet werden, um private Schlüssel in Apigee-Keystores hochzuladen, die in Ihren API-Proxys oder virtuellen Hosts verwendet werden sollen. Eine Anleitung zum Erstellen der Datei finden Sie unter Zertifikate in ein unterstütztes Format konvertieren.

Allgemeine TLS-Vorgänge

Wenn Sie Edge for Private Cloud 4.53.00 oder höher auf FIPS-fähigen RHEL 8.X oder Rocky 8.X verwenden, müssen die meisten TLS-bezogenen Komponentenkonfigurationen von Edge über PKCS12- oder BCFKS-Format-Keystores erfolgen.

Weitere Informationen zur TLS-Konfiguration finden Sie in der FIPS-spezifischen Dokumentation oder in den entsprechenden Artikeln. Im Anhang finden Sie einige hilfreiche Befehle, mit denen sich diese Schlüsselspeicher generieren lassen.

Standard-Java-Keystore/Truststore

Wenn Edge for Private Cloud 4.53.00 oder höher auf FIPS-fähigen RHEL 8.X oder Rocky 8.X verwendet wird, nutzen der Message Processor, der Management Server und andere edge-*-Komponenten einen standardmäßigen Truststore und Keystore, die mit dem Produkt bereitgestellt werden.

Sie enthalten CA-Zertifikate, denen Ihre Anwendung standardmäßig vertraut. Wenn Sie Ihren eigenen Speicher mit CA-Zertifikaten verwenden möchten, gehen Sie so vor:

  1. Erstellen Sie eine cacerts-Datei im BCFKS-Format, die alle Zertifizierungsstellenzertifikate enthält, denen Sie vertrauen möchten. Achten Sie darauf, dass das Passwort für den Schlüsselspeicher und das Passwort für den Schlüssel identisch sind. Weitere Informationen finden Sie im Anhang.
  2. Legen Sie die Datei in einem geeigneten Pfad ab und sorgen Sie dafür, dass sie vom Apigee-Nutzer gelesen werden kann:
    cp my-cacerts.bcfks /opt/apigee/customer/application/my-cacerts.bcfks
    chown apigee:apigee /opt/apigee/customer/application/my-cacerts.bcfks
  3. Erstellen oder bearbeiten Sie die entsprechende Konfigurationsdatei basierend auf der Komponente, mit der Sie arbeiten:
    Komponente Datei
    edge-management-server $/opt/apigee/customer/application/management-server.properties
    edge-message-processor $/opt/apigee/customer/application/message-processor.properties
    Edge-Router $/opt/apigee/customer/application/router.properties
    edge-postgres-server $/opt/apigee/customer/application/postgres-server.properties
    edge-qpid-server $/opt/apigee/customer/application/qpid-server.properties
  4. Fügen Sie der Datei die folgenden Zeilen hinzu:
    conf_system_javax.net.ssl.trustStore=<PATH to bcfks cacerts>
    conf_system_javax.net.ssl.trustStorePassword=changeme
    conf_system_javax.net.ssl.keyStore=<PATH to bcfks cacerts>
    conf_system_javax.net.ssl.keyStoreType=BCFKS
    conf_system_javax.net.ssl.keyStorePassword=changeme
  5. Prüfen Sie, ob die Konfigurationsdatei dem Apigee-Nutzer gehört und von ihm gelesen werden kann:
    chown apigee:apigee $opt/apigee/customer/application/<file>.properties
  6. Starten Sie die Komponente neu:
    /opt/apigee/apigee-service/bin/apigee-service <component> restart

Anhang

Beispielbefehle für BCFKS-Schlüsselspeicher

Mit dem folgenden Befehl wird ein BCFKS-Keystore mit einem selbst signierten Schlüssel- und Zertifikatpaar generiert:

keytool -genkeypair -keyalg RSA -alias node0 -validity 365 -keystore keystore.node0 \
-storepass keypass -keypass keypass -v \
-dname "EMAILADDRESS=youremail@domain.com, CN=yourcn, OU=yourou, O=youro, L=yourl, C=yourc" \
-storetype BCFKS -providerpath /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar \
-providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -providername BCFIPS

Keytool-Befehle bleiben mit den üblicherweise verwendeten Befehlen konsistent, aber die folgenden Optionen müssen im Keytool-Befehl enthalten sein:

--storetype BCFKS -providerpath /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar
-providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider 
-providername BCFIPS

Keytool-Argumente

Keytool-Argument Beschreibung
-storetype Legen Sie den Speichertyp auf BCFKS fest.
-providerpath Geben Sie den Pfad zu bc-fips-XXXX.jar an. Diese Version kann sich in zukünftigen OPDK-Releases ändern. Verwenden Sie die von Apigee bereitgestellte Version oder laden Sie sie aus den Bouncycastle-Repositories herunter. Für OPDK 4.53 sollte der Pfad /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar lauten.
-providerclass Legen Sie für dieses Feld org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider fest.
-providername Legen Sie für dieses Feld BCFIPS fest.

Ähnliche keytool-Befehle können verwendet werden, um Zertifikate und/oder Schlüssel aus einem Keystore im BCFKS-Format zu importieren oder zu exportieren. Weitere Informationen zum Arbeiten mit BCFKS finden Sie in der BouncyCastle-Dokumentation.

PKCS12-Speicher

Zum Generieren eines PKCS12-Speichers können openssl-Befehle verwendet werden:

# Generate a self-signed private key and certificate
openssl req -x509 -newkey rsa:2048 -keyout private.key -out certificate.pem -sha256 -days 36500 -nodes -subj "/C=yourc/ST=yourst/L=yourl/O=youro/OU=yourou/CN=cn/emailAddress=email"
# Package the above generated key and cert into a PKCS12
openssl pkcs12 -export -clcerts -in certificate.pem -inkey private.key -out keystore.pfx -name myalias

Wenn Sie einen eigenen privaten Schlüssel und ein eigenes Zertifikat haben und diese in das PKCS12-Format konvertieren müssen, lesen Sie den Abschnitt Zertifikate in ein unterstütztes Format konvertieren.