Schlüsselspeicher und Truststores mit der Edge Management API erstellen

Sie lesen gerade die Dokumentation zu Apigee Edge.
Zur Dokumentation zuApigee X wechseln.
info

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.

Einführung

Wenn Sie Funktionen konfigurieren möchten, die auf der Public-Key-Infrastruktur basieren, z. B. TLS, müssen Sie Schlüsselspeicher und Truststores erstellen, die die erforderlichen Schlüssel und digitalen Zertifikate enthalten.

Eine Einführung in Schlüsselspeicher, Truststores und Aliase 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 in einer Testumgebung testen möchten, bevor Sie ihn in Ihrer Produktionsumgebung bereitstellen, 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 Art und Weise, wie Sie das Zertifikat und den Schlüssel hochladen, hängt vom Format des Zertifikat/Schlüsselpaars ab. In den folgenden Abschnitten wird beschrieben, wie Sie die einzelnen Arten von Zertifikat/Schlüsselpaaren hochladen:

Wenn Sie einen Schlüsselspeicher erstellen möchten, geben Sie den Namen des Schlüsselspeichers in der API zum Erstellen eines Schlüsselspeichers oder Truststores an. Der Name des Schlüsselspeichers 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 zuerst eine JAR-Datei mit Ihrem privaten Schlüssel, 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. Das letzte Zertifikat muss von einer Root-Zertifizierungsstelle signiert sein. 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 im Verzeichnis mit Ihrem Schlüsselpaar und Zertifikat ein Verzeichnis mit dem Namen /META-INF. Erstellen Sie dann in /META-INF eine Datei mit dem Namen „descriptor.properties“ und folgendem Inhalt:

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

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

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

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

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

Sie können jetzt Ihre JAR-Dateien mit einem Zertifikat und einem privaten Schlüssel mit der API zum Erstellen eines Alias aus einer JAR- oder PKCS-Datei 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"

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

In diesem Aufruf geben Sie Folgendes an:

  • alias_name : Gibt das Zertifikat und den Schlüssel in dem Schlüsselspeicher an. Wenn Sie einen virtuellen Host erstellen, verweisen Sie mit dem Aliasnamen auf das Zertifikat und den Schlüssel.
  • 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 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 mit einem Zertifikat und einem privaten Schlüssel mit der API zum Erstellen eines Alias aus Zertifikat- und Schlüssel-PEM-Dateien 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 : Gibt das Zertifikat und den Schlüssel in dem Schlüsselspeicher an. Wenn Sie einen virtuellen Host erstellen, verweisen Sie mit dem Aliasnamen auf das Zertifikat und den Schlüssel.
  • 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 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- Datei hochladen

Laden Sie eine PKCS12-/PFX-Datei mit einem Zertifikat und einem privaten Schlüssel mit der API zum Erstellen eines Alias aus einer JAR- oder PKCS-Datei hoch:

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 : Gibt das Zertifikat und den Schlüssel in dem Schlüsselspeicher an. Wenn Sie einen virtuellen Host erstellen, verweisen Sie mit dem Aliasnamen auf das Zertifikat und den Schlüssel.
  • 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 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"
}

Selbst signiertes Zertifikat und Schlüssel erstellen und hochladen

Mit der API zum Erstellen eines Alias durch Generieren eines selbst signierten Zertifikats können Sie ein selbst signiertes Zertifikat und einen Schlüssel erstellen und in einen Alias hochladen. Der folgende Aufruf gibt nur die erforderlichen Informationen zum Erstellen des selbst signierten Zertifikats an. 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 nur eine Zertifikatsdatei 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, verwenden Sie die gleiche Methode: Wenn Sie mehrere Zertifikate haben, denen Sie vertrauen möchten, laden Sie sie in einer einzelnen Datei hoch.

Das endgültige Zertifikat wird in der Regel vom Zertifikatsaussteller signiert. Im Truststore laden Sie beispielsweise ein Clientzertifikat, client_cert_1, und das Zertifikat des Ausstellers des Clientzertifikats, ca_cert, hoch.

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

Alternativ haben Sie ein zweites Zertifikat, client_cert_2, das mit demselben Zertifikat, ca_cert, signiert wurde. Sie laden client_cert_2 jedoch 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. Das liegt daran, dass Edge die TLS-Überprüfung als erfolgreich ansieht, wenn client_cert_2 nicht im Truststore vorhanden ist, 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-Überprüfung fehl.

Erstellen Sie mit der API zum Erstellen eines Schlüsselspeichers oder Truststores einen leeren Truststore in der Umgebung:

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 zum Erstellen eines Alias aus einer Zertifikat-PEM-Datei:

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 mit der API zum Auflisten von Schlüsselspeichern und Truststores, ob in Ihrer Umgebung Schlüsselspeicher vorhanden sind:

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

