Edge Management API'yi kullanarak anahtar depoları ve güven depoları oluşturma

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

Bu belgede, Cloud için Edge'de ve Private Cloud'da Edge'de 4.18.01 ve üzeri sürümler için anahtar depoları ve güven depoları oluşturma, değiştirme ve silme açıklanmaktadır.

Giriş

TLS gibi ortak anahtar altyapısına dayanan işlevleri yapılandırmak için gerekli anahtarları ve dijital sertifikaları sağlayan anahtar depoları ve güven depoları oluşturmanız gerekir.

Anahtar depoları, güven deposu ve takma adlar hakkında temel bilgiler için Anahtar depoları ve Güven depoları sayfasını inceleyin.

Anahtar deposu oluşturma

Anahtar deposu, kuruluşunuzdaki bir ortama (ör. test veya üretim ortamı) özeldir. Bu nedenle, anahtar deposunu üretim ortamınıza dağıtmadan önce bir test ortamında test etmek istiyorsanız bunu her iki ortamda da oluşturmanız gerekir.

Bir ortamda anahtar deposu oluşturmak için:

  1. Anahtar deposunu oluşturmak için bu bölümdeki API çağrısını kullanın.
  2. Bir takma ad oluşturun ve bu takma ada bir sertifika/anahtar çifti yükleyin. Sertifikayı ve anahtarı yükleme yönteminiz, sertifika/anahtar çiftinin biçimine bağlıdır. Aşağıdaki bölümlerde her bir sertifika/anahtar çifti türünün nasıl yükleneceği açıklanmaktadır:

Bir anahtar deposu oluşturmak için anahtar deposu adını Create a Keystore veya Truststore API'si olarak belirtin. Anahtar deposu adı yalnızca alfanümerik karakterler içerebilir:

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

Örnek yanıt:

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

Sertifika ve anahtarı JAR dosyası olarak yükleyin

Öncelikle gizli anahtarınız, sertifikanız ve manifestinizle bir JAR dosyası oluşturmanız gerekir. JAR dosyası aşağıdaki dosya ve dizinleri içermelidir:

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

Bir anahtar deposu JAR'si yalnızca bu üç dosyayı içerebilir. Sertifika zinciriniz varsa zincirdeki tüm sertifikalar tek bir PEM dosyasına eklenmelidir. Burada son sertifika bir kök CA tarafından imzalanmalıdır. Sertifikalar PEM dosyasına doğru sırayla eklenmelidir ve sertifikaların arasında boş bir satır bulunmalıdır. Diğer bir deyişle:

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

Anahtar çiftinizi ve sertifikanızı içeren dizinde /META-INF adlı bir dizin oluşturun. Ardından, /META-INF içinde aşağıdaki içeriklere sahip descriptor.properties adlı bir dosya oluşturun:

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

Anahtar çiftinizi ve sertifikanızı içeren JAR dosyasını oluşturun:

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

JAR dosyanıza descriptor.properties ekleyin:

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

Sertifika ve özel anahtar içeren JAR dosyalarınızı artık JAR veya PKCS dosyasından takma ad oluşturma API'sini kullanarak yükleyebilirsiniz:

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"

Burada -F seçeneği JAR dosyasının yolunu belirtir.

Bu görüşmede şunları belirtirsiniz:

  • alias_name: Anahtar deposunda sertifikayı ve anahtarı tanımlar. Bir sanal ana makine oluşturduğunuzda sertifikaya ve anahtara takma ad adıyla referans verirsiniz.
  • key_pword - Özel anahtarın şifresi. Özel anahtarda şifre yoksa bu parametreyi dahil etmeyin.

Anahtar deponuzun doğru bir şekilde yüklendiğini doğrulayın:

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

Örnek yanıt:

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

Sertifika ve anahtarı PEM dosyası olarak yükleyin

Sertifika ve anahtar PEM dosyalarından takma ad oluşturma API'sini kullanarak sertifika ve özel anahtar içeren PEM dosyaları yükleyin:

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"

Burada -F seçeneği PEM dosyalarına giden yolları belirtir.

Bu görüşmede şunları belirtirsiniz:

  • alias_name: Anahtar deposunda sertifikayı ve anahtarı tanımlar. Bir sanal ana makine oluşturduğunuzda sertifikaya ve anahtara takma ad adıyla referans verirsiniz.
  • key_pword - Özel anahtarın şifresi. Özel anahtarda şifre yoksa bu parametreyi dahil etmeyin.

Anahtar deponuzun doğru bir şekilde yüklendiğini doğrulayın:

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

Örnek yanıt:

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

Sertifikayı ve anahtarı PKCS12/PFX dosyası olarak yükleyin

JAR veya PKCS dosyasından takma ad oluşturma API'sini kullanarak sertifika ve özel anahtar içeren bir PKCS12/PFX dosyası yükleyin:

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"

