Schlüsselspeicher und Truststores mit der Edge Management API erstellen

Sie sehen die Dokumentation zu Apigee Edge.
Rufen Sie die Apigee X-Dokumentation auf.
weitere Informationen

In diesem Dokument wird beschrieben, wie Sie Schlüsselspeicher und Truststores für Edge für die Cloud und für Edge für die Private Cloud-Version 4.18.01 und höher erstellen, ändern und löschen.

Einleitung

Zum Konfigurieren von Funktionen, die auf einer Public-Key-Infrastruktur wie TLS basieren, 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 spezifisch für eine Umgebung in Ihrer Organisation, z. B. die Test- oder Produktionsumgebung. Wenn Sie den Schlüsselspeicher also vor der Bereitstellung in der Produktionsumgebung in einer Testumgebung testen möchten, müssen Sie ihn 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 Methode zum Hochladen des Zertifikats und des Schlüssels hängt vom Format des Zertifikat/Schlüsselpaars ab. In den folgenden Abschnitten wird beschrieben, wie Sie die einzelnen Typen von Zertifikat/Schlüsselpaaren hochladen:

Geben Sie zum Erstellen eines Schlüsselspeichers den Namen des Schlüsselspeichers für die API Schlüsselspeicher oder Truststore erstellen an. 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

Du musst zuerst eine JAR-Datei mit deinem privaten Schlüssel, deinem Zertifikat und einem Manifest erstellen. Die JAR-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. Wenn Sie eine Zertifikatskette haben, müssen alle Zertifikate in der Kette an eine einzelne PEM-Datei angehängt werden, wobei das letzte Zertifikat von einer Stammzertifizierungsstelle signiert werden sollte. 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 mit dem Namen /META-INF. Erstellen Sie dann in /META-INF eine Datei mit dem Namen Descriptor.properties mit folgendem Inhalt:

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

Generieren Sie die JAR-Datei mit Ihrem Schlüsselpaar und Ihrem Zertifikat:

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

Fügen Sie Ihrer JAR-Datei descriptor.properties hinzu:

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

Sie können jetzt Ihre JAR-Dateien, die ein Zertifikat und einen privaten Schlüssel enthalten, mit der API Create an Alias from a JAR or PKCS file hochladen:

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 im Schlüsselspeicher. Wenn Sie einen virtuellen Host erstellen, verweisen Sie auf das Zertifikat und den Schlüssel über seinen Aliasnamen.
  • key_pword: das Passwort für den privaten Schlüssel. Lassen Sie diesen Parameter weg, wenn der private Schlüssel kein Passwort hat.

Prüfen Sie, ob Ihr Schlüsselspeicher korrekt 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, mit der API Create an alias from certificate and key PEM files (PEM-Dateien aus Zertifikat und Schlüsseldateien erstellen) hoch:

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 im Schlüsselspeicher. Wenn Sie einen virtuellen Host erstellen, verweisen Sie auf das Zertifikat und den Schlüssel über seinen Aliasnamen.
  • key_pword: das Passwort für den privaten Schlüssel. Lassen Sie diesen Parameter weg, wenn der private Schlüssel kein Passwort hat.

Prüfen Sie, ob Ihr Schlüsselspeicher korrekt 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-Datei hochladen

Laden Sie eine PKCS12/PFX-Datei hoch, die ein Zertifikat und einen privaten Schlüssel enthält. Verwenden Sie dazu die API Create an Alias from a JAR or PKCS file:

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 im Schlüsselspeicher. Wenn Sie einen virtuellen Host erstellen, verweisen Sie auf das Zertifikat und den Schlüssel über seinen Aliasnamen.
  • key_pword: das Passwort für den privaten Schlüssel. Lassen Sie diesen Parameter weg, wenn der private Schlüssel kein Passwort hat.

Prüfen Sie, ob Ihr Schlüsselspeicher korrekt 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"
}

Selbst signiertes Zertifikat und Schlüssel erstellen und hochladen

