Tworzenie magazynów kluczy i magazynów zaufania dla Private Cloud w wersji 4.17.09 lub starszej

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

Z tego dokumentu dowiesz się, jak tworzyć, modyfikować i usuwać repozytoria kluczy i repozytoria zaufania dla Edge w wersji Private Cloud 4.17.09 lub starszej.

Informacje o magazynach kluczy i magazynach zaufania

Sklepy kluczy i repozytoria zaufanych sklepów definiują repozytoria certyfikatów bezpieczeństwa używanych do szyfrowania TLS. Główna różnica między nimi polega na tym, gdzie są używane w procesie nawiązywania połączenia TLS:

  • Magazyn kluczy zawiera certyfikat TLS i klucz prywatny, które służą do identyfikowania podmiotu podczas uzgadniania połączenia TLS.

    W przypadku TLS jednokierunkowego, gdy klient łączy się z końcowym punktem TLS na serwerze, magazyn kluczy serwera przedstawia klientowi certyfikat serwera (certyfikat publiczny). Następnie klient weryfikuje ten certyfikat w urzędzie certyfikacji (CA), takim jak Symantec lub VeriSign.

    W dwukierunkowym TLS zarówno klient, jak i serwer utrzymują magazyn kluczy z własnym certyfikatem i kluczem prywatnym używanym do wzajemnego uwierzytelniania.
  • Zaufany magazyn kluczy zawiera certyfikaty używane do weryfikowania certyfikatów otrzymanych w ramach uzgadniania połączenia TLS.

    W przypadku jednokierunkowego TLS magazyn zaufania nie jest wymagany, jeśli certyfikat jest podpisany przez prawidłowy urząd certyfikacji. Jeśli certyfikat otrzymany przez klienta TLS jest podpisany przez prawidłowy urząd certyfikacji, klient wysyła do tego urzędu żądanie uwierzytelnienia certyfikatu. Klient TLS zwykle używa magazynu zaufania do sprawdzania certyfikatów podpisanych samodzielnie otrzymanych od serwera TLS lub certyfikatów, które nie są podpisane przez zaufany urząd certyfikacji. W tym scenariuszu klient wypełnia swój zaufany magazyn certyfikatów certyfikatami, którym ufa. Gdy klient otrzyma certyfikat serwera, przychodzący certyfikat jest weryfikowany na podstawie certyfikatów w katalogu zaufanych.

    Na przykład klient TLS łączy się z serwerem TLS, który używa samodzielnie podpisanego certyfikatu. Ponieważ jest to certyfikat podpisany samodzielnie, klient nie może go zweryfikować za pomocą urzędu certyfikacji. Zamiast tego klient wczytuje samodzielnie podpisany certyfikat serwera do swojego zaufanej pamięci. Następnie, gdy klient próbuje połączyć się z serwerem, używa swojego zaufanych magazynów kluczy do weryfikacji certyfikatu otrzymanego od serwera.

    W przypadku dwukierunkowego TLS zarówno klient TLS, jak i serwer TLS mogą używać magazynu zaufania. Zaufany magazyn kluczy jest wymagany podczas wykonywania dwukierunkowego TLS, gdy Edge działa jako serwer TLS.

Certyfikaty mogą być wystawiane przez urząd certyfikacji (CA) lub podpisane samodzielnie za pomocą wygenerowanego klucza prywatnego. Jeśli masz dostęp do urzędu certyfikacji, postępuj zgodnie z instrukcjami urzędu dotyczącymi generowania kluczy i wydawania certyfikatów. Jeśli nie masz dostępu do urzędu certyfikacji, możesz wygenerować samodzielnie podpisany certyfikat za pomocą jednego z wielu dostępnych publicznie bezpłatnych narzędzi, takich jak openssl.

Wdrażanie magazynu kluczy i magazynu zaufania w przeglądarce Edge

