Créer des keystores et des Truststores à l'aide de l'API de gestion Edge

<ph type="x-smartling-placeholder"></ph> Vous consultez la documentation Apigee Edge.
Accédez à la page Documentation sur Apigee X.
En savoir plus

Ce document explique comment créer, modifier et supprimer des keystores et des truststores pour Edge pour le cloud et Edge pour le Private Cloud à partir de la version 4.18.01.

Introduction

Pour configurer une fonctionnalité qui repose sur une infrastructure à clé publique, telle que TLS, vous devez : créer des keystores et des « Truststores » qui fournissent les clés et les certificats numériques nécessaires.

Pour en savoir plus sur les keystores, les Truststores et les alias, consultez Keystores et Truststores.

Créer un keystore

Un keystore est spécifique à un environnement de votre organisation, par exemple l'environnement de test ou de production environnement. Par conséquent, si vous souhaitez tester le keystore dans un environnement de test avant de déployer dans votre environnement de production, vous devez le créer dans les deux environnements.

Pour créer un keystore dans un environnement:

  1. Utilisez l'appel d'API de cette section pour créer le keystore.
  2. Créez un alias et importez une paire certificat/clé dans l'alias. La façon dont vous importez le certificat est basée sur le format de la paire certificat/clé. Les sections suivantes décrivent comment importer chaque type de paire certificat/clé:

Pour créer un keystore, spécifiez son nom dans la section Créer un API Keystore ou Truststore. Le nom du keystore ne peut contenir que des caractères alphanumériques:

curl -X POST -u orgAdminEmail:password -H "Content-Type: text/xml" \
https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores \
-d '<KeyStore name="myKeystore"/>'

Exemple de réponse :

{
  "certs" : [ ],
  "keys" : [ ],
  "name" : "myKeystore"
}

Importer un certificat et une clé en tant que fichier JAR

Vous devez d'abord créer un fichier JAR avec votre clé privée, votre certificat et un fichier manifeste. Le fichier JAR doit contenir les fichiers et répertoires suivants:

/META-INF/descriptor.properties
myCert.pem
myKey.pem

Un fichier keystore JAR ne peut contenir que ces trois fichiers. Si vous disposez d'une chaîne de certificats, tous les certificats de la chaîne doivent être ajoutés dans un seul fichier PEM, dans lequel le dernier certificat doit être signé par une autorité de certification racine. Les certificats doivent être ajoutés au fichier PEM dans le bon ordre : par une ligne vide entre chaque certificat, ce qui signifie que:

cert -> intermediate cert(1) -> intermediate cert(2) -> … -> root

Dans le répertoire contenant votre paire de clés et votre certificat, créez un répertoire appelé /META-INF Ensuite, créez un fichier nommé Descriptor.properties dans /META-INF avec le contenu suivant:

certFile={myCertificate}.pem
keyFile={myKey}.pem

Générez le fichier JAR contenant la paire de clés et le certificat:

jar -cf myKeystore.jar myCert.pem myKey.pem

Ajouter descriptor.properties à votre fichier JAR:

jar -uf myKeystore.jar META-INF/descriptor.properties

Vous pouvez maintenant importer vos fichiers JAR contenant un certificat et une clé privée à l'aide du Créez un alias à partir d'une API de fichier JAR ou PKCS:

curl -u orgAdminEmail:password -X POST -H "Content-Type: multipart/form-data" -F file="@myKeystore.jar" -F password={key_pword} \
"https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}/aliases?alias={alias_name}&format=keycertjar"

où l'option -F spécifie le chemin d'accès au fichier JAR.

Dans cet appel, vous spécifiez les éléments suivants:

  • alias_name : identifie le certificat et la clé dans le magasin de clés. Lorsque vous créez un hôte virtuel, vous référencez le certificat et la clé à l'aide de ses nom d'alias.
  • key_pword : mot de passe de la clé privée. Omettre ce paramètre si la clé privée n'a pas de mot de passe.

Vérifiez que votre keystore a été importé correctement:

curl -u orgAdminEmail:password -X GET\
https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}

Exemple de réponse :

{  
 "certs" : [ "myCertificate" ],
 "keys" : [ "myKey" ],
 "name" : "myKeystore"
}

Importer un certificat et une clé sous forme de fichiers PEM

Importez des fichiers PEM contenant un certificat et une clé privée à l'aide du Créez un alias à partir de fichiers PEM de certificat et de clé:

