Schlüsselspeicher und Truststores mit der Edge Management API erstellen

<ph type="x-smartling-placeholder"></ph> Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur Apigee X-Dokumentation.
Weitere Informationen

In diesem Dokument wird beschrieben, wie Sie Schlüsselspeicher und Truststores für Edge erstellen, ändern und löschen. für die Cloud und für Edge ab Version 4.18.01 der privaten Cloud.

Einführung

Um Funktionen zu konfigurieren, die auf einer Public-Key-Infrastruktur wie TLS beruhen, müssen Sie Schlüsselspeicher und Truststores erstellen, die die erforderlichen Schlüssel und digitalen Zertifikate bereitstellen

Eine Einführung in Schlüsselspeicher, Truststore und Aliasse finden Sie unter Schlüsselspeicher und Truststores.

Schlüsselspeicher erstellen

Ein Schlüsselspeicher ist für eine Umgebung in Ihrer Organisation spezifisch, z. B. „test“ oder „prod“. zu verbessern. Wenn Sie den Schlüsselspeicher also vor der Bereitstellung in einer Testumgebung testen möchten, müssen Sie sie in beiden Umgebungen erstellen.

So erstellen Sie einen Schlüsselspeicher in einer Umgebung:

  1. Verwenden Sie den API-Aufruf in diesem Abschnitt, um den Schlüsselspeicher zu erstellen.
  2. Erstellen Sie einen Alias und laden Sie ein Zertifikat/Schlüsselpaar in den Alias hoch. Die Art und Weise, wie Sie das Zertifikat basiert auf dem Format des Zertifikats/Schlüssel-Paares. In den folgenden Abschnitten wird beschrieben, wie Sie jede Art von Zertifikat/Schlüsselpaar:

Um einen Schlüsselspeicher zu erstellen, geben Sie den Namen des Schlüsselspeichers im Feld Create a Keystore API oder Truststore API. Der Schlüsselspeichername darf nur alphanumerische Zeichen enthalten:

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"/>'

Beispielantwort:

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

Zertifikat und Schlüssel als JAR-Datei hochladen

Sie müssen zunächst eine JAR-Datei mit Ihrem privaten Schlüssel, Zertifikat und einem Manifest erstellen. Die JAR-Datei -Datei muss die folgenden Dateien und Verzeichnisse enthalten:

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

Eine Schlüsselspeicher-JAR-Datei kann nur diese drei Dateien enthalten. Bei einer Zertifikatskette werden alle Zertifikate in der Kette an eine einzelne PEM-Datei angehängt werden, in der das letzte Zertifikat signiert werden muss. durch eine Stammzertifizierungsstelle. Die Zertifikate müssen in der richtigen Reihenfolge an die PEM-Datei angehängt werden. mit einer leeren Zeile zwischen den einzelnen Zertifikaten. Das bedeutet:

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

Erstellen Sie in dem Verzeichnis, das Ihr Schlüsselpaar und Ihr Zertifikat enthält, ein Verzeichnis namens /META-INF Erstellen Sie dann eine Datei mit dem Namen descriptor.properties in /META-INF mit folgendem Inhalt:

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

Generieren Sie die JAR-Datei, die Ihr Schlüsselpaar und Ihr Zertifikat enthält:

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

descriptor.properties hinzufügen zu Ihre JAR-Datei:

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

Sie können jetzt Ihre JAR-Dateien, die ein Zertifikat und einen privaten Schlüssel enthalten, über die Datei hochladen. Alias aus einer JAR- oder PKCS-Datei erstellen:

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"

wobei die Option -F den Pfad zur JAR-Datei angibt.

In diesem Aufruf geben Sie Folgendes an:

  • alias_name – Identifiziert das Zertifikat und den Schlüssel in Schlüsselspeicher. Wenn Sie einen virtuellen Host erstellen, referenzieren Sie das Zertifikat und den Schlüssel anhand der Aliasnamen.
  • key_pword: Das Passwort für den privaten Schlüssel. Auslassen Parameter, wenn der private Schlüssel kein Passwort hat.