W Edge magazyn kluczy zawiera co najmniej 1 plik JAR, który zawiera:

  • certyfikat TLS jako plik PEM – certyfikat podpisany przez urząd certyfikacji (CA), łańcuch certyfikatów, w którym ostatni certyfikat jest podpisany przez urząd certyfikacji, lub certyfikat samopodpisany;
  • klucz prywatny jako plik PEM. Edge obsługuje klucze o długości do 2048 bitów. Hasło wielowyrazowe jest opcjonalne.

Magazyn zaufania jest podobny do magazynu kluczy, ale zawiera tylko certyfikaty w pliku PEM, a nie klucze prywatne.

Jeśli certyfikat jest częścią łańcucha, repozytorium kluczy lub repozytorium zaufania musi zawierać wszystkie certyfikaty z łańcucha, jako pojedyncze pliki PEM lub jako jeden plik. Jeśli używasz jednego pliku, certyfikaty muszą być uporządkowane w taki sposób, aby pierwszy certyfikat w pliku był certyfikatem używanym do TLS, a następnie łańcuch certyfikatów prowadził do certyfikatu urzędu certyfikacji. Musisz wstawić pusty wiersz między każdym certyfikatem w pliku.

Edge udostępnia interfejs API, którego używasz do tworzenia magazynów kluczy i magazynów zaufania. Interfejsy API są takie same. Różnica polega na tym, że podczas tworzenia magazynu kluczy przekazujesz plik JAR zawierający certyfikat i klucz prywatny. Podczas tworzenia zaufanej pamięci podręcznej przekazujesz tylko certyfikat w pliku PEM.

Informacje o formacie plików certyfikatów i kluczy

Przykłady w tym dokumencie pokazują certyfikat i klucz TLS zdefiniowane jako pliki PEM, które są zgodne z formatem X.509. Jeśli certyfikat lub klucz prywatny nie jest zdefiniowany przez plik PEM, możesz go przekonwertować do tego formatu za pomocą narzędzi takich jak openssl.

Wiele plików .crt i .key jest jednak już w formacie PEM. Jeśli te pliki są plikami tekstowymi i są załączone w:

-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----

lub

-----BEGIN ENCRYPTED PRIVATE KEY-----
-----END ENCRYPTED PRIVATE KEY-----

Wtedy pliki są zgodne z formatem PEM i można ich używać w magazynie kluczy lub magazynie zaufania bez konwertowania ich do pliku PEM.

Jeśli masz łańcuch certyfikatów i chcesz go użyć w magazynie kluczy lub magazynie zaufania, możesz połączyć wszystkie certyfikaty w jeden plik PEM, umieszczając nową linię między każdym certyfikatem. Certyfikaty muszą być uporządkowane, a ostatni certyfikat musi być certyfikatem głównym lub certyfikatem pośrednim podpisanym przez certyfikat główny:

-----BEGIN CERTIFICATE-----
(Your Primary TLS certificate)
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
(Intermediate certificate)
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
(Root certificate or intermediate certificate signed by a root certificate)
-----END CERTIFICATE-----

Uzyskiwanie szczegółów o istniejącym magazynie kluczy

Sprawdź, czy w Twoim środowisku są jakieś istniejące magazyny kluczy, korzystając z interfejsu API List Keystores and Truststores:

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

W przypadku klientów korzystających z usług w chmurze w organizacjach korzystających z bezpłatnego okresu próbnego udostępniamy domyślny magazyn kluczy zarówno w środowisku testowym, jak i produkcyjnym. W przypadku obu środowisk w ramach tego wywołania powinny pojawić się te wyniki:

[ "freetrial" ]

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

W przypadku klientów korzystających z usługi Private Cloud zwracany tablica jest pusta, dopóki nie utworzysz pierwszego magazynu kluczy.

Sprawdź zawartość klucza za pomocą interfejsu Get a Keystore or Truststore API. W przypadku klienta chmurowego powinien być widoczny jeden certyfikat TLS serwera – domyślny certyfikat, który Apigee Edge udostępnia dla kont z bezpłatnym okresem próbnym.

