Private Cloud için bir API'ye TLS erişimini yapılandırma

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
bilgi

Edge'deki sanal ana makine, API proxy'sinin gösterildiği alan adlarını ve bağlantı noktalarını tanımlar ve uzantısı, uygulamaların bir API proxy'sine erişmek için kullandığı URL.

Sanal ana makine, API proxy'sine HTTP protokolü kullanılarak mı erişildiğini yoksa TLS kullanan şifrelenmiş HTTPS protokolü tarafından sağlanır. Sanal ana makineyi HTTPS kullanacak şekilde yapılandırırken ve TLS'de bir sanal ana makine oluşturur ve sanal ana makineyi anahtar deposu kullanacak şekilde yapılandırırsınız. ve Truststore gibi özellikler dahildir.

Daha fazla bilgi:

ziyaret edin.

Sanal ana makine oluşturmak için gerekenler

Bir sanal ana makine oluşturmadan önce aşağıdaki bilgilere sahip olmanız gerekir:

  • Sanal ana makinenin herkese açık alan adı. Örneğin, ekip arkadaşlarınızın herkese açık ad api.myCompany.com, myapi.myCompany.com vb. şeklindedir. Bu bilgiler sanal ana makineyi oluşturduğunuzda ve ayrıca sunucu için DNS kaydını oluşturduğunuzda kullanılır. sanal ana makine.
  • Tek yönlü TLS için anahtar deposunun şu:
    • TLS sertifikası: bir sertifika yetkilisi (CA) tarafından imzalanmış bir sertifika veya son sertifikanın bir CA tarafından imzalandığı bir sertifika zinciridir.
    • Özel anahtar - Edge, 2048 bite kadar anahtar boyutlarını destekler. Parola isteğe bağlıdır.
  • İki yönlü TLS için bir anahtar deposuna ve istemcinin sertifikası ve isteğe bağlı olarak sertifikanın CA zincirini kontrol eder. Projenizin geri kalanı üzerindeki Sertifika bir CA tarafından imzalandı.

Anahtar depoları ve Anahtar depoları ve güven depoları oluşturma hakkında daha fazla bilgi edinmek için Truststore'lara göz atın.

TLS için sanal ana makine yapılandırması

Sanal ana makine oluşturmak için, sanal ana makineyi tanımlayan bir XML nesnesi oluşturun. Aşağıdaki XML nesnesi, bir sanal makine tanımlamak için <SSLInfo> öğesini kullanır tek yönlü TLS yapılandırması için ana makine:

<VirtualHost name="myTLSVHost">
    <HostAliases>
        <HostAlias>apiTLS.myCompany.com</HostAlias>
    </HostAliases>
    <Interfaces/>
    <Port>9006</Port>
    <OCSPStapling>off</OCSPStapling>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <KeyStore>ref://myTestKeystoreRef</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
    </SSLInfo>
</VirtualHost>
.

Bu örnekte, <Enabled> öğesi "true" (doğru) olarak ayarlanmıştır. tek yönlü TLS'yi etkinleştirir ve <KeyStore> ile <KeyAlias> öğeleri anahtar deposunu belirtir ve TLS bağlantısı tarafından kullanılan anahtar.

İki yönlü TLS'yi etkinleştirmek için <ClientAuthEnabled> öğesini true ve bir güven deposu belirtin <TrustStore> kullanılarak öğesine dokunun. Truststore, istemcinin sertifikasını ve isteğe bağlı olarak sertifikanın CA'sını barındırır oluşturuyoruz.

Sanal ana makinede anahtar deposu ve güven deposu adının nasıl belirtileceğine karar verme

Yukarıdaki sanal ana makine örneğinde, anahtar deposunu bir referans kullanarak belirttiniz. CEVAP referans, anahtar deposu adını doğrudan girin.

Referans kullanmanın avantajı, referansın değerini değiştirerek sanal ana makine tarafından kullanılan anahtar deposudur. Bunun nedeni, genellikle mevcut anahtar deposundaki sertifikanın yakında sona erecektir. Referansın değerini değiştirmek, yeniden başlatmanızı gerektirmez uç yönlendirici.

Alternatif olarak, sanal ana makinede değişmez anahtar deposu adı kullanabilirsiniz. Ancak, sanal ana makineyi değiştirerek anahtar deposu adını değiştirin. Uç Yönlendiriciler'i yeniden başlatmanız gerekir.

