Edge for Private Cloud sur RHEL 8.X compatible FIPS

Cette section explique comment activer le mode FIPS sur RHEL 8, afin de garantir un environnement sécurisé et conforme pour Edge for Private Cloud versions 4.53.00 ou ultérieures.

Préinstaller

Assurez-vous que FIPS est activé sur vos nœuds, ainsi que les autres conditions préalables de configuration standard répertoriées dans la documentation Présentation de l'installation d'Edge.

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

Si le mode FIPS est actuellement désactivé, consultez la documentation officielle de Red Hat pour savoir comment l'activer : Passer de RHEL 8 au mode FIPS.

Exigences pour Java

La version de Java que vous utilisez doit être téléchargée depuis le dépôt de Red Hat pour vous assurer que ses modules de sécurité sont conformes à la norme FIPS, ce qui permet d'activer les restrictions spécifiques à la norme FIPS via la sécurité Java.

Installation

Dans la documentation de référence sur le fichier de configuration Edge, définissez FIPS_OS=true sur chaque nœud. Vous pouvez suivre la procédure d'installation générale d'Edge for Private Cloud comme d'habitude.

Format de clé privée

Seul le format PKCS12/PFX peut être utilisé pour importer des clés privées dans les keystores Apigee afin de les utiliser dans vos proxys d'API ou vos hôtes virtuels. Pour savoir comment créer le fichier, consultez Convertir des certificats dans un format compatible.

Opérations TLS générales

Lorsque vous utilisez Edge for Private Cloud 4.53.00 ou une version ultérieure sur RHEL 8.X compatible avec FIPS, la plupart des configurations de composants liées à TLS d'Edge doivent être effectuées via des keystores au format PKCS12 ou BCFKS.

Pour en savoir plus, consultez la documentation ou les notes spécifiques à FIPS dans les articles pertinents sur la configuration TLS. L'annexe répertorie des commandes utiles qui peuvent être utilisées pour générer ces keystores.

Keystore/Truststore Java par défaut

Lorsque vous utilisez Edge for Private Cloud 4.53.00 sur RHEL 8.X compatible FIPS, votre processeur de messages, votre serveur de gestion et d'autres composants edge-* pointent par défaut vers un keystore et un truststore BCFKS d'espace réservé (/opt/apigee/edge-gateway/vault/bcfks-cacerts) fournis avec le produit.

