Private Cloud sürümü 4.17.09 ve önceki sürümler için anahtar depoları ve güven depoları oluşturun

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

Bu dokümanda, Private Cloud 4.17.09 ve önceki sürümler için Edge anahtar depolarının ve güven depolarının nasıl oluşturulacağı, değiştirileceği ve silineceği açıklanmaktadır.

Anahtar depoları ve güven depoları hakkında

Anahtar depoları ve güvenilir sertifika depoları, TLS şifrelemesi için kullanılan güvenlik sertifikalarının depolarını tanımlar. Bu iki protokol arasındaki temel fark, TLS el sıkışma sürecinde nerede kullanıldıklarıdır:

  • Anahtar deposu, TLS el sıkışma sırasında varlığı tanımlamak için kullanılan bir TLS sertifikası ve özel anahtar içerir.

    Tek yönlü TLS'de, bir istemci sunucudaki TLS uç noktasına bağlandığında sunucunun anahtar mağazası, sunucunun sertifikasını (ortak sertifika) istemciye sunar. Ardından istemci, bu sertifikayı Symantec veya VeriSign gibi bir sertifika yetkilisi (CA) ile doğrular.

    İki yönlü TLS'de hem istemci hem de sunucu, karşılıklı kimlik doğrulama için kullanılan kendi sertifikası ve özel anahtarının bulunduğu bir anahtar deposuna sahiptir.
  • Güvenilir depo, TLS el sıkışmasının bir parçası olarak alınan sertifikaları doğrulamak için kullanılan sertifikaları içerir.

    Bir yönlü TLS'de, sertifika geçerli bir CA tarafından imzalanmışsa güvenilir sertifika deposu gerekmez. Bir TLS istemcisi tarafından alınan sertifika geçerli bir CA tarafından imzalanmışsa istemci, sertifikanın kimliğini doğrulaması için CA'ya bir istek gönderir. TLS istemcisi, TLS sunucusundan alınan kendinden imzalı sertifikaları veya güvenilir bir CA tarafından imzalanmamış sertifikaları doğrulamak için genellikle bir güvenilir sertifika deposu kullanır. Bu senaryoda istemci, güvenilme deposunu güvendiği sertifikalarla doldurur. Ardından, istemci bir sunucu sertifikası aldığında gelen sertifika, güven mağazasındaki sertifikalarla karşılaştırılarak doğrulanır.

    Örneğin, bir TLS istemcisi, sunucunun kendinden imzalı sertifika kullandığı bir TLS sunucusuna bağlanır. Kendinden imzalı bir sertifika olduğu için istemci, sertifikayı bir CA ile doğrulayamaz. Bunun yerine istemci, sunucunun kendinden imzalı sertifikasını güven mağazasına önceden yükler. Ardından istemci, sunucuya bağlanmaya çalışırken sunucudan aldığı sertifikayı doğrulamak için güven mağazasını kullanır.

    İki yönlü TLS için hem TLS istemcisi hem de TLS sunucusu bir güvenilir sertifika deposu kullanabilir. Edge TLS sunucusu olarak hareket ettiğinde iki yönlü TLS gerçekleştirirken güven mağazası gerekir.

Sertifikalar bir sertifika yetkilisi (CA) tarafından verilebilir veya oluşturduğunuz özel anahtarla kendinden imzalanabilir. Bir CA'ya erişiminiz varsa anahtar oluşturma ve sertifika verme ile ilgili olarak CA'nız tarafından sağlanan talimatları uygulayın. Bir CA'ya erişiminiz yoksa openssl gibi herkese açık birçok ücretsiz araçtan birini kullanarak kendinden imzalı sertifika oluşturabilirsiniz.

Edge'de anahtar deposu ve güven deposu uygulama

Edge'de anahtar deposu, bir veya daha fazla JAR dosyası içerir. JAR dosyası şunları içerir:

  • PEM dosyası olarak TLS sertifikası: Sertifika yetkilisi (CA) tarafından imzalanmış bir sertifika, son sertifikanın CA tarafından imzalandığı bir sertifika zinciri veya kendi kendine imzalanmış bir sertifika.
  • PEM dosyası olarak özel anahtar. Edge, 2048 bite kadar anahtar boyutlarını destekler. Parola isteğe bağlıdır.

Güven deposu, anahtar deposuna benzer ancak PEM dosyası olarak yalnızca sertifikalar içerir, özel anahtar içermez.