Anahtar depolarına ve güven deposuna referansların kullanımıyla ilgili kısıtlamalar

Anahtar depolarına referanslar kullanırken aşağıdaki kısıtlamayı dikkate almanız gerekir. güven depoları:

  • Sanal ana makinelerde anahtar deposu ve güven deposu referanslarını yalnızca SNI ve Apigee Yönlendiricilerinde SSL'yi sonlandırmanız gerekir.
  • Apigee Yönlendiricilerinin önünde bir yük dengeleyiciniz varsa ve bu yönlendiricide TLS'yi sonlandırırsanız yük dengeleyici ile sanal makinede anahtar deposu ve güven deposu referanslarını ana makineler.

Anahtar deposu ve güven deposu referanslarını kullanmak için mevcut bir sanal ana makineyi değiştirme

Apigee, sanal ana makinelerin anahtar depolarına ve güven depolarına referans vermesini önemle tavsiye eder. Referanslar, sanal ana makine tarafından kullanılan anahtar deposunu ve güven deposunu veya Edge Yönlendiricileri'ni yeniden başlatmanız gerekiyor.

Sanal ana makineleriniz şu anda anahtar deposunun tam adını veya güven deposu varsa bunları referans kullanacak şekilde dönüştürebilirsiniz. Bunun için sanal ana makineyi, bulun ve ardından Uç Yönlendiriciler'i yeniden başlatın.

Edge 4.15.07 ve önceki sürümler için TLS şifrelerini ve protokollerini ayarlama

Edge'in 4.15.07 ve önceki sürümlerini kullanıyorsanız TLS protokolünü ve şifreleri ayarlarsınız <Ciphers> ve <Protocols> alt etiketleri kullanılarak sanal ana makine tarafından kullanılır. <SSLInfo> etiketi. Bu etiketler aşağıdaki tabloda açıklanmıştır.

Örneğin:

    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <KeyStore>myTestKeystore</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
        <SSLInfo>
            <Enabled>true</Enabled>
            <ClientAuthEnabled>false</ClientAuthEnabled>
            <KeyStore>myTestKeystore</KeyStore>
            <KeyAlias>myKeyAlias</KeyAlias>
            <Ciphers>
                <Cipher>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA</Cipher>
                <Cipher>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256</Cipher>
            </Ciphers>
            <Protocols>
                <Protocol>TLSv1.2</Protocol>
            </Protocols>
        </SSLInfo>
   </SSLInfo>

<Cipher> etiketi, Şifrenin Java ve JSSE adını girin. Örneğin, Java 8 için bkz. http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites.

Edge 4.16.01 - 4.16.09 arası için TLS şifrelerini ve protokollerini belirtme

Edge 4.16.01 ile 4.16.09 arasındaki sürümlerde, sanal ana makineler için varsayılan şifreleri ve protokolleri ayarlarsınız tüm dünyada geçerli. Daha sonra bu varsayılan ayarlar, tüm sanal ana makinelere uygulanır.

Varsayılan protokolleri ve şifreleri belirtmek için jetonları kullanın:

  • Varsayılan protokolleri belirtmek için conf_load_balancing_load.balancing.driver.server.ssl.protocols jetonunu kullanın
  • Yönlendirici için varsayılan şifreleri belirtmek için conf_load_balancing_load.balancing.driver.server.ssl.ciphers jetonunu kullanın

conf_load_balancing_load.balancing.driver.server.ssl.protocols jetonunun varsayılan değeri şununla eşleşir:

conf_load_balancing_load.balancing.driver.server.ssl.protocols=TLSv1 TLSv1.1 TLSv1.2

Bu ayar, Yönlendiricinin TLS 1.0, 1.1 ve 1.2 sürümlerini desteklediğini belirtir. Bir jeton için boşlukla ayrılmış değer listesi.

conf_load_balancing_load.balancing.driver.server.ssl.ciphers jetonunun varsayılan değeri şununla eşleşir:

conf_load_balancing_load.balancing.driver.server.ssl.ciphers=HIGH:!aNULL:!MD5:!DH+3DES:!RSA+3DES