Mit der API Alias durch Generieren eines selbst signierten Zertifikats erstellen können Sie ein selbst signiertes Zertifikat und einen Schlüssel erstellen und in einen Alias hochladen. Mit dem folgenden Aufruf werden nur die erforderlichen Informationen zum Erstellen des selbst signierten Zertifikats angegeben. 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 so 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 dieselben wie zum Erstellen eines Schlüsselspeichers. Der einzige Unterschied besteht darin, dass Sie eine Zertifikatsdatei nur als PEM-Datei in den Truststore hochladen.

Wenn das Zertifikat Teil einer Kette ist, müssen Sie entweder alle Zertifikate in der Kette separat in den Truststore hochladen oder eine einzelne Datei mit allen Zertifikaten erstellen. Sie müssen zwischen den einzelnen Zertifikaten in der Datei eine leere Zeile einfügen.

Wenn Sie mehrere selbst signierte Zertifikate hochladen möchten, die nicht Teil einer Kette sind, gehen Sie genauso vor: Wenn Sie mehreren Zertifikaten vertrauen möchten, laden Sie sie in einer einzigen Datei hoch.

Das endgültige Zertifikat wird in der Regel vom Zertifikataussteller signiert. Im Truststore laden Sie beispielsweise das Clientzertifikat „client_cert_1“ und das Zertifikat des Ausstellers des Clientzertifikats (ca_cert) hoch.

Bei der Zwei-Wege-TLS-Authentifizierung ist die Clientauthentifizierung erfolgreich, wenn der Server im Rahmen des TLS-Handshakes client_cert_1 an den Client sendet.

Alternativ haben Sie ein zweites Zertifikat namens "client_cert_2", das vom selben Zertifikat "ca_cert" signiert ist. Sie laden jedoch „client_cert_2“ nicht in den Truststore hoch. Der Truststore enthält weiterhin „client_cert_1“ und „ca_cert“.

Wenn der Server client_cert_2 im Rahmen des TLS-Handshakes übergibt, ist die Anfrage erfolgreich. Dies liegt daran, dass Edge die TLS-Überprüfung ermöglicht, wenn „client_cert_2“ nicht im Truststore vorhanden, aber von einem Zertifikat signiert wurde, das im Truststore vorhanden ist. Wenn Sie das CA-Zertifikat (ca_cert) aus dem Truststore entfernen, schlägt die TLS-Prüfung fehl.

Erstellen Sie einen leeren Truststore in der Umgebung. Verwenden Sie dazu die API Schlüsselspeicher oder Truststore erstellen, die Sie auch zum Erstellen eines Schlüsselspeichers verwenden:

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. Verwenden Sie dazu die API Create an Alias from a certificate PEM file:

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 einem vorhandenen Schlüsselspeicher oder Truststore abrufen

Prüfen Sie Ihre Umgebung mit der API Keystores and Truststores auflisten auf vorhandene Schlüsselspeicher:

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

Für Cloud-Kunden steht in der Test- und in der Produktionsumgebung ein Standardschlüsselspeicher für Organisationen zur kostenlosen Testversion zur Verfügung. Für diesen Aufruf sollten Sie in beiden Umgebungen die folgenden Ergebnisse sehen:

[ "freetrial" ]

Sie können diesen Standardschlüsselspeicher verwenden, um Ihre APIs zu testen und die APIs in die Produktion zu übertragen. Normalerweise erstellen Sie jedoch vor der Bereitstellung für die Produktion einen eigenen Schlüsselspeicher mit Ihrem eigenen Zertifikat und Schlüssel.

Für Private Cloud-Kunden ist das zurückgegebene Array leer, bis Sie Ihren ersten Schlüsselspeicher erstellen.

Prüfen Sie den Inhalt des Schlüsselspeichers mithilfe der API Schlüsselspeicher oder Truststore abrufen. Für einen Cloud-Kunden sollte ein einzelnes Server-TLS-Zertifikat angezeigt werden. Dies ist 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 so aussehen:

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

Details zu einem Alias abrufen