Für Cloud-Kunden wird in der Test- und Produktionsumgebung ein Standardschlüsselspeicher für kostenlose Testorganisationen bereitgestellt. Für beide Umgebungen sollten Sie die folgenden Ergebnisse für diesen Aufruf sehen:

[ "freetrial" ]

Sie können diesen Standardschlüsselspeicher verwenden, um Ihre APIs zu testen und in der Produktion bereitzustellen. In der Regel erstellen Sie jedoch vor der Bereitstellung in der 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 mit der API zum Abrufen eines Schlüsselspeichers oder Truststores. Für einen Cloud-Kunden sollte ein einzelnes TLS -Serverzertifikat angezeigt werden, 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

Rufen Sie mit der API zum Auflisten von Aliasen eine Liste aller Aliase für einen Schlüsselspeicher ab:

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 abrufen möchten, z. B. Ablaufdatum und Aussteller, verwenden Sie die API zum Abrufen eines Alias und geben Sie 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"
}

Verwenden Sie die API zum Exportieren eines Zertifikats für einen Alias, um das Zertifikat für einen Alias herunterzuladen:

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 erneuern möchten, können Sie eine Zertifikatsignierungs anfrage (Certificate Signing Request, CSR) herunterladen. Senden Sie die CSR dann an Ihre Zertifizierungsstelle, um ein neues Zertifikat zu erhalten. Verwenden Sie die API zum Generieren einer CSR für einen Alias, um eine CSR für einen Alias zu 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-----

Zertifikat für bidirektionale TLS zu einem Truststore hinzufügen

Bei der Verwendung von bidirektionaler TLS für eingehende Verbindungen, 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. Im Laufe der Zeit möchten Sie jedoch möglicherweise weitere Zertifikate zum Truststore hinzufügen, wenn Sie neue Clients hinzufügen.

So fügen Sie einem Truststore, der für die bidirektionale TLS verwendet wird, neue Zertifikate hinzu:

  1. Achten Sie darauf, dass Sie im virtuellen Host einen Verweis auf den Truststore verwenden.
  2. Laden Sie ein neues Zertifikat in den Truststore hoch, wie oben unter Truststore erstellen beschrieben.
  3. Aktualisieren Sie den Truststore-Verweis und legen Sie ihn auf denselben Wert fest. Durch diese Aktualisierung wird der Truststore und das neue Zertifikat von Edge neu geladen.

    Weitere Informationen finden Sie unter Verweis ändern.

Schlüsselspeicher/Truststore oder Alias löschen

Sie müssen vorsichtig sein, wenn Sie einen Schlüsselspeicher/Truststore oder 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 Zielendpunkt/Zielserver fehl.

In der Regel gehen Sie so vor, um einen Schlüsselspeicher/Truststore oder Alias zu löschen:

  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, die Konfiguration des virtuellen Hosts, um auf den neuen Schlüsselspeicher und den neuen Alias zu verweisen.
  3. Für ausgehende Verbindungen, d. h. von Apigee zu einem Backend-Server:
    1. Aktualisieren Sie die TargetEndpoint-Konfiguration für alle API-Proxys, die auf den alten Schlüsselspeicher und den alten Alias verwiesen haben, um auf den neuen Schlüsselspeicher und den neuen Alias zu verweisen. Wenn Ihr TargetEndpoint auf einen TargetServer verweist, aktualisieren Sie die TargetServer-Definition, um auf den neuen Schlüsselspeicher und den neuen Alias zu verweisen.
    2. Wenn der Schlüsselspeicher und der Truststore direkt in der TargetEndpoint Definition referenziert werden, müssen Sie den Proxy neu bereitstellen. Wenn der TargetEndpoint auf eine TargetServer-Definition verweist und die TargetServer-Definition auf den Schlüsselspeicher und den Truststore verweist, ist keine erneute Bereitstellung des Proxys erforderlich.
    3. Prüfen Sie, ob Ihre API-Proxys ordnungsgemäß funktionieren.
    4. Löschen Sie den Schlüsselspeicher/Truststore oder Alias.

Weitere Informationen finden Sie unter Zertifikat in einem Alias aktualisieren.

Schlüsselspeicher oder Truststore löschen

Sie können einen Schlüsselspeicher oder Truststore mit der API zum Löschen eines Schlüsselspeichers oder Truststores 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 löschen und neu erstellen, der von einem virtuellen Host verwendet wird, dann müssen Sie Ihre API-Proxys neu bereitstellen.

Alias löschen

Sie können einen Alias in einem Schlüsselspeicher oder Truststore mit der API zum Löschen eines Alias 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}