Bu ayar şunları belirtir:

  • 128 bit veya daha yüksek anahtar uzunluğu gerekir (HIGH).
  • Kimlik doğrulaması olmayan şifreleri hariç tut (!aNULL)
  • MD5 kullanan şifre paketlerini hariç tut (!MD5)
  • DH kullanan şifre paketlerini (anonim DH, geçici DH ve sabit DH dahil) hariç tutun VE üçlü DES (!DH+3DES)
  • RSA anahtar değişimi VE üçlü DES kullanan şifre paketlerini hariç tut (!RSA+3DES)

Bu jetonun izin verdiği söz dizimi ve değerlerle ilgili bilgi için OpenSSL şifreleri konusuna bakın. Bu jetonun, AES128-SHA256 gibi OpenSSL şifre adlarını kullandığını, Java/JSSE şifre adları, ör. TLS_RSA_WITH_AES_128_CBC_SHA256.

Yönlendiricinin jetonunu ayarlamak için:

  1. /opt/apigee/customer/application/router.properties sütununu düzenleyin dosyası olarak kaydedebilirsiniz. Dosya yoksa dosyayı oluşturun.
  2. conf_load_balancing_load.balancing.driver.server.ssl.ciphers cihazını ayarlayın jeton. Örneğin, yalnızca TLSv1.2'yi belirtmek ve önceden paylaşılan anahtarları kullanarak şifre paketlerini hariç tutmak için ekle!PSK:
    conf_load_balancing_load.balancing.driver.server.ssl.protocols=TLSv1.2
    conf_load_balancing_load.balancing.driver.server.ssl.ciphers=HIGH:!aNULL:!MD5:!DH+3DES:!RSA+3DES:!PSK
  3. router.properties dosyasının şuna ait olduğundan emin olun: Apigee:
    chown apigee:apigee /opt/apigee/customer/application/router.properties
  4. Uç Yönlendirici'yi yeniden başlatın:
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
    .
  5. Jetonun değerini kontrol edin:
    /opt/apigee/apigee-service/bin/apigee-service edge-router configure -search conf_load_balancing_load.balancing.driver.server.ssl.ciphers
    .

Ayar Edge'in 4.17.01 ve sonraki sürümleri için TLS sanal ana makine parametreleri

Edge'in 4.17.01 ve sonraki sürümünü kullanıyorsanız bir bağımsız bir sanal ana makine (örneğin, TLS protokolü ve şifre gibi) <Properties> <VirtualHost> kapanış etiketinin hemen öncesine yapıştırın. Bu etiketler, Sanal ana makine mülkü referansı bölümünde açıklanmaktadır.

Örneğin:

<VirtualHost name="myTLSVHost">
    <HostAliases>
        <HostAlias>apiTLS.myCompany.com</HostAlias>
    </HostAliases>
    <Interfaces/>
    <Port>9006</Port>
    <OCSPStapling>off</OCSPStapling>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <KeyStore>ref://myTestKeystoreRef</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
    </SSLInfo>
    <Properties>
        <Property name="proxy_read_timeout">50</Property>
        <Property name="keepalive_timeout">300</Property>
        <Property name="proxy_request_buffering">off</Property>
        <Property name="proxy_buffering">off</Property>
        <Property name="ssl_protocols">TLSv1.2 TLSv1.1</Property>
        <Property name="ssl_ciphers">HIGH:!aNULL:!MD5:!DH+3DES:!kEDH</Property>
    </Properties>
</VirtualHost>

ssl_ciphers jetonu tarafından izin verilen söz dizimi ve değerler hakkında bilgi için OpenSSL şifreleri başlıklı makaleyi inceleyin. Bu jetonun, AES128-SHA256 gibi OpenSSL şifre adlarını kullandığını ve Java/JSSE şifre adları, örneğin TLS_RSA_WITH_AES_128_CBC_SHA256.

HTTPS kullanan bir sanal ana makine oluşturma

Bu örnekte, bir referans kullanılarak sanal ana makineye giden anahtar deposu belirtilmektedir. Bir referans, Yönlendiricileri yeniden başlatmanıza gerek kalmadan anahtar deposunu değiştirmenize olanak tanır.