curl https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores/freetrial \
-u email:password

Odpowiedź powinna wyglądać tak:

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

Te informacje możesz też wyświetlić w interfejsie zarządzania Edge:

  1. Zaloguj się w interfejsie zarządzania Edge pod adresem https://enterprise.apigee.com (chmura) lub http://<ms-ip>:9000 (lokalnie), gdzie <ms-ip> to adres IP węzła serwera zarządzania.
  2. W menu interfejsu zarządzania Edge kliknij Administracja > Certyfikaty TLS.

Pobieranie szczegółów certyfikatu TLS

Aby wyświetlić szczegóły certyfikatów TLS w kluczu publicznym, takie jak data ważności i wystawca, możesz użyć interfejsu API Get Cert Details from a Keystore or Truststore. Najpierw sprawdź, czy certyfikat, który Cię interesuje, jest dostępny. W tym przykładzie pobierane są informacje z magazynu kluczy o nazwie „freetrial”.

curl https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores/freetrial \
-u email:password

Przykładowa odpowiedź:

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

Następnie użyj wartości właściwości certs, aby uzyskać szczegóły certyfikatu:

curl https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores/freetrial/certs/wildcard.apigee.net.crt \
-u email:password

Przykładowa odpowiedź:

{
 "certInfo" : [ {
   "expiryDate" : "Wed, 23 Apr 2014 20:50:02 UTC",
   "isValid" : "Yes",
   "issuer" : "CN=Go Daddy Secure Certificate Authority - G2, OU=http://certs.godaddy.com/repository/, O=&quot;GoDaddy.com, Inc.&quot;, L=Scottsdale, ST=Arizona, C=US",
   "subject" : CN=*.example.apigee.net, OU=Domain Control Validated",
   "subjectAlternativeNames" : ["*.example.apigee.net","*.example.apigee.net" ],
   "validFrom" : "Tue, 15 Apr 2014 09:17:03 UTC",
   "version" : 3
 } ],
 "name" : "example.apigee.net.crt"
}

Te informacje możesz też wyświetlić w interfejsie zarządzania Edge:

  1. Zaloguj się w interfejsie zarządzania Edge pod adresem https://enterprise.apigee.com (chmura) lub http://<ms-ip>:9000 (na urządzeniu lokalnym), gdzie <ms-ip> to adres IP węzła serwera zarządzania.
  2. W menu interfejsu zarządzania Edge kliknij Administracja > Certyfikaty TLS.

W interfejsie Edge możesz określić, z jakim wyprzedzeniem Edge ma informować o wygaśnięciu certyfikatu. Domyślnie interfejs wyróżnia certyfikaty, których ważność wygaśnie w ciągu najbliższych 10 dni.

Tworzenie magazynu kluczy

Sklep z kluczami jest przypisany do środowiska w organizacji, na przykład środowiska testowego lub produkcyjnego. Jeśli chcesz przetestować magazyn kluczy w środowisku testowym, zanim wdrożysz go w środowisku produkcyjnym, musisz utworzyć go w obu środowiskach.

Tworzenie magazynu kluczy to proces dwuetapowy:

  1. Utwórz plik JAR zawierający certyfikat i klucz prywatny.
  2. Utwórz magazyn kluczy i prześlij plik JAR.

Utwórz plik JAR zawierający certyfikat i klucz prywatny.

Utwórz plik JAR z kluczem prywatnym, certyfikatem i pliku manifestu. Plik JAR musi zawierać te pliki i katalogi:

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

W katalogu zawierającym parę kluczy i certyfikat utwórz katalog o nazwie /META-INF. Następnie utwórz w katalogu /META-INF 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 plik descriptor.properties do pliku JAR:

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

Utwórz magazyn kluczy i prześlij plik JAR.

Aby utworzyć magazyn kluczy w danym środowisku, wystarczy podać jego nazwę w interfejsie Create Keystore or Truststore API. Nazwa może zawierać tylko znaki alfanumeryczne:

