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

Przeglądasz dokumentację Apigee Edge.
Przejdź do Dokumentacja 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.

.

Wprowadzenie

Aby skonfigurować funkcje zależne od infrastruktury klucza publicznego (np. TLS), musisz wykonać te czynności: tworzyć magazyny kluczy i magazyny zaufania, które dostarczają niezbędne klucze i certyfikaty cyfrowe.

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

Utwórz magazyn kluczy

Magazyn kluczy jest specyficzny dla środowiska w organizacji, na przykład środowiska testowego lub produkcyjnego dla środowiska. Dlatego, jeśli przed wdrożeniem chcesz przetestować magazyn kluczy w środowisku testowym, w środowisku produkcyjnym, musisz utworzyć je w obu środowiskach.

Aby utworzyć magazyn kluczy w środowisku:

  1. Aby utworzyć magazyn kluczy, użyj wywołania interfejsu API w tej sekcji.
  2. Utwórz alias i prześlij na niego parę certyfikat/klucz. Sposób przesłania certyfikatu zależy od formatu pary certyfikat/klucz. W sekcjach poniżej dowiesz się, jak przesyłać każdy typ pary certyfikatu/klucza:

Aby utworzyć magazyn kluczy, podaj jego nazwę w polu Utwórz API magazynu 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ć następujące pliki i katalogi:

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

Plik JAR magazynu kluczy może zawierać tylko te 3 pliki. Jeśli masz łańcuch certyfikatów, wszystkie certyfikaty w łańcuchu musi być dołączony do jednego pliku PEM, w którym należy podpisać ostatni certyfikat przez główny urząd certyfikacji. Certyfikaty muszą być dołączone do pliku PEM w prawidłowej kolejności. z pustym wierszem między poszczególnymi certyfikatami, co oznacza, że:

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 utwórz plik o nazwie descriptor.properties /META-INF 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 Twój plik JAR:

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

Możesz teraz przesyłać pliki JAR zawierające certyfikat i klucz prywatny przy użyciu funkcji Utwórz alias za pomocą interfejsu API 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 z magazynem kluczy. Podczas tworzenia hosta wirtualnego odwołujesz się do certyfikatu i klucza za pomocą nazwa 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 zawierające certyfikat i klucz prywatny za pomocą pliku Utwórz alias na podstawie certyfikatu i pliku PEM klucza API:

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 z magazynem kluczy. Podczas tworzenia hosta wirtualnego odwołujesz się do certyfikatu i klucza za pomocą nazwa 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 PKCS12/PFX plik

Prześlij plik PKCS12/PFX zawierający certyfikat i klucz prywatny przy użyciu tagu Utwórz alias za pomocą interfejsu API 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 z magazynem kluczy. Podczas tworzenia hosta wirtualnego odwołujesz się do certyfikatu i klucza za pomocą nazwa 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"
}

utworzyć i przesłać samodzielnie podpisany certyfikat oraz klawisz

Za pomocą Utwórz alias, generując samodzielnie podpisany certyfikat API w celu utworzenia certyfikatu podpisanego samodzielnie oraz i prześlij je na alias. Poniższe wywołanie określa tylko wymagane informacje do utworzyć certyfikat podpisany samodzielnie. Możesz zmodyfikować to połączenie, aby podać dodatkowe informacje:

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 tworzenia magazynu kluczy, są takie same jak te używane do utworzenia magazynu kluczy. Jedyną różnicą jest to, że do magazynu zaufania przesyłasz tylko plik certyfikatu jako plik PEM.

Jeśli certyfikat jest częścią łańcucha, musisz przesłać wszystkie certyfikaty należące do łańcucha oddzielnie lub utworzyć pojedynczy plik zawierający wszystkie certyfikaty. Musisz wstawić pustą wartość między poszczególnymi certyfikatami w pliku.

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

Ostateczny certyfikat jest zwykle podpisany przez wystawcę certyfikatu. Na przykład w tagu należy przesłać certyfikat klienta,client_cert_1 i certyfikat wystawcy certyfikatu klienta certyfikat, ca_cert.

Podczas dwukierunkowego uwierzytelniania TLS uwierzytelnianie klienta kończy się powodzeniem, gdy serwer wysyła 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 prześlesz jednak klienta_cert_2 do magazynu zaufania. Magazyn zaufania wciąż zawiera client_cert_1 oraz ca_cert.

Gdy serwer przekazuje client_cert_2 w ramach uzgadniania połączenia TLS, żądanie kończy się powodzeniem. To jest ponieważ Edge zezwala na pomyślną weryfikację TLS, gdy w w magazynie zaufania, ale została podpisany przez certyfikat znajdujący się w magazynie zaufania. Jeśli usuniesz urząd certyfikacji (ca_cert) z zaufanego magazynu, weryfikacja TLS zakończy się niepowodzeniem.