Sanal ana makine oluşturmak için aşağıdaki prosedürü uygulayın:

  1. myTestKeystore adında bir anahtar deposu oluşturmak ve yapılandırmak için yordamı burada bulabilirsiniz: Anahtar depoları ve Truststores Anahtar deposunun bir takma ad adı kullandığından emin olun myKeyAlias'tan yararlanabilirsiniz.
  2. Referansı oluşturmak için aşağıdaki POST API çağrısını kullanın yukarıda oluşturduğunuz anahtar deposuna keystoreref adlı

    curl -X POST  -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
      -d '<ResourceReference name="keystoreref">
        <Refers>myTestKeystore</Refers>
        <ResourceType>KeyStore</ResourceType>
      </ResourceReference>'
      -u email:password
    

    Referans, anahtar deposunun adını ve referans türünü KeyStore olarak belirtir.

    Referansı görüntülemek için aşağıdaki GET API çağrısını kullanın:

    curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/keystoreref -u uname:password
    
  3. Sanal ana makineyi oluşturmak için Create a Virtual Host API (Sanal Ana Makine) API'si, burada <ms-IP>, IP adresidir. Yönetim Sunucusu düğümünün alan adını içerir.

    Doğru anahtar deposu referansını ve anahtar takma adını belirttiğinizden emin olun:

    curl -X POST -H "Content-Type:application/xml" \
      http://<ms-IP>:8080/v1/o/{org_name}/environments/{env_name}/virtualhosts \
      -d '<VirtualHost  name="newTLSTrustStore2">
        <HostAliases>
          <HostAlias>apiTLS.myCompany.com</HostAlias>
        </HostAliases>
        <Interfaces/>
        <Port>9005</Port>
        <OCSPStapling>off</OCSPStapling>
        <SSLInfo>
          <Enabled>true</Enabled>
          <ClientAuthEnabled>false</ClientAuthEnabled>
          <KeyStore>ref://keystoreref</KeyStore>
          <KeyAlias>myKeyAlias</KeyAlias>
        </SSLInfo>
      </VirtualHost>' \
      -u email:password
    .
  4. Ana makine takma adıyla eşleşen sanal ana makine için bir DNS kaydı oluşturun.
  5. Mevcut API proxy'leriniz varsa sanal ana makineyi<HTTPConnection> ProxyEndpoint. Sanal ana makine, tüm yeni API proxy'lerine otomatik olarak eklenir.

    Sanal ana makine oluşturduktan sonra API proxy'sini güncelleme başlıklı makaleye göz atın. Sanal ana makineler hakkında.

Bir API proxy'sini sanal ana makineyi kullanacak şekilde güncelledikten ve ana makine için DNS kaydını oluşturduktan sonra takma adı kullanıyorsanız API proxy'sine aşağıda gösterildiği gibi erişebilirsiniz:

https://apiTLS.myCompany.com/v1/{project-base-path}/{resource-path}

Örneğin:

https://apiTLS.myCompany.com/v1/weather/forecastrss?w=12797282

Referans oluşturma ve değiştirme anahtar deposuna veya güven deposuna

İsteğe bağlı olarak sanal ana makineyi, anahtar deposuna yönelik bir referans kullanacak şekilde yapılandırabilirsiniz veya güven deposu kullanın. Referans kullanmanın avantajı, o referansı TLS sertifikasını yeniden başlatmak zorunda kalmadan güncellemek için farklı bir anahtar deposuna veya güven deposuna işaret et Yönlendirici.

Örneğin aşağıda, anahtar deposuna ilişkin bir referans kullanan bir sanal ana makine gösterilmiştir:

<VirtualHost name="myTLSVHost">
    <HostAliases>
        <HostAlias>apiTLS.myCompany.com</HostAlias>
    </HostAliases>
    <Interfaces/>
    <Port>9006</Port>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <KeyStore>ref://keystoreref</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
    </SSLInfo>
</VirtualHost>

keystoreref adlı referansı oluşturmak için aşağıdaki POST API çağrısını kullanın:

curl -X POST  -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
  -d '<ResourceReference name="keystoreref">
    <Refers>myTestKeystore</Refers>
    <ResourceType>KeyStore</ResourceType>
  </ResourceReference>'
  -u email:password

Referans, anahtar deposunun adını ve türünü belirtir.

Referansı görüntülemek için aşağıdaki GET API çağrısını kullanın:

curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/keystoreref -u uname:password

Referansı daha sonra farklı bir anahtar deposuna işaret edecek şekilde değiştirmek için takma adın aşağıdaki PUT çağrısını kullanın:

curl -X PUT -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references/keystoreref \
  -d '<ResourceReference name="keystoreref">
    <Refers>myNewKeystore</Refers>
    <ResourceType>KeyStore</ResourceType>
  </ResourceReference>'
  -u email:password