Prüfen Sie, ob Ihr Schlüsselspeicher ordnungsgemäß hochgeladen wurde:

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

Beispielantwort:

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

Zertifikat und Schlüssel als PEM-Dateien hochladen

Laden Sie PEM-Dateien, die ein Zertifikat und einen privaten Schlüssel enthalten, mithilfe der Datei hoch. Alias aus Zertifikat- und PEM-Schlüsseldateien erstellen:

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"

Dabei gibt die Option -F die Pfade zu den PEM-Dateien an.

In diesem Aufruf geben Sie Folgendes an:

  • alias_name – Identifiziert das Zertifikat und den Schlüssel in Schlüsselspeicher. Wenn Sie einen virtuellen Host erstellen, referenzieren Sie das Zertifikat und den Schlüssel anhand der Aliasnamen.
  • key_pword: Das Passwort für den privaten Schlüssel. Auslassen Parameter, wenn der private Schlüssel kein Passwort hat.

Prüfen Sie, ob Ihr Schlüsselspeicher ordnungsgemäß hochgeladen wurde:

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

Beispielantwort:

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

Zertifikat und Schlüssel als PKCS12/PFX hochladen Datei

Laden Sie mit der Methode eine PKCS12/PFX-Datei hoch, die ein Zertifikat und einen privaten Schlüssel enthält. Alias aus einer JAR- oder PKCS-Datei erstellen:

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"

Dabei gibt die Option -F den Pfad zur P12-Datei an.

In diesem Aufruf geben Sie Folgendes an:

  • alias_name – Identifiziert das Zertifikat und den Schlüssel in Schlüsselspeicher. Wenn Sie einen virtuellen Host erstellen, referenzieren Sie das Zertifikat und den Schlüssel anhand der Aliasnamen.
  • key_pword: Das Passwort für den privaten Schlüssel. Auslassen Parameter, wenn der private Schlüssel kein Passwort hat.

Prüfen Sie, ob Ihr Schlüsselspeicher ordnungsgemäß hochgeladen wurde:

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

Beispielantwort:

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

ein selbst signiertes Zertifikat erstellen und hochladen sowie Taste

Sie können die Methode Alias durch Generieren eines selbst signierten Zertifikats API erstellen, um ein selbst signiertes Zertifikat zu erstellen und laden Sie sie in einem Alias hoch. Der folgende Aufruf gibt nur die erforderlichen Informationen an, Erstellen Sie das selbst signierte Zertifikat. Sie können diesen Aufruf ändern, um zusätzliche Informationen hinzuzufügen:

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"

Die Antwort sollte wie folgt aussehen:

{
  "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"
}

Truststore erstellen

Die APIs, die Sie zum Erstellen eines Truststores verwenden, sind die gleichen wie zum Erstellen eines Schlüsselspeichers. Die Der einzige Unterschied besteht darin, dass Sie nur eine Zertifikatsdatei als PEM-Datei in den Truststore hochladen.

Wenn das Zertifikat zu einer Kette gehört, müssen Sie entweder alle Zertifikate in der Kette separat hochladen an den Truststore senden oder eine einzelne Datei mit allen Zertifikaten erstellen. Sie müssen eine leere Zeile zwischen den einzelnen Zertifikaten in der Datei.

Wenn Sie mehrere selbstsignierte Zertifikate hochladen möchten, die nicht Teil einer Kette sind, verwenden Sie die Methode Wenn Sie mehreren Zertifikaten vertrauen möchten, laden Sie sie in einer einzigen Datei hoch.

Das endgültige Zertifikat wird normalerweise vom Zertifikatsaussteller signiert. Im Feld Truststore, laden Sie das Clientzertifikat "client_cert_1" und das Zertifikat, ca_cert.

Bei der bidirektionalen TLS-Authentifizierung ist die Clientauthentifizierung erfolgreich, wenn der Server client_cert_1 an den Client im Rahmen des TLS-Handhabing-Prozesses.