curl -u orgAdminEmail:password -X POST -H "Content-Type: multipart/form-data" -F keyFile="@server.key" -F certFile="@signed.crt" \
-F password={key_pword} \
"https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}/aliases?alias={alias_name}&format=keycertfile"

où l'option -F spécifie les chemins d'accès aux fichiers PEM.

Dans cet appel, vous spécifiez les éléments suivants:

  • alias_name : identifie le certificat et la clé dans le magasin de clés. Lorsque vous créez un hôte virtuel, vous référencez le certificat et la clé à l'aide de ses nom d'alias.
  • key_pword : mot de passe de la clé privée. Omettre ce paramètre si la clé privée n'a pas de mot de passe.

Vérifiez que votre keystore a été importé correctement:

curl -u orgAdminEmail:password -X GET\
https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}

Exemple de réponse :

{  
 "certs" : [ "myCertificate" ],
 "keys" : [ "myKey" ],
 "name" : "myKeystore"
}

Importer un certificat et une clé en tant que fichier PKCS12/PFX fichier

Importez un fichier PKCS12/PFX contenant un certificat et une clé privée à l'aide de la méthode Créez un alias à partir d'une API de fichier JAR ou PKCS:

curl -u orgAdminEmail:password -X POST -H "Content-Type: multipart/form-data" \
-F file="@myKeystore.p12" -F password={key_pword} \
"https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}/aliases?alias={alias_name}&format=pkcs12"

où l'option -F spécifie le chemin d'accès au fichier P12.

Dans cet appel, vous spécifiez les éléments suivants:

  • alias_name : identifie le certificat et la clé dans le magasin de clés. Lorsque vous créez un hôte virtuel, vous référencez le certificat et la clé à l'aide de ses nom d'alias.
  • key_pword : mot de passe de la clé privée. Omettre ce paramètre si la clé privée n'a pas de mot de passe.

Vérifiez que votre keystore a été importé correctement:

curl -u orgAdminEmail:password -X GET\
https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}

Exemple de réponse :

{  
 "certs" : [ "myCertificate" ],
 "keys" : [ "myKey" ],
 "name" : "myKeystore"
}

Créer et importer un certificat autosigné touche

Vous pouvez utiliser le Créer un alias en générant un certificat autosigné pour créer un certificat autosigné et les importer dans un alias. L'appel suivant ne spécifie que les informations requises pour créer le certificat autosigné. Vous pouvez modifier cet appel pour ajouter des informations supplémentaires:

curl -u orgAdminEmail:password -X POST --header "Content-Type: application/json"  \
-d "{
    "alias": "selfsigned",
    "subject": {
        "commonName": "mycert"
    }
}" \
"https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}/aliases?format=selfsignedcert"

La réponse doit apparaître comme suit:

{
  "alias": "selfsigned",
  "certsInfo": {
    "certInfo": [
      {
        "basicConstraints": "CA:FALSE",
        "expiryDate": 1491497204000,
        "isValid": "Yes",
        "issuer": "CN=mycert",
        "publicKey": "RSA Public Key, 2048 bits",
        "serialNumber": "00:d1:b4:78:e1",
        "sigAlgName": "SHA256withRSA",
        "subject": "CN=mycert",
        "subjectAlternativeNames": [],
        "validFrom": 1459961204000,
        "version": 3
      }
    ],
    "certName": "selfsigned-cert"
  },
  "keyName": "selfsigned"
}

Créer un truststore

Les API que vous utilisez pour créer un truststore sont les mêmes que pour créer un keystore. La Seule différence : vous importez uniquement un fichier de certificat, sous la forme d'un fichier PEM, dans le truststore.

Si le certificat fait partie d'une chaîne, vous devez importer tous les certificats de la chaîne séparément au Truststore, ou créer un seul fichier contenant tous les certificats. Vous devez insérer un espace entre chaque certificat du fichier.

Si vous souhaitez importer plusieurs certificats autosignés qui ne font pas partie d'une chaîne, utilisez la Même technique: si vous souhaitez approuver plusieurs certificats, importez-les dans un seul fichier.

Le certificat final est généralement signé par l'émetteur du certificat. Par exemple, dans « Truststore », vous téléchargez un certificat client,client_cert_1 et le certificat de l'émetteur "ca_cert".

Lors de l’authentification TLS bidirectionnelle, l’authentification du client réussit lorsque le serveur envoie client_cert_1 au client dans le cadre du processus de handshake TLS.

Vous pouvez également disposer d'un second certificat, client_cert_2, signé par le même certificat, ca_cert. Cependant, vous n'importez pas client_cert_2 dans le truststore. Le truststore contient toujours client_cert_1 et ca_cert.