Utwórz w środowisku pusty magazyn zaufania za pomocą polecenia Utwórz Magazyn kluczy lub Truststore – 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

Po utworzeniu magazynu zaufania prześlij do niego certyfikat jako plik PEM przez za pomocą funkcji Utwórz alias za pomocą pliku PEM certyfikatu API:

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.

Szczegółowe informacje na temat istniejącego magazyn kluczy lub magazyn zaufania

Sprawdź, czy w środowisku występują istniejące magazyny kluczy, za pomocą narzędzia Wyświetl listę magazynów kluczy i Truststores API:

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 domyślny magazyn kluczy jest udostępniany zarówno organizacjom korzystającym z bezpłatnego okresu próbnego, środowiska testowego i produkcyjnego. Wyniki tej rozmowy powinny być widoczne w obu środowiska:

[ "freetrial" ]

Możesz użyć tego domyślnego magazynu kluczy, aby przetestować interfejsy API i przekazać interfejsy API do środowiska produkcyjnego, ale zwykle tworzy się własny magazyn kluczy z własnym certyfikatem i kluczem, przed wdrożeniem w produkcji.

W przypadku klientów Private Cloud zwrócona tablica jest pusta, dopóki nie utworzysz pierwszej do magazynu kluczy.

Sprawdź zawartość magazynu kluczy za pomocą funkcji Pobierz API Keystore lub Truststore W przypadku klienta korzystającego z chmury powinien być widoczny protokół TLS jednego serwera certyfikatu – domyślnego certyfikatu udostępnianego przez Apigee Edge dla 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"
}

Pobieranie informacji o aliasie

Aby uzyskać listę wszystkich aliasów magazynów kluczy, użyj funkcji Wyświetl listę aliasów API:

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 wystawca, użyj Pobierz alias API i określ 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 Eksportowanie certyfikatu dla aliasu 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"

Odpowiedź powinna wyglądać tak:

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

Jeśli certyfikat wygasł i chcesz go odnowić, możesz pobrać podpisywanie certyfikatu Żądanie (CSR). Następnie wyślij żądanie podpisania certyfikatu do urzędu certyfikacji, aby uzyskać nowy certyfikat. Generowanie żądania podpisania certyfikatu dla alias, użyj funkcji Wygeneruj żądanie podpisania certyfikatu dla aliasu 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"

Odpowiedź powinna wyglądać tak:

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

Dodaj certyfikat do magazynu zaufania na potrzeby dwukierunkowego protokołu TLS

Jeśli używasz dwukierunkowego protokołu TLS na potrzeby połączeń przychodzących, czyli żądania do interfejsu API wysyłanego do Edge magazyn zaufania zawiera certyfikat lub łańcuch urzędu certyfikacji dla każdego klienta, który może wysyłać żądania do Edge.

Po początkowym skonfigurowaniu magazynu zaufania możesz dodać wszystkie certyfikaty znanych klientów. Jednak z czasem możesz dodawać kolejne certyfikaty do magazynu zaufania, 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 Utwórz magazyn zaufania.
  3. Zaktualizuj odwołanie do magazynu zaufania, aby ustawić je na tę samą wartość. Ta aktualizacja powoduje, że Edge ponownie wczytuje magazyn zaufania i nowy certyfikat.

    Więcej informacji znajdziesz w sekcji Modyfikowanie pliku referencyjnego.

Usuwanie magazynu kluczy, magazynu zaufania lub aliasu

Podczas usuwania magazynu kluczy, magazynu zaufania lub aliasu musisz zachować ostrożność. Jeśli usuniesz magazyn kluczy, Trustedstore lub alias używany przez hosta wirtualnego, docelowy punkt końcowy lub serwer docelowy, wszystkie Wywołania interfejsu API przez hosta wirtualnego lub docelowy punkt końcowy/serwer docelowy zakończą się niepowodzeniem.

Zwykle proces usuwania magazynu kluczy, magazynu zaufania lub aliasu:

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

Zobacz Aby uzyskać więcej informacji, zaktualizuj certyfikat w aliasie.

Usuwanie magazynu kluczy lub magazynu zaufania

Magazyn kluczy lub magazyn zaufania możesz usunąć za pomocą funkcji Usuń interfejs API 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 używany przez hosta wirtualnego: musisz ponownie wdrożyć serwery proxy interfejsu API.

Usuwanie aliasu

Alias w magazynie kluczy lub magazynie zaufania możesz usunąć za pomocą funkcji Usuń alias API:

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