Sertifika bir zincirin parçasıysa anahtar deposu/güven deposu, zincirdeki tüm sertifikaları ayrı PEM dosyaları veya tek bir dosya olarak içermelidir. Tek bir dosya kullanıyorsanız sertifikalar, dosyanın ilk sertifikasının TLS için kullanılan sertifika olduğu ve ardından CA sertifikasına kadar sertifika zincirinin sırayla yer aldığı şekilde olmalıdır. Dosyadaki her sertifika arasına boş bir satır eklemeniz gerekir.

Edge, anahtar depoları ve güven depoları oluşturmak için kullanabileceğiniz bir API sağlar. Gerçek API'ler aynıdır. Aradaki fark, anahtar deposu oluşturduğunuzda sertifika ve özel anahtarı içeren bir JAR dosyası iletmenizdir. Güven mağazası oluşturduğunuzda yalnızca sertifikayı PEM dosyası olarak iletirsiniz.

Sertifika ve anahtar dosyalarının biçimi hakkında

Bu belgedeki örneklerde, X.509 biçimine uygun PEM dosyaları olarak tanımlanan TLS sertifikası ve anahtarı gösterilmektedir. Sertifikanızın veya özel anahtarınızın PEM dosyası ile tanımlanmadığı durumlarda openssl gibi yardımcı programları kullanarak PEM dosyasına dönüştürebilirsiniz.

Ancak birçok .crt dosyası ve .key dosyası zaten PEM biçimindedir. Bu dosyalar metin dosyasıysa ve şu uzantılara sahipse:

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

veya:

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

Ardından dosyalar PEM biçimiyle uyumlu hale gelir ve bunları PEM dosyasına dönüştürmeden bir anahtar deposunda veya güven deposunda kullanabilirsiniz.

Sertifika zinciriniz varsa ve bu zinciri bir anahtar deposunda veya güven deposunda kullanmak istiyorsanız tüm sertifikaları, her sertifika arasında yeni bir satır olacak şekilde tek bir PEM dosyasında birleştirebilirsiniz. Sertifikaların sırayla olması ve son sertifikanın bir kök sertifika veya kök sertifika tarafından imzalanmış bir ara sertifika olması gerekir:

-----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-----

Mevcut bir anahtar kapsülü hakkında ayrıntılı bilgi edinme

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

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

Cloud müşterileri için hem test hem de üretim ortamlarında ücretsiz deneme kuruluşları için varsayılan bir anahtar kutusu sağlanır. Bu çağrı için her iki ortamda da aşağıdaki sonuçları göreceksiniz:

[ "freetrial" ]

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

Özel Bulut müşterileri için, ilk anahtar deponuzu oluşturana kadar döndürülen dizi boş olur.

Anahtar Deposu veya Güven Deposu Alın API'sini kullanarak anahtar deposunun içeriğini kontrol edin. Bulut müşterisi için tek bir sunucu TLS sertifikası görürsünüz. Bu, Apigee Edge'in ücretsiz deneme hesapları için sağladığı varsayılan sertifikadır.

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

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

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

Bu bilgileri Edge yönetim kullanıcı arayüzünde de görüntüleyebilirsiniz:

  1. https://enterprise.apigee.com (bulut) veya http://<ms-ip>:9000 (şirket içi) adresinde Edge yönetim kullanıcı arayüzüne giriş yapın. Burada <ms-ip>, Yönetim Sunucusu düğümünün IP adresidir.
  2. Edge yönetim kullanıcı arayüzü menüsünde Yönetici > TLS Sertifikaları'nı seçin.

TLS sertifikası ayrıntılarını alma

Anahtar deposundaki TLS sertifikalarıyla ilgili ayrıntıları (ör. geçerlilik bitiş tarihi ve sertifika veren) görüntülemek için Anahtar Deposundan veya Güven Deposundan Sertifika Ayrıntılarını Al API'sini kullanabilirsiniz. Öncelikle, ilgilendiğiniz sertifikanın adını öğrenin. Bu örnekte, "freetrial" adlı anahtar deposu için bilgiler getirilmektedir.

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

Örnek yanıt:

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

Ardından, sertifika ayrıntılarını almak için certs mülkünün değerini kullanın:

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

Örnek yanıt:

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

Bu bilgileri Edge yönetim kullanıcı arayüzünde de görüntüleyebilirsiniz:

  1. https://enterprise.apigee.com (bulut) veya http://<ms-ip>:9000 (şirket içi) adresinde Edge yönetim kullanıcı arayüzüne giriş yapın. Burada <ms-ip>, Yönetim Sunucusu düğümünün IP adresidir.
  2. Edge yönetim kullanıcı arayüzü menüsünde Yönetici > TLS Sertifikaları'nı seçin.