Pour générer votre propre magasin BCFKS cacerts et configurer vos composants Edge pour l'utiliser, procédez comme suit :

  1. Générez votre propre fichier cacerts au format BCFKS contenant tous les certificats d'autorité de certification auxquels vous souhaitez faire confiance. Assurez-vous que le mot de passe du keystore et le mot de passe de la clé sont identiques (et qu'ils comportent au moins 14 caractères si des vérifications strictes des mots de passe BCFIPS s'appliquent).

    • Option A : Convertissez le magasin de l'OS hôte ou du JDK cacerts au format BCFKS (recommandé si vous souhaitez inclure les autorités de certification racine de confiance de l'OS standard gérées par update-ca-trust) :

      BC_FIPS_JAR=$(ls /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-*.jar \
        | head -n 1)
      keytool -J-Dcom.redhat.fips=false -importkeystore \
        -srckeystore /etc/pki/java/cacerts \
        -srcstoretype JKS \
        -srcstorepass changeit \
        -destkeystore my-cacerts.bcfks \
        -deststoretype BCFKS \
        -deststorepass YOUR_STORE_PASSWORD \
        -providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider \
        -providername BCFIPS \
        -providerpath "$BC_FIPS_JAR" \
        -noprompt
    • Option B : Créez un magasin BCFKS avec des certificats CA personnalisés (.pem ou .crt), ou importez des certificats CA personnalisés supplémentaires dans un magasin BCFKS existant (tel que my-cacerts.bcfks de l'option A) :

      BC_FIPS_JAR=$(ls /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-*.jar \
        | head -n 1)
      keytool -J-Dcom.redhat.fips=false -importcert \
        -file PATH_TO_CA_CERT.pem \
        -alias CA_ALIAS \
        -keystore my-cacerts.bcfks \
        -storetype BCFKS \
        -storepass YOUR_STORE_PASSWORD \
        -providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider \
        -providername BCFIPS \
        -providerpath "$BC_FIPS_JAR" \
        -noprompt
    • Facultatif : Vérifiez le contenu de votre magasin BCFKS :

      BC_FIPS_JAR=$(ls /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-*.jar \
        | head -n 1)
      keytool -J-Dcom.redhat.fips=false -list \
        -keystore my-cacerts.bcfks \
        -storetype BCFKS \
        -storepass YOUR_STORE_PASSWORD \
        -providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider \
        -providername BCFIPS \
        -providerpath "$BC_FIPS_JAR"
  2. Sur chaque nœud exécutant l'un des composants Edge listés à l'étape 3, copiez le fichier BCFKS dans un chemin d'accès approprié et assurez-vous que l'utilisateur apigee peut le lire :

    cp my-cacerts.bcfks /opt/apigee/customer/application/my-cacerts.bcfks
    chown apigee:apigee /opt/apigee/customer/application/my-cacerts.bcfks
    chmod 600 /opt/apigee/customer/application/my-cacerts.bcfks
  3. Sur chaque nœud, créez ou modifiez le fichier de configuration de chaque composant installé à partir du tableau suivant (en répétant les étapes 3 à 6 pour chaque composant listé sur le nœud) :

    Composant Fichier
    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. Ajoutez les lignes suivantes au fichier de configuration :

    conf_system_javax.net.ssl.trustStore=/opt/apigee/customer/application/my-cacerts.bcfks
    conf_system_javax.net.ssl.trustStorePassword=YOUR_STORE_PASSWORD
    conf_system_javax.net.ssl.keyStore=/opt/apigee/customer/application/my-cacerts.bcfks
    conf_system_javax.net.ssl.keyStoreType=BCFKS
    conf_system_javax.net.ssl.keyStorePassword=YOUR_STORE_PASSWORD

    Remplacez /opt/apigee/customer/application/my-cacerts.bcfks et YOUR_STORE_PASSWORD par le chemin d'accès et le mot de passe de votre fichier BCFKS cacerts.

  5. Assurez-vous que l'utilisateur apigee est propriétaire du fichier de configuration et qu'il peut le lire :

    chown apigee:apigee /opt/apigee/customer/application/FILE.properties
  6. Redémarrez le composant :

    /opt/apigee/apigee-service/bin/apigee-service COMPONENT restart

Annexe

Exemples de commandes d'opération de keystore BCFKS

La commande ci-dessous génère un keystore BCFKS avec une paire de clés et de certificats autosignés :

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

Les commandes keytool restent cohérentes avec celles généralement utilisées, mais les options suivantes doivent être incluses dans la commande keytool :

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

Arguments keytool

Argument keytool Description
-storetype Définissez le type de magasin sur BCFKS.
-providerpath Spécifiez le chemin d'accès à bc-fips-XXXX.jar. Cette version peut changer dans les prochaines versions d'OPDK. Utilisez la version fournie par Apigee ou téléchargez-la depuis les dépôts de Bouncycastle. Pour OPDK 4.53, le chemin d'accès doit être /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar.
-providerclass Définissez cette valeur sur org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider.
-providername Définissez cette valeur sur BCFIPS.

Vous pouvez utiliser des commandes keytool similaires pour importer ou exporter des certificats et/ou des clés depuis ou vers un keystore au format BCFKS. Pour en savoir plus sur l'utilisation de BCFKS, consultez la documentation BouncyCastle.

Magasin PKCS12

Pour générer un magasin PKCS12, vous pouvez utiliser les commandes openssl :

# 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

Si vous disposez de votre propre clé privée et de votre propre certificat, et que vous devez les convertir au format PKCS12, consultez Convertir des certificats au format compatible.