Alternativ haben Sie ein zweites Zertifikat, client_cert_2, das mit demselben Zertifikat „ca_cert“ signiert ist. Sie laden „client_cert_2“ jedoch nicht in den Truststore hoch. Der Truststore enthält noch client_cert_1 und ca_cert.

Wenn der Server „client_cert_2“ im Rahmen des TLS-Handshakes übergibt, ist die Anfrage erfolgreich. Dies ist da Edge die TLS-Überprüfung erfolgreich macht, wenn client_cert_2 nicht im Truststore, wurde jedoch von einem Zertifikat signiert, das im Truststore vorhanden ist. Wenn Sie die Zertifizierungsstelle entfernen Zertifikat, ca_cert, aus dem Truststore, schlägt die TLS-Bestätigung fehl.

Erstellen Sie in der Umgebung einen leeren Truststore. Verwenden Sie dazu Create a Keystore oder Truststore, dieselbe API, mit der Sie einen Schlüsselspeicher erstellen:

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

Nachdem Sie den Truststore erstellt haben, laden Sie das Zertifikat als PEM-Datei in den Truststore hoch: mithilfe der Alias aus einer PEM-Zertifikatsdatei erstellen:

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"

Dabei gibt die Option -F den Pfad zur PEM-Datei an.

Details zu einer vorhandenen Keystore oder Truststore

Überprüfen Sie Ihre Umgebung mithilfe der Methode Schlüsselspeicher auflisten und Truststores:

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

Cloud-Kunden steht ein Standard-Schlüsselspeicher für kostenlose Testorganisationen im Test- und Produktionsumgebungen. Für diesen Aufruf sollten Sie die folgenden Ergebnisse für beide Umgebungen:

[ "freetrial" ]

Sie können diesen Standard-Schlüsselspeicher verwenden, um Ihre APIs zu testen und in die Produktion zu übertragen. Erstellen Sie in der Regel einen eigenen Schlüsselspeicher mit Ihrem eigenen Zertifikat und Schlüssel, bevor Sie die Bereitstellung in für die Produktion.

Für Private Cloud-Kunden ist das zurückgegebene Array leer, bis Sie das erste erstellt haben keystore.

Überprüfen Sie den Inhalt des Schlüsselspeichers mithilfe der Methode Rufen Sie eine Keystore oder Truststore API ab. Cloud-Kunden sollten ein TLS-Protokoll für einen einzelnen Server sehen. Zertifikat - das Standardzertifikat, das Apigee Edge für kostenlose Testkonten bereitstellt.

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

Die Antwort sollte wie folgt aussehen:

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

Details zu einem Alias abrufen

Rufen Sie eine Liste aller Aliase für einen Schlüsselspeicher mithilfe der Methode ab. Alias-API auflisten:

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

Die Antwort sollte wie folgt aussehen:

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

Um alle Informationen zu einem Alias wie Ablaufdatum und Aussteller abzurufen, verwenden Sie die Alias-API abrufen und den Aliasnamen angeben:

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

Die Antwort sollte wie folgt aussehen:

{
  "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"
}

Verwenden Sie zum Herunterladen des Zertifikats für einen Alias die Exportieren Sie ein Zertifikat für eine Alias-API:

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"

Die Antwort sollte wie folgt aussehen:

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

Wenn Sie ein abgelaufenes Zertifikat haben und es verlängern möchten, können Sie eine Zertifikatsignierung herunterladen Anfrage (CSR): Anschließend senden Sie den CSR an Ihre Zertifizierungsstelle, um ein neues Zertifikat zu erhalten. So generieren Sie eine CSR für eine Alias verwenden, verwenden Sie Generieren Sie eine CSR für eine Alias-API:

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"

Die Antwort sollte wie folgt aussehen:

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

Zertifikat zu einem Truststore für Zwei-Wege-TLS hinzufügen