Eine Liste aller Aliasse für einen Schlüsselspeicher können Sie mit der Aliasliste auflisten API abrufen:

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 so aussehen:

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

Wenn Sie alle Informationen zu einem Alias wie das Ablaufdatum und den Aussteller abrufen möchten, verwenden Sie die API Get alias (Alias abrufen) und geben Sie dabei den Aliasnamen an:

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

Um das Zertifikat für einen Alias herunterzuladen, verwenden Sie die API Zertifikat für einen Alias exportieren:

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 so aussehen:

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

Wenn Sie ein abgelaufenes Zertifikat haben und es verlängern möchten, können Sie eine Anfrage zur Zertifikatsignierung (Certificate Signing Request, CSR) herunterladen. Senden Sie die CSR dann an Ihre Zertifizierungsstelle, um ein neues Zertifikat zu erhalten. Zum Generieren einer CSR für einen Alias verwenden Sie die API CSR für Alias generieren:

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 so aussehen:

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

Einem Truststore ein Zertifikat für Zwei-Wege-TLS hinzufügen

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

Wenn Sie den Truststore zum ersten Mal konfigurieren, können Sie alle Zertifikate für die bekannten Clients hinzufügen. Mit 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 neue Zertifikate hinzu, die für Zwei-Wege-TLS verwendet werden:

  1. Achten Sie darauf, einen Verweis auf den Truststore im virtuellen Host zu verwenden.
  2. Laden Sie ein neues Zertifikat in den Truststore hoch, wie oben unter Truststore erstellen beschrieben.
  3. Aktualisieren Sie die Truststore-Referenz, um sie auf denselben Wert zu setzen. 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

Seien Sie vorsichtig, wenn Sie einen Schlüsselspeicher/Truststore oder einen Alias löschen. Wenn Sie einen Schlüsselspeicher, Truststore oder Alias löschen, der von einem virtuellen Host, Zielendpunkt oder Zielserver verwendet wird, schlagen alle API-Aufrufe über den virtuellen Host oder den Zielendpunkt/Zielserver fehl.

So löschen Sie in der Regel einen Schlüsselspeicher/Truststore oder einen Alias:

  1. Erstellen Sie wie oben beschrieben einen neuen Schlüsselspeicher/Truststore oder Alias.
  2. Aktualisieren Sie bei eingehenden Verbindungen, d. h. einer API-Anfrage an Edge, die Konfiguration des virtuellen Hosts, um auf den neuen Schlüsselspeicher und den Schlüsselalias zu verweisen.
  3. Für ausgehende Verbindungen, d. h. von Apigee zu einem Back-End-Server:
    1. Aktualisieren Sie die TargetEndpoint-Konfiguration für alle API-Proxys, die auf den alten Schlüsselspeicher und den alten Schlüsselalias verwiesen haben, um auf den neuen Schlüsselspeicher und den Schlüsselalias zu verweisen. Wenn Ihr TargetEndpoint auf einen TargetServer verweist, aktualisieren Sie die TargetServer-Definition, um auf den neuen Schlüsselspeicher und den Schlüsselalias zu verweisen.
    2. Wenn in der TargetEndpoint-Definition direkt auf den Schlüsselspeicher und den Truststore verwiesen wird, müssen Sie den Proxy noch einmal bereitstellen. Wenn der TargetEndpoint auf eine Zielserverdefinition und die TargetServer-Definition auf den Schlüsselspeicher und den Truststore verweist, ist keine erneute Proxybereitstellung erforderlich.
    3. Prüfen Sie, ob Ihre API-Proxys ordnungsgemäß funktionieren.
    4. Löschen Sie den Schlüsselspeicher/Truststore oder den Alias.

Weitere Informationen finden Sie unter Zertifikat in einem Alias aktualisieren.

Schlüsselspeicher oder Truststore löschen

Mit der API Schlüsselspeicher oder Truststore löschen können Sie einen Schlüsselspeicher oder Truststore löschen:

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, 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 die API Delete alias verwenden:

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