Burada -F seçeneği, P12 dosyasının yolunu belirtir.

Bu görüşmede şunları belirtirsiniz:

  • alias_name: Anahtar deposunda sertifikayı ve anahtarı tanımlar. Bir sanal ana makine oluşturduğunuzda sertifikaya ve anahtara takma ad adıyla referans verirsiniz.
  • key_pword - Özel anahtarın şifresi. Özel anahtarda şifre yoksa bu parametreyi dahil etmeyin.

Anahtar deponuzun doğru bir şekilde yüklendiğini doğrulayın:

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

Örnek yanıt:

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

Kendinden imzalı sertifika ve anahtar oluşturup yükleme

Kendinden imzalı sertifika ve anahtar oluşturup bunları takma ada yüklemek için Kendinden imzalı sertifika oluşturarak takma ad oluşturma API'sini kullanabilirsiniz. Aşağıdaki çağrı, yalnızca kendinden imzalı sertifikayı oluşturmak için gereken bilgileri belirtir. Ek bilgi eklemek için bu görüşmeyi değiştirebilirsiniz:

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"

Yanıt şu şekilde görünmelidir:

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

Güven deposu oluşturma

Güven deposu oluşturmak için kullandığınız API'ler, anahtar deposu oluşturmak için kullanılan API'lerle aynıdır. Tek fark, güven deposuna PEM dosyası olarak yalnızca bir sertifika dosyası yüklemenizdir.

Sertifika bir zincirin parçasıysa zincirdeki tüm sertifikaları güven deposuna ayrı olarak yüklemeniz veya tüm sertifikaları içeren tek bir dosya oluşturmanız gerekir. Dosyadaki her sertifikanın arasına boş bir satır eklemeniz gerekir.

Bir zincirin parçası olmayan birden fazla kendinden imzalı sertifika yüklemek istiyorsanız aynı tekniği kullanın: Güvenmek istediğiniz birden fazla sertifika varsa bunları tek bir dosyaya yükleyin.

Nihai sertifika genellikle sertifikayı veren tarafından imzalanır. Örneğin, güven deposunda bir istemci sertifikası (client_cert_1) ve istemci sertifikasını verenin sertifikasını (ca_cert) yüklersiniz.

İki yönlü TLS kimlik doğrulaması sırasında sunucu, TLS el sıkışma sürecinin bir parçası olarak Client_cert_1 istemcisini istemciye gönderdiğinde istemci kimlik doğrulaması başarılı olur.

Alternatif olarak, aynı sertifikayla (ca_cert) imzalanmış client_cert_2 adlı ikinci bir sertifikanız olur. Ancak, client_cert_2 değerini güven deposuna yüklemezsiniz. Truststore hâlâ client_cert_1 ve ca_cert öğelerini içerir.

Sunucu TLS el sıkışmanın bir parçası olarak client_cert_2'yi ilettiğinde istek başarılı olur. Bunun nedeni, client_cert_2 güven deposunda bulunmayan ancak güven deposundaki bir sertifika tarafından imzalandığında Edge'in TLS doğrulamasının başarılı olmasına izin vermesidir. ca_cert CA sertifikasını güven deposundan kaldırırsanız TLS doğrulaması başarısız olur.

Anahtar deposu oluşturmak için kullandığınız API'nin aynısı olan Anahtar Deposu veya Truststore Oluşturma'yı kullanarak ortamda boş bir güven deposu oluşturun:

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

Güven deposunu oluşturduktan sonra Sertifika PEM dosyasından takma ad oluşturma API'sini kullanarak sertifikayı güven deposuna PEM dosyası olarak yükleyin:

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"

Burada -F seçeneği PEM dosyasının yolunu belirtir.

Mevcut bir anahtar deposu veya güven deposu ile ilgili ayrıntıları alma

List Keystores and Truststores API'yi kullanarak ortamınızda mevcut anahtar depoları olup olmadığını kontrol edin:

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

Cloud müşterileri için hem test hem de üretim ortamlarındaki ücretsiz deneme kuruluşları için varsayılan bir anahtar deposu sağlanır. Her iki ortamda da bu çağrı için aşağıdaki sonuçları görmeniz gerekir:

[ "freetrial" ]

API'lerinizi test etmek ve API'lerinizi üretime aktarmak için bu varsayılan anahtar deposunu kullanabilirsiniz. Ancak genellikle üretime dağıtmadan önce kendi sertifika deponuzu, kendi sertifikanız ve anahtarınızla oluşturursunuz.

Private Cloud müşterileri için döndürülen dizi, siz ilk anahtar deponuzu oluşturana kadar boş olur.

Get a Keystore veya Truststore API'sini kullanarak anahtar deposu içeriğini kontrol edin. Bulut müşterileri için tek bir sunucu TLS sertifikası (Apigee Edge'in ücretsiz deneme hesapları için sağladığı varsayılan sertifika) gösterilir.

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