Lorsque le serveur transmet client_cert_2 dans le cadre du handshake TLS, la requête aboutit. C'est car Edge permet à la validation TLS de réussir lorsque client_cert_2 n'existe pas dans « Truststore », mais a été signé par le certificat qui existe dans le truststore. Si vous supprimez l'autorité de certification ca_cert, du truststore, puis la validation TLS échoue.

Créez un Truststore vide dans l'environnement en utilisant Créer un Keystore ou Truststore, la même API que celle que vous utilisez pour créer un keystore:

curl -u orgAdminEmail:password -X POST -H "Content-Type: text/xml" \
-d '<KeyStore name="myTruststore"/>' \
https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores

Après avoir créé le Truststore, importez le certificat sous forme de fichier PEM dans le Truststore en à l'aide du Créez un alias à partir d'une API de fichier PEM de certificat:

curl -u orgAdminEmail:password -X POST -H "Content-Type: multipart/form-data" -F certFile="@cert.pem" \
"https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/myTruststore/aliases?alias=myTruststore&format=keycertfile"

où l'option -F spécifie le chemin d'accès au fichier PEM.

Obtenir des informations sur un keystore ou truststore

Recherchez les keystores existants dans votre environnement à l'aide de la fonction List Keystores and Truststores:

curl -u orgAdminEmail:password -X GET \
https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores

Pour les clients cloud, un keystore par défaut est fourni pour les organisations bénéficiant d'un essai sans frais dans les dans les environnements de test et de production. Les résultats suivants doivent s'afficher pour cet appel à la fois environnements:

[ "freetrial" ]

Vous pouvez utiliser ce keystore par défaut pour tester vos API et les déployer en production, créent généralement votre propre keystore, avec vos propres certificat et clé, avant de déployer sur en production.

Pour les clients Private Cloud, le tableau renvoyé est vide jusqu'à ce que vous créiez votre premier keystore.

Vérifiez le contenu du keystore à l'aide de la commande Obtenez une API Keystore ou Truststore. Pour un client cloud, vous devriez voir un seul serveur TLS certificate - le certificat par défaut fourni par Apigee Edge pour les comptes d'essai sans frais.

curl -u orgAdminEmail:password -X GET\
https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/freetrial

La réponse doit apparaître comme suit:

{
 "certs" : [ "wildcard.apigee.net.crt" ],
 "keys" : [ "freetrial" ],
 "name" : "freetrial"
}

Obtenir des informations sur un alias

Obtenez la liste de tous les alias d'un keystore à l'aide de la commande Répertorier les alias:

curl -u orgAdminEmail:password -X GET \
"https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}/aliases"

La réponse doit apparaître comme suit:

[
  "alias1",
  "alias2",
  "alias3",
]

Pour obtenir toutes les informations sur un alias, telles que sa date d'expiration et son émetteur, utilisez le Obtenez un alias et spécifiez le nom de l'alias:

curl  -u orgAdminEmail:password -X GET \
"https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}/aliases/{alias_name}"

La réponse doit apparaître comme suit:

{
  "alias": "alias1",
  "certsInfo": {
    "certInfo": [
      {
        "basicConstraints": "CA:TRUE",
        "expiryDate": 1459371335000,
        "isValid": "No",
        "issuer": "EMAILADDRESS=foo@bar.com, CN=smg, OU=doc, O=Internet Widgits Pty Ltd, L=noho, ST=Some-State, C=AU",
        "publicKey": "RSA Public Key, 1024 bits",
        "serialNumber": "00:86:a0:9b:5b:91:a9:fe:92",
        "sigAlgName": "SHA256withRSA",
        "subject": "EMAILADDRESS=foo@bar.com, CN=smg, OU=doc, O=Internet Widgits Pty Ltd, L=noho, ST=Some-State, C=AU",
        "subjectAlternativeNames": [],
        "validFrom": 1456779335000,
        "version": 3
      }
    ],
    "certName": "new\-cert"
  },
  "keyName": "newssl20"
}

Pour télécharger le certificat d'un alias, utilisez le Exporter un certificat pour une API d'alias:

curl -u orgAdminEmail:password -X GET \
"https://api.enterprise.apigee.com/v1/e/{org_name}/e/{env_name}/keystores/{keystore_name}/aliases/{alias_name}/certificate"

La réponse doit apparaître comme suit:

