Tworzenie magazynów kluczy i magazynów zaufania przy użyciu interfejsu Edge Management API

Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
informacje.

Ten dokument opisuje, jak tworzyć, modyfikować i usuwać magazyny kluczy oraz magazyny zaufania dla Edge dla Cloud oraz Edge dla Private Cloud w wersji 4.18.01 i nowszych.

Wstęp

Aby skonfigurować funkcje, które wymagają infrastruktury kluczy publicznych, np. TLS, musisz utworzyć magazyny kluczy i magazyny zaufania, które udostępniają niezbędne klucze i certyfikaty cyfrowe.

Informacje o magazynach kluczy, magazynie zaufania i aliasach znajdziesz w artykule o magazynach kluczy i magazynach zaufania.

Tworzenie magazynu kluczy

Magazyn kluczy jest przypisany do środowiska w organizacji, na przykład środowiska testowego lub produkcyjnego. Jeśli więc chcesz przetestować magazyn kluczy w środowisku testowym przed wdrożeniem w środowisku produkcyjnym, musisz utworzyć go w obu środowiskach.

Aby utworzyć magazyn kluczy w środowisku:

  1. Użyj wywołania interfejsu API w tej sekcji, aby utworzyć magazyn kluczy.
  2. Utwórz alias i prześlij na niego parę certyfikatów i kluczy. Sposób przesyłania certyfikatu i klucza zależy od formatu pary certyfikatu i klucza. W tych sekcjach opisano, jak przesyłać poszczególne typy par certyfikatów i kluczy:

Aby utworzyć magazyn kluczy, określ jego nazwę w interfejsie API Utwórz magazyn kluczy lub Truststore. Nazwa magazynu kluczy może zawierać tylko znaki alfanumeryczne:

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

Przykładowa odpowiedź:

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

Prześlij certyfikat i klucz jako plik JAR

Najpierw musisz utworzyć plik JAR z kluczem prywatnym, certyfikatem i plikiem manifestu. Plik JAR musi zawierać te pliki i katalogi:

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