Yanıt şu şekilde görünmelidir:

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

Takma adla ilgili ayrıntıları öğrenme

List alias API'yi kullanarak anahtar depoları için tüm takma adların listesini alın:

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

Yanıt şu şekilde görünmelidir:

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

Bir takma adla ilgili geçerlilik bitiş tarihi ve kartı veren gibi tüm bilgileri almak için Get alias API'yi kullanın ve takma ad adını belirtin:

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

Yanıt şu şekilde görünmelidir:

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

Bir takma ad için sertifikayı indirmek üzere Takma ad için sertifika dışa aktarma API'sini kullanın:

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"

Yanıt şu şekilde görünmelidir:

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

Süresi dolmuş bir sertifikanız varsa ve bu sertifikayı yenilemek istiyorsanız bir Sertifika İmzalama İsteği (CSR) indirebilirsiniz. Daha sonra, yeni bir sertifika alması için MT'yi CA'nıza gönderirsiniz. Takma ad için CSR oluşturmak amacıyla Generate a CSR for an alias API'yi kullanın:

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"

Yanıt şu şekilde görünmelidir:

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

Güven deposuna iki yönlü TLS için sertifika ekleme

Gelen bağlantılar (yani Edge'e gönderilen bir API isteği) için iki yönlü TLS kullanılırken güven deposu, Edge'e istek yapmasına izin verilen her istemci için bir sertifika veya CA zinciri içerir.

Güven deposunu ilk kez yapılandırırken, bilinen istemciler için tüm sertifikaları ekleyebilirsiniz. Ancak, zaman içinde yeni istemciler ekledikçe güven deposuna başka sertifikalar eklemek isteyebilirsiniz.

İki yönlü TLS için kullanılan bir güven deposuna yeni sertifikalar eklemek üzere:

  1. Sanal ana makinede güven deposuna bir referans kullandığınızdan emin olun.
  2. Yukarıda Truststore oluşturma bölümünde açıklandığı gibi, güven deposuna yeni bir sertifika yükleyin.
  3. Truststore referansını aynı değere ayarlayacak şekilde güncelleyin. Bu güncelleme, Edge'in güven deposunu ve yeni sertifikayı yeniden yüklemesine neden olur.

    Daha fazla bilgi için Referansı değiştirme bölümüne bakın.

Anahtar deposunu/güven deposunu veya takma adı silme

Bir anahtar deposunu/güven deposunu veya takma adı silerken dikkatli olmanız gerekir. Bir sanal ana makine, hedef uç nokta veya hedef sunucu tarafından kullanılan bir anahtar deposunu, güven deposunu veya takma adı silerseniz sanal ana makine veya hedef uç nokta/hedef sunucu üzerinden yapılan tüm API çağrıları başarısız olur.

Genellikle bir anahtar deposunu/güven deposunu veya takma adı silmek için kullandığınız süreç şu şekildedir:

  1. Yukarıda açıklandığı şekilde yeni bir anahtar deposu/güven deposu veya takma ad oluşturun.
  2. Edge'e yapılan bir API isteği anlamına gelen gelen bağlantılar için sanal ana makine yapılandırmasını, yeni anahtar deposuna ve anahtar takma adına referans verecek şekilde güncelleyin.
  3. Apigee'den bir arka uç sunucusuna giden giden bağlantılar için:
    1. Eski anahtar deposuna ve anahtar takma adına başvuran tüm API proxy'lerinin TargetEndpoint yapılandırmasını yeni anahtar deposuna ve anahtar takma adına referans verecek şekilde güncelleyin. TargetEndpoint'iniz bir TargetServer'a referans veriyorsa TargetServer tanımını, yeni anahtar deposuna ve anahtar takma adına başvuracak şekilde güncelleyin.
    2. Anahtar deposu ve güven deposuna doğrudan TargetEndpoint tanımından referans veriliyorsa proxy'yi yeniden dağıtmanız gerekir. TargetEndpoint bir TargetServer tanımına, TargetServer tanımı ise anahtar deposuna ve güven deposuna referansta bulunursa herhangi bir proxy yeniden dağıtımı gerekmez.
    3. API proxy'lerinizin doğru şekilde çalıştığını doğrulayın.
    4. Anahtar deposunu/güven deposunu veya takma adı silin.

Daha fazla bilgi için Bir takma addaki sertifikayı güncelleme sayfasına göz atın.

Anahtar deposu veya güven deposu silme

Delete a Keystore veya Truststore API'sini kullanarak bir anahtar deposunu veya güven deposunu silebilirsiniz:

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

Sanal ana makine tarafından kullanılan bir anahtar deposunu veya güven deposunu silip yeniden oluşturursanız API proxy'lerinizi yeniden dağıtmanız gerekir.

Takma ad silme

Delete alias API'yi kullanarak anahtar deposundaki veya güven deposundaki takma adı silebilirsiniz:

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