Edge kullanıcı arayüzünde, Edge'in bir sertifikanın süresinin dolacağını ne kadar önceden belirteceğini belirleyebilirsiniz. Kullanıcı arayüzü, varsayılan olarak önümüzdeki 10 gün içinde geçerlilik süresi dolacak tüm sertifikaları vurgular.

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 her iki ortamda da oluşturmanız gerekir.

Anahtar mağazası oluşturma işlemi iki adımdan oluşur:

  1. Sertifikanızı ve özel anahtarınızı içeren bir JAR dosyası oluşturun.
  2. Anahtar deposunu oluşturun ve JAR dosyasını yükleyin.

Sertifikanızı ve özel anahtarınızı içeren bir JAR dosyası oluşturun

Özel anahtarınızı, sertifikanızı ve manifest dosyanızı içeren bir JAR dosyası oluşturun. JAR dosyası aşağıdaki dosyaları ve dizinleri içermelidir:

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

Anahtar çiftinizi ve sertifikanızı içeren dizinde /META-INF adlı bir dizin oluşturun. Ardından, /META-INF dizininde aşağıdaki içeriğe 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 dosyasını ekleyin:

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

Anahtar deposunu oluşturun ve JAR dosyasını yükleyin

Bir ortamda anahtar deposu oluşturmak için Create a Keystore or Truststore API'sine anahtar deposu adını belirtmeniz yeterlidir. Ad yalnızca alfanümerik karakterler içerebilir:

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

Örnek yanıt:

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

Bir ortamda adlandırılmış bir anahtar deposu oluşturduktan sonra, Bir anahtar deposuna JAR dosyası yükleme API'sini kullanarak sertifika ve özel anahtar içeren JAR dosyalarınızı yükleyebilirsiniz:

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

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

Bu çağrıda iki sorgu parametresi belirtirsiniz:

  • alias: Anahtar deposundaki sertifikayı ve anahtarı tanımlar. Sanal ana makine oluşturduğunuzda sertifikaya ve anahtara, takma adıyla referans verirsiniz.
  • password: Özel anahtarın şifresi. Özel anahtarın şifresi yoksa bu parametreyi çıkarın.

Anahtar deponuzun düzgün şekilde yüklendiğini doğrulayın:

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

Örnek yanıt:

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

Güven mağazası 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. Aralarındaki tek fark, sertifika dosyasını JAR dosyası yerine PEM dosyası olarak iletmenizdir.

Sertifika bir zincirin parçasıysa zincirdeki tüm sertifikaları güven deposuna ayrı ayrı yüklemeniz veya tüm sertifikaları içeren tek bir dosya oluşturmanız gerekir. Dosyadaki her sertifika arasına yeni bir satır ekleyin. Nihai sertifika genellikle sertifika veren tarafından imzalanır. Örneğin, güven deposuna bir istemci sertifikası (client_cert_1) ve istemci sertifikası 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 istemciye client_cert_1 gönderdiğinde istemci kimlik doğrulaması başarılı olur.

Alternatif olarak, aynı sertifika (ca_cert) tarafından imzalanan ikinci bir sertifikanız (client_cert_2) da olabilir. Ancak client_cert_2 dosyasını güven mağazasına yüklemezsiniz. Güven mağazasında hâlâ client_cert_1 ve ca_cert var.

Sunucu, TLS el sıkışma işleminin bir parçası olarak client_cert_2'ü iletirse istek başarılı olur. Bunun nedeni, Edge'in client_cert_2 güven deposunda bulunmamasına rağmen güven deposunda bulunan bir sertifika tarafından imzalandığında TLS doğrulamasının başarılı olmasına izin vermesidir. Güvenli depodan CA sertifikasını (ca_cert) kaldırırsanız TLS doğrulaması başarısız olur.

Anahtar deposu oluşturmak için kullandığınız API'yi (Create a Keystore or Truststore) kullanarak ortamda boş bir güven deposu oluşturun:

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

Bir Sertifikayı Güven Aktarıcısına Yükleme API'sini kullanarak sertifikayı güven aktarıcısına PEM dosyası olarak yükleyin:

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

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

Anahtar deposunu veya güven deposunu silme

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

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

Örnek yanıt:

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

Bir sanal ana makine veya hedef uç nokta/hedef/sunucu tarafından kullanılan bir anahtar mağazasını ya da güven mağazasını silerseniz sanal ana makine veya hedef uç nokta/hedef sunucu üzerinden yapılan tüm API çağrıları başarısız olur.