JAR magazynu kluczy może zawierać tylko te 3 pliki. Jeśli istnieje łańcuch certyfikatów, wszystkie certyfikaty w łańcuchu muszą być dołączone do jednego pliku PEM, w którym ostatni certyfikat powinien być podpisany przez główny urząd certyfikacji. Certyfikaty muszą być dołączone do pliku PEM w odpowiedniej kolejności (między każdym certyfikatem musi być pusty wiersz, co oznacza:

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

W katalogu zawierającym parę kluczy i certyfikat utwórz katalog o nazwie /META-INF. Następnie w usłudze /META-INF utwórz plik o nazwie descriptor.properties z tą zawartością:

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

Wygeneruj plik JAR zawierający parę kluczy i certyfikat:

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

Dodaj descriptor.properties do pliku JAR:

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

Możesz teraz przesyłać pliki JAR zawierające certyfikat i klucz prywatny za pomocą interfejsu API Tworzenie aliasu z pliku JAR lub 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"

gdzie opcja -F określa ścieżkę do pliku JAR.

W tym wywołaniu określasz:

  • alias_name – identyfikuje certyfikat i klucz w magazynie kluczy. Podczas tworzenia hosta wirtualnego odwołujesz się do certyfikatu i klucza za pomocą jego aliasu.
  • key_pword – hasło klucza prywatnego. Pomiń ten parametr, jeśli klucz prywatny nie ma hasła.

Sprawdź, czy magazyn kluczy został prawidłowo przesłany:

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

Przykładowa odpowiedź:

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

Prześlij certyfikat i klucz jako pliki PEM

Prześlij pliki PEM, które zawierają certyfikat i klucz prywatny, przy użyciu interfejsu API Tworzenie aliasu na podstawie plików PEM certyfikatów i kluczy:

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"

gdzie opcja -F określa ścieżki do plików PEM.

W tym wywołaniu określasz:

  • alias_name – identyfikuje certyfikat i klucz w magazynie kluczy. Podczas tworzenia hosta wirtualnego odwołujesz się do certyfikatu i klucza za pomocą jego aliasu.
  • key_pword – hasło klucza prywatnego. Pomiń ten parametr, jeśli klucz prywatny nie ma hasła.

Sprawdź, czy magazyn kluczy został prawidłowo przesłany:

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

Przykładowa odpowiedź:

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

Prześlij certyfikat i klucz jako plik PKCS12/PFX

Prześlij plik PKCS12/PFX zawierający certyfikat i klucz prywatny przy użyciu interfejsu API Tworzenie aliasu z pliku JAR lub 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"

gdzie opcja -F określa ścieżkę do pliku P12.

W tym wywołaniu określasz:

  • alias_name – identyfikuje certyfikat i klucz w magazynie kluczy. Podczas tworzenia hosta wirtualnego odwołujesz się do certyfikatu i klucza za pomocą jego aliasu.
  • key_pword – hasło klucza prywatnego. Pomiń ten parametr, jeśli klucz prywatny nie ma hasła.

Sprawdź, czy magazyn kluczy został prawidłowo przesłany:

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

Przykładowa odpowiedź:

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

Utwórz i prześlij samodzielnie podpisany certyfikat oraz klucz

Za pomocą interfejsu API Utwórz alias, generując certyfikat podpisany samodzielnie, możesz utworzyć samodzielnie podpisany certyfikat i klucz, a następnie przesłać je do aliasu. To wywołanie określa tylko informacje wymagane do utworzenia certyfikatu podpisanego samodzielnie. Można zmodyfikować to połączenie i dodać więcej informacji:

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"

Odpowiedź powinna wyglądać tak:

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

Tworzenie magazynu zaufania

Interfejsy API, których używasz do utworzenia magazynu kluczy, są takie same jak do tworzenia magazynu kluczy. Jedyną różnicą jest to, że do magazynu zaufania musisz przesłać tylko plik certyfikatu jako plik PEM.

Jeśli certyfikat jest częścią łańcucha, musisz przesłać wszystkie certyfikaty w łańcuchu oddzielnie do magazynu zaufania lub utworzyć jeden plik zawierający wszystkie certyfikaty. Między każdym certyfikatem w pliku musisz wstawić pusty wiersz.

Jeśli chcesz przesłać wiele samodzielnie podpisanych certyfikatów, które nie są częścią łańcucha, użyj tej samej metody: jeśli chcesz przesłać kilka zaufanych certyfikatów, prześlij je w jednym pliku.

Ostateczny certyfikat zwykle podpisuje wydawca certyfikatu. Na przykład do magazynu zaufania możesz przesłać certyfikat klienta (client_cert_1) i certyfikat wydawcy certyfikatu klienta: ca_cert.

W przypadku dwukierunkowego uwierzytelniania TLS uwierzytelnianie klienta kończy się powodzeniem, gdy serwer wysyła do klienta certyfikat client_cert_1 w ramach procesu uzgadniania połączenia TLS.

Możesz też mieć drugi certyfikat client_cert_2 podpisany tym samym certyfikatem: ca_cert. Nie przesyłaj jednak certyfikatu client_cert_2 do magazynu zaufania. Magazyn zaufania nadal zawiera client_cert_1 i ca_cert.

Gdy serwer przekaże certyfikat client_cert_2 w ramach uzgadniania połączenia TLS, żądanie zostanie zrealizowane. Wynika to z faktu, że Edge umożliwia przeprowadzenie weryfikacji TLS, gdy klient_cert_2 nie istnieje w magazynie zaufania, ale został podpisany za pomocą certyfikatu istniejącego w tym magazynie. Jeśli usuniesz certyfikat CA (ca_cert) z magazynu zaufania, weryfikacja TLS się nie powiedzie.

Utwórz w środowisku pusty magazyn zaufania za pomocą opcji Utwórz magazyn kluczy lub Truststore, czyli ten sam interfejs API, którego używasz do utworzenia magazynu kluczy:

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

Gdy utworzysz magazyn zaufania, prześlij do niego certyfikat w postaci pliku PEM, korzystając z interfejsu API tworzenia aliasu z pliku PEM certyfikatu:

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"

gdzie opcja -F określa ścieżkę do pliku PEM.

Uzyskiwanie informacji o istniejącym magazynie kluczy lub magazynie zaufania

Sprawdź, czy w środowisku są dostępne magazyny kluczy, korzystając z interfejsu API List Keystores i Truststores:

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

W przypadku klientów korzystających z chmury dostępny jest domyślny magazyn kluczy dla organizacji korzystających z bezpłatnego okresu próbnego zarówno w środowiskach testowych, jak i produkcyjnych. To wywołanie powinno przynieść takie wyniki w obu środowiskach:

[ "freetrial" ]

Możesz użyć tego domyślnego magazynu kluczy do testowania interfejsów API i przekazywania ich do środowiska produkcyjnego, ale zwykle przed wdrożeniem w środowisku produkcyjnym tworzysz własny magazyn kluczy z własnym certyfikatem i kluczem.

W przypadku klientów Private Cloud zwracana tablica jest pusta, dopóki nie utworzysz pierwszego magazynu kluczy.

Sprawdź zawartość magazynu kluczy za pomocą interfejsu API Get a Keystore lub Truststore. W przypadku klienta korzystającego z chmury powinien być widoczny certyfikat TLS pojedynczego serwera – domyślny certyfikat udostępniany przez Apigee Edge na potrzeby bezpłatnych kont próbnych.

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

Odpowiedź powinna wyglądać tak:

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

Uzyskiwanie szczegółów aliasu

Aby uzyskać listę wszystkich aliasów magazynów kluczy, użyj interfejsu API List aliasów:

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

Odpowiedź powinna wyglądać tak:

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

Aby uzyskać wszystkie informacje o aliasie, takie jak data ważności i wydawca, użyj interfejsu API Pobierz alias i podaj nazwę aliasu:

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

Odpowiedź powinna wyglądać tak:

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

Aby pobrać certyfikat dla aliasu, użyj interfejsu API eksportowania certyfikatu dla aliasu:

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"

Odpowiedź powinna wyglądać tak:

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

Jeśli masz wygasły certyfikat i chcesz go odnowić, możesz pobrać żądanie podpisania certyfikatu. Następnie należy wysłać przedstawiciela obsługi klienta do urzędu certyfikacji, aby uzyskać nowy certyfikat. Aby wygenerować żądanie podpisania certyfikatu dla aliasu, użyj interfejsu API Wygeneruj żądanie podpisania certyfikatu dla aliasu:

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"

Odpowiedź powinna wyglądać tak:

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

Dodawanie certyfikatu do magazynu zaufania dla dwukierunkowego protokołu TLS

W przypadku używania dwukierunkowego protokołu TLS do połączeń przychodzących, czyli żądania do interfejsu API do Edge, magazyn zaufania zawiera certyfikat lub łańcuch urzędów certyfikacji dla każdego klienta, który może wysyłać żądania do Edge.

Podczas początkowego konfigurowania magazynu zaufania możesz dodać wszystkie certyfikaty znanych klientów. Z czasem jednak możesz chcieć dodawać do niego kolejne certyfikaty, dodając nowych klientów.

Aby dodać nowe certyfikaty do magazynu zaufania używanego na potrzeby dwukierunkowego protokołu TLS:

  1. Sprawdź, czy używasz odwołania do magazynu zaufania na hoście wirtualnym.
  2. Prześlij nowy certyfikat do magazynu zaufania w sposób opisany powyżej w sekcji Tworzenie magazynu zaufania.
  3. Zaktualizuj odniesienie do magazynu zaufania, aby ustawić dla niego tę samą wartość. Ta aktualizacja powoduje, że Edge ponownie wczytuje magazyn zaufania i nowy certyfikat.

    Więcej informacji znajdziesz w artykule Modyfikowanie pliku referencyjnego.

Usuwanie magazynu kluczy, magazynu kluczy lub aliasu

Gdy usuwasz magazyn kluczy, magazyn zaufania lub alias, musisz zachować ostrożność. Jeśli usuniesz magazyn kluczy, magazyn zaufania lub alias używany przez hosta wirtualnego, docelowy punkt końcowy lub serwer docelowy, wszystkie wywołania interfejsu API wysyłane przez hosta wirtualnego, docelowy punkt końcowy/serwer docelowy zakończą się niepowodzeniem.

Zwykle proces usuwania magazynu kluczy, magazynu zaufania lub aliasu to:

  1. Utwórz nowy magazyn kluczy/magazyn zaufania albo alias w sposób opisany powyżej.
  2. W przypadku połączeń przychodzących, czyli żądania do interfejsu API do Edge, zaktualizuj konfigurację hosta wirtualnego, aby odwoływała się do nowego magazynu kluczy i aliasu kluczy.
  3. W przypadku połączeń wychodzących, czyli z Apigee do serwera backendu:
    1. Zaktualizuj konfigurację TargetEndpoint wszystkich serwerów proxy interfejsu API, które odwoływały się do starego magazynu kluczy i aliasu kluczy, aby odwoływały się do nowego magazynu kluczy i aliasu kluczy. Jeśli docelowy punkt końcowy odwołuje się do serwera docelowego, zaktualizuj definicję serwera docelowego, aby odwoływała się do nowego magazynu kluczy i aliasu klucza.
    2. Jeśli do magazynu kluczy i zaufanych magazynów odwołuje się bezpośrednio z definicji punktu końcowego docelowego, musisz ponownie wdrożyć serwer proxy. Jeśli docelowy punkt końcowy odwołuje się do definicji serwera docelowego, a definicja serwera docelowego odnosi się do magazynu kluczy i magazynu zaufanych, nie jest konieczne ponowne wdrożenie serwera proxy.
    3. Sprawdź, czy serwery proxy interfejsu API działają prawidłowo.
    4. Usuń magazyn kluczy, magazyn zaufania lub alias.

Więcej informacji znajdziesz w sekcji Aktualizowanie certyfikatu w aliasie.

Usuwanie magazynu kluczy lub magazynu kluczy

Magazyn kluczy lub magazyn zaufania możesz usunąć, korzystając z interfejsu API Usuwanie magazynu kluczy lub Truststore:

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

Jeśli usuniesz i ponownie utworzysz magazyn kluczy lub magazyn zaufania, który jest używany przez hosta wirtualnego, konieczne będzie ponowne wdrożenie serwerów proxy interfejsu API.

Usuwanie aliasu

Możesz usunąć alias w magazynie kluczy lub zaufania za pomocą interfejsu API Delete alias (Usuń alias):

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