curl -X POST -H "Content-Type: text/xml" \
https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores \
-d '<KeyStore name="myKeystore"/>' -u email:password

Przykładowa odpowiedź:

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

Po utworzeniu w środowisku nazwanego magazynu kluczy możesz przesłać pliki JAR zawierające certyfikat i klucz prywatny, korzystając z interfejsu API Prześlij plik JAR do magazynu kluczy:

curl -X POST -H "Content-Type: multipart/form-data" \
-F file="@myKeystore.jar" -F password={key_pass} \ "https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores/{myKeystore}/keys?alias={key_alias}" \
-u email:password

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

W tym wywołaniu podajesz 2 parametry zapytania:

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

Sprawdź, czy klucz został przesłany prawidłowo:

curl https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores/myKeystore \
-u email:password

Przykładowa odpowiedź:

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

Tworzenie zaufanego magazynu kluczy

Interfejsy API używane do tworzenia zaufanych magazynów kluczy są takie same jak te używane do tworzenia magazynów kluczy. Jedyną różnicą jest to, że zamiast pliku JAR przekazujesz plik certyfikatu jako plik PEM.

Jeśli certyfikat jest częścią łańcucha, musisz przesłać wszystkie certyfikaty z łańcucha osobno do repozytorium zaufanych certyfikatów lub utworzyć jeden plik zawierający wszystkie certyfikaty. W pliku umieść nowy wiersz między każdym certyfikatem. Ostateczny certyfikat jest zwykle podpisywany przez wystawcę certyfikatu. Na przykład do zaufanej pamięci wyślij certyfikat klienta client_cert_1 i certyfikat wystawcy certyfikatu klienta ca_cert.

Podczas uwierzytelniania dwustronnego TLS uwierzytelnianie klienta przebiega pomyślnie, gdy serwer wysyła client_cert_1 do klienta w ramach procesu uzgadniania połączenia TLS.

Możesz też mieć drugi certyfikat client_cert_2 podpisany tym samym certyfikatem ca_cert. Nie musisz jednak przesyłać pliku client_cert_2 do repozytorium zaufania. Sklep z zaufaniem nadal zawiera client_cert_1 i ca_cert.

Gdy serwer przekaże client_cert_2 w ramach uzgadniania połączenia TLS, żądanie zostanie zrealizowane. Dzieje się tak, ponieważ Edge pozwala na pomyślne przeprowadzenie weryfikacji TLS, gdy client_cert_2 nie istnieje w magazynie zaufania, ale został podpisany przez certyfikat, który znajduje się w magazynie zaufania. Jeśli usuniesz z repozytorium zaufania certyfikat urzędu certyfikacji ca_cert, weryfikacja TLS się nie powiedzie.

Utwórz pusty magazyn zaufania w środowisku, korzystając z interfejsu Create a Keystore or Truststore (Utwórz magazyn kluczy lub magazyn zaufania), czyli tego samego interfejsu API, którego używasz do tworzenia magazynu kluczy:

curl -X POST -H "Content-Type: text/xml" -d \
'<KeyStore name="myTruststore"/>' \
https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores \
-u email:password

Prześlij certyfikat jako plik PEM do repozytorium zaufania, używając interfejsu API Prześlij certyfikat do repozytorium zaufania:

curl -X POST -H "Content-Type: multipart/form-data" -F file="@trust.pem" \
https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores/myTruststore/certs?alias=myTruststore \
-u email:password

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

Usuwanie magazynu kluczy lub magazynu zaufania

Możesz usunąć klucz lub zaufaną korespondencję, używając interfejsu API Delete a Keystore or Truststore:

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

Przykładowa odpowiedź:

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

Jeśli usuniesz magazyn kluczy lub magazyn zaufania używany przez hosta wirtualnego lub docelowy punkt końcowy/docelowy/serwer, wszystkie wywołania interfejsu API przez hosta wirtualnego lub docelowy punkt końcowy/docelowy/serwer nie powiedzie się.