Wenn Sie Zwei-Wege-TLS für eingehende Verbindungen, d. h. eine API-Anfrage in Edge, verwenden, Der Truststore enthält ein Zertifikat oder eine Zertifizierungsstellenkette für jeden Client, der Anfragen an Edge senden darf.

Bei der Erstkonfiguration des Truststores können Sie alle Zertifikate für die bekannten Clients hinzufügen. Im Laufe der Zeit kann es jedoch sinnvoll sein, dem Truststore weitere Zertifikate hinzuzufügen, wenn Sie neue Clients hinzufügen.

So fügen Sie einem Truststore, der für Zwei-Wege-TLS verwendet wird, neue Zertifikate hinzu:

  1. Achten Sie darauf, dass Sie einen Verweis auf den Truststore im virtuellen Host verwenden.
  2. Laden Sie ein neues Zertifikat in den Truststore hoch, wie oben unter Erstellen Sie einen Truststore.
  3. Aktualisieren Sie die Truststore-Referenz, um sie auf denselben Wert festzulegen. Dieses Update führt dazu, dass Edge den Truststore und das neue Zertifikat neu lädt.

    Weitere Informationen findest du unter Referenz ändern.

Schlüsselspeicher/Truststore oder Alias löschen

Beim Löschen eines Schlüsselspeichers, Truststores oder Alias ist Vorsicht geboten. Wenn Sie einen Schlüsselspeicher löschen, Truststore oder Alias, der von einem virtuellen Host, Zielendpunkt oder Zielserver verwendet wird, API-Aufrufe über den virtuellen Host oder den Zielendpunkt/Zielserver schlagen fehl.

In der Regel löschen Sie einen Schlüsselspeicher, Truststore oder Alias wie folgt:

  1. Erstellen Sie wie oben beschrieben einen neuen Schlüsselspeicher, Truststore oder Alias.
  2. Aktualisieren Sie für eingehende Verbindungen, d. h. eine API-Anfrage an Edge, den virtuelle Hostkonfiguration, um auf den neuen Schlüsselspeicher und den neuen Schlüsselalias zu verweisen.
  3. Für ausgehende Verbindungen, also von Apigee zu einem Back-End-Server: <ph type="x-smartling-placeholder">
      </ph>
    1. Aktualisieren Sie die TargetEndpoint-Konfiguration für alle API-Proxys, die auf die alte Keystore und Schlüsselalias, um auf den neuen Schlüsselspeicher und den neuen Schlüsselalias zu verweisen. Wenn Ihr TargetEndpoint auf einen TargetServer verweist, aktualisieren Sie die TargetServer-Definition, um auf den neuen Schlüsselspeicher zu verweisen und Schlüsselalias.
    2. Wenn der Schlüsselspeicher und der Truststore direkt vom TargetEndpoint referenziert werden definieren, müssen Sie den Proxy noch einmal bereitstellen. Wenn der TargetEndpoint auf einen TargetServer-Definition und die TargetServer-Definition auf den Schlüsselspeicher und Truststore ist keine erneute Proxy-Bereitstellung erforderlich.
    3. Bestätigen Sie, dass Ihre API-Proxys ordnungsgemäß funktionieren.
    4. Löschen Sie den Schlüsselspeicher, Truststore oder Alias.

Weitere Informationen finden Sie unter . Aktualisieren Sie das Zertifikat in einem Alias, um weitere Informationen zu erhalten.

Schlüsselspeicher oder Truststore löschen

Sie können einen Schlüsselspeicher oder Truststore löschen, indem Sie den Löschen Sie eine Schlüsselspeicher- oder Truststore-API:

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

Wenn Sie einen Schlüsselspeicher oder Truststore, der von einem virtuellen Host verwendet wird, löschen und neu erstellen, gilt Folgendes: müssen Sie Ihre API-Proxys noch einmal bereitstellen.

Alias löschen

Sie können einen Alias in einem Schlüsselspeicher oder Truststore löschen, indem Sie den Alias-API löschen:

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