-----BEGIN CERTIFICATE-----
MIIDojCCAwugAwIBAgIJAIagm1uRqf6SMA0GCSqGSIb3DQEBCwUAMIGTMQswCQYD
...
RBUkaTe/570sLHY0tvkIm5tEX36ESw==
-----END CERTIFICATE-----

Si vous avez un certificat arrivé à expiration et que vous souhaitez le renouveler, vous pouvez télécharger un certificat Requête (CSR). Vous envoyez ensuite la requête de signature de certificat à votre autorité de certification pour obtenir un nouveau certificat. Pour générer une requête de signature de certificat pour une utilisez l'alias de domaine Générez une requête de signature de certificat pour une API d'alias:

curl -u orgAdminEmail:password -X GET \
"https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}/aliases/{alias_name}/csr"

La réponse doit apparaître comme suit:

-----BEGIN CERTIFICATE REQUEST-----
MIIB1DCCAT0CAQAwgZMxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRl
...
RF5RMytbkxkvPxIE17mDKJH0d8aekv/iEOItZ+BtQg+EibMUkkjTzQ==
-----END CERTIFICATE REQUEST-----

Ajouter un certificat à un Truststore pour TLS bidirectionnel

Lors de l'utilisation de TLS bidirectionnel pour les connexions entrantes, c'est-à-dire une requête API dans Edge, le Truststore contient un certificat ou une chaîne d’AC pour chaque client autorisé à envoyer des requêtes à Edge.

Lors de la configuration initiale du magasin de confiance, vous pouvez ajouter tous les certificats pour les clients connus. Cependant, au fil du temps, vous pouvez ajouter des certificats supplémentaires au Truststore à mesure que vous ajoutez de nouveaux clients.

Pour ajouter de nouveaux certificats à un Truststore utilisé pour TLS bidirectionnel:

  1. Assurez-vous d'utiliser une référence au truststore de l'hôte virtuel.
  2. Importez un nouveau certificat dans le truststore comme décrit ci-dessus dans Créez un Truststore.
  3. Mettez à jour la référence du truststore pour lui attribuer la même valeur. Cette mise à jour oblige Edge à recharger le truststore et le nouveau certificat.

    Pour en savoir plus, consultez Modifier une référence.

Supprimer un keystore/un Truststore ou un alias

Vous devez faire preuve de prudence lorsque vous supprimez un keystore/truststore ou un alias. Si vous supprimez un keystore, magasin de confiance ou alias utilisé par un hôte virtuel, un point de terminaison cible ou un serveur cible, tous Les appels d'API via l'hôte virtuel ou le point de terminaison cible/le serveur cible échoueront.

En règle générale, le processus à utiliser pour supprimer un keystore/Truststore ou un alias est le suivant:

  1. Créez un keystore/truststore ou un alias comme décrit ci-dessus.
  2. Pour les connexions entrantes, c'est-à-dire une requête API dans Edge, mettez à jour le configuration d'hôte virtuel pour référencer le nouveau keystore et l'alias de clé.
  3. Pour les connexions sortantes, c'est-à-dire d'Apigee vers un serveur backend: <ph type="x-smartling-placeholder">
      </ph>
    1. Mettez à jour la configuration TargetEndpoint pour tous les proxys d'API ayant référencé l'ancienne version keystore et un alias de clé pour référencer le nouveau keystore et l'alias de clé. Si votre TargetEndpoint fait référence à un TargetServer, mettez à jour la définition TargetServer pour référencer le nouveau keystore et alias de clé.
    2. Si le keystore et le truststore sont référencés directement à partir de TargetEndpoint vous devez redéployer le proxy. Si le point de terminaison cible fait référence à cible, qui fait référence au keystore et vous n'avez pas besoin de redéployer le proxy.
    3. Vérifiez que vos proxys d'API fonctionnent correctement.
    4. Supprimez le keystore/le Truststore ou l'alias.

Voir <ph type="x-smartling-placeholder"></ph> Mettez à jour le certificat dans un alias pour en savoir plus.

Supprimer un keystore ou un truststore

Vous pouvez supprimer un keystore ou un truststore à l'aide de la commande Supprimez une API Keystore ou Truststore:

curl -u orgAdminEmail:password -X DELETE \
https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/myKeystoreName

Si vous supprimez et recréez un keystore ou un truststore utilisé par un hôte virtuel : vous devez redéployer vos proxys d'API.

Supprimer un alias

Vous pouvez supprimer un alias dans un keystore ou un Truststore à l'aide de la méthode API "Delete alias":

curl -u orgAdminEmail:password -X DELETE \
https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/myKeystoreName/aliases/{alias_name}