Edge for Private Cloud auf FIPS-fähiger RHEL 8.X

Dieser Artikel enthält Details und Anleitungen für Edge for Private Cloud-Kunden, die Version 4.53.00 oder höher mit FIPS-fähigem RHEL 8.X verwenden.

Vorinstallieren

Achten Sie darauf, dass FIPS zusätzlich zu den anderen Standardkonfigurationsvoraussetzungen, die in der Edge for Private Cloud-Dokumentation aufgeführt sind, auf Ihren Knoten aktiviert ist.

fips-mode-setup --check
FIPS mode is enabled.

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

Java-Anforderungen

Die von Ihnen verwendete Java-Version sollte aus dem Red Hat-Repository heruntergeladen werden, damit die Sicherheitsmodule von Java FIPS-kompatibel sind und FIPS-spezifische Einschränkungen über die Java-Sicherheit implementieren können.

Installation

Legen Sie in der Konfigurationsdatei für die Installation im Silent-Modus auf jedem Knoten FIPS_OS=true 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-Schlüsselspeicher für die Verwendung in Ihren API-Proxys oder virtuellen Hosts hochzuladen. Informationen 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ähigem RHEL 8.X verwenden, müssen die meisten TLS-bezogenen Komponentenkonfigurationen von Edge über Schlüsselspeicher im PKCS12- oder BCFKS-Format erfolgen. Weitere Informationen finden Sie in der FIPS-spezifischen Dokumentation oder in den Anmerkungen zu relevanten Artikeln zur TLS-Konfiguration. Im Anhang finden Sie einige hilfreiche Befehle, mit denen Sie diese Schlüsselspeicher generieren können.

Standard-Java-Keystore/-Truststore

Wenn Edge for Private Cloud 4.53.00 oder höher auf FIPS-fähigem RHEL 8.X ausgeführt wird, verwenden der Message Processor, der Management Server und andere edge-*-Komponenten einen Standard-Truststore und einen Standard-Keystore, die mit dem Produkt geliefert werden. Sie enthalten Zertifizierungsstellenzertifikate, die von Ihrer Anwendung standardmäßig als vertrauenswürdig eingestuft werden. Wenn Sie dies in Ihren eigenen Speicher mit CA-Zertifikaten ändern möchten, gehen Sie so vor:

  1. Erstellen Sie eine cacerts-Datei im BCFKS-Format, die alle CA-Zertifikate enthält, die Sie als vertrauenswürdig einstufen möchten. Das Passwort für den Schlüsselspeicher und das Passwort für den Schlüssel müssen identisch sein. Weitere Informationen finden Sie im Anhang.
  2. Speichern Sie die Datei unter einem geeigneten Pfad und achten Sie darauf, dass sie für den apigee-Nutzer lesbar ist:
    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 für die 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. Achten Sie darauf, dass der apigee-Nutzer Inhaber der Konfigurationsdatei ist und sie lesen kann:
    chown apigee:apigee $opt/apigee/customer/application/<file>.properties
  6. Starten Sie die Komponente neu:
    /opt/apigee/apigee-service/bin/apigee-service  restart

Anhang

Beispielbefehle für BCFKS-Schlüsselspeichervorgänge

Mit dem folgenden Befehl wird ein BCFKS-Schlüsselspeicher mit einem selbst signierten Schlüssel- und Zertifikatspaar 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

Die Keytool-Befehle bleiben gleich, aber dem Keytool-Befehl müssen die folgenden Optionen hinzugefügt werden:

--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 Der Speichertyp ist BCFKS.
-providerpath Pfad zu bc-fips-XXXX.jar. Die Version dieses JAR-Objekts kann sich in zukünftigen OPDK-Versionen ändern. Es sollte die von Apigee bereitgestellte Version verwendet werden. Sie können die JAR-Datei auch aus den Repositories von Bouncycastle herunterladen. Seit der Veröffentlichung von OPDK 4.53 sollte dies /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar sein.
-providerclass Muss auf „org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider“ festgelegt sein.
-providername Sollte auf BCFIPS festgelegt sein.

Ähnliche keytool-Befehle können verwendet werden, um Zertifikate und/oder Schlüssel aus oder in einen Schlüsselspeicher im BCFKS-Format zu importieren oder zu exportieren. Weitere Informationen zur Arbeit 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 einem PKCS12-Paket verpacken möchten, lesen Sie den Hilfeartikel Zertifikate in ein unterstütztes Format konvertieren.