Edge for Private Cloud sur RHEL 8.X compatible FIPS

Cet article contient des informations et des instructions destinées aux clients Edge pour le cloud privé qui utilisent la version 4.53.00 ou ultérieure, exécutée sur RHEL 8.X avec FIPS activé.

Pré-installation

Assurez-vous que le protocole FIPS est activé sur vos nœuds, en plus des autres conditions préalables de configuration standards listées dans la documentation Edge pour le cloud privé.

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

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

Exigences pour Java

Vous devez télécharger la version Java que vous utilisez à partir du dépôt de Red Hat pour vous assurer que les modules de sécurité de Java sont compatibles avec FIPS et peuvent implémenter des restrictions spécifiques à FIPS via la sécurité Java.

Installation

Dans la référence du fichier de configuration d'installation silencieuse, définissez FIPS_OS=true sur chaque nœud. Vous pouvez suivre la procédure d'installation générale d'Edge pour le cloud privé comme d'habitude.

Format de la clé privée

Seul le format PKCS12/PFX peut être utilisé pour importer des clés privées dans les keystores Apigee à utiliser dans vos proxys d'API ou hôtes virtuels. Pour savoir comment créer le fichier, consultez Convertir des certificats au 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 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 liste certaines commandes utiles qui peuvent être utilisées pour générer ces keystores.

Keystore/Truststore Java par défaut

Lorsque Edge for Private Cloud 4.53.00 ou version ultérieure est exécuté sur RHEL 8.X compatible avec FIPS, votre processeur de messages, votre serveur de gestion et d'autres composants edge-* s'appuient sur un truststore et un keystore par défaut fournis avec le produit. Ils contiennent des certificats d'autorité de certification que votre application approuvera par défaut. Si vous souhaitez remplacer ce magasin par le vôtre contenant des certificats d'autorité de certification, procédez comme suit:

  1. Créez un fichier cacerts au format BCFKS contenant tous les certificats d'autorité de certification que vous souhaitez approuver. Assurez-vous que le mot de passe du keystore et le mot de passe de la clé sont identiques. Pour en savoir plus, consultez l'annexe.
  2. Placez le fichier dans un chemin d'accès approprié et assurez-vous qu'il est lisible par l'utilisateur apigee:
    cp my-cacerts.bcfks /opt/apigee/customer/application/my-cacerts.bcfks
    chown apigee:apigee /opt/apigee/customer/application/my-cacerts.bcfks
  3. Créez (ou modifiez) le fichier de configuration approprié en fonction du composant avec lequel vous travaillez:
    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 :
          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. Assurez-vous que le fichier de configuration appartient à l'utilisateur apigee et qu'il est lisible par celui-ci:
    chown apigee:apigee $opt/apigee/customer/application/<file>.properties
  6. Redémarrez le composant:
    /opt/apigee/apigee-service/bin/apigee-service  restart

Annexe

Exemples de commandes d'opération du keystore BCFKS

La commande ci-dessous génère un keystore BCFKS avec une paire de clé et de certificat 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 les mêmes que celles généralement exécutées, mais les options suivantes doivent être ajoutées à 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 Le type d'enregistrement est BCFKS.
-providerpath Chemin d'accès à bc-fips-XXXX.jar. La version de ce fichier JAR peut changer dans les futures versions d'OPDK. La version fournie par Apigee doit être utilisée. Vous pouvez également télécharger le fichier JAR à partir des dépôts de Bouncycastle. Depuis la version OPDK 4.53, il doit s'agir de /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar.
-providerclass Doit être défini sur org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider.
-providername Doit être défini sur BCFIPS.

Des commandes keytool similaires peuvent être utilisées pour importer ou exporter des certificats et/ou des clés à partir 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 souhaitez les empaqueter dans un fichier PKCS12, consultez Convertir des certificats au format compatible.