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

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

Edge'deki sanal ana makine, bir API proxy'sinin açığa çıktığı alanları ve bağlantı noktalarını ve dolayısıyla uygulamaların API proxy'sine erişmek için kullandığı URL'yi tanımlar.

Sanal ana makine, API proxy'sine HTTP protokolünden mi yoksa TLS kullanan şifrelenmiş HTTPS protokolünden mi erişildiğini tanımlar. Bir sanal ana makineyi HTTPS ve TLS kullanacak şekilde yapılandırırken, Edge'de bir sanal ana makine oluşturur ve sanal ana makineyi anahtar deposu ve güven deposu kullanacak şekilde yapılandırırsınız.

Daha fazla bilgi:

Sanal ana makine oluşturmak için gerekenler

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

  • Sanal ana makinenin herkese açık alan adı. Örneğin, herkese açık adın api.myCompany.com, myapi.myCompany.com vb. olup olmadığını bilmeniz gerekir. Bu bilgiler, sanal ana makineyi oluşturduğunuzda ve sanal ana makine için DNS kaydı oluşturduğunuzda kullanılır.
  • Tek yönlü TLS için anahtar deposunun aşağıdakileri içerdiği bir anahtar deposu oluşturmanız gerekir:
    • TLS sertifikası: Bir sertifika yetkilisi (CA) tarafından imzalanan bir sertifika veya son sertifikanın bir CA tarafından imzalandığı bir sertifika zinciri.
    • Özel anahtar: Edge, 2048 bite kadar anahtar boyutlarını destekler. Parola isteğe bağlıdır.
  • İki yönlü TLS için anahtar deposuna ihtiyacınız vardır ve istemcinin sertifikası ile isteğe bağlı olarak sertifikanın CA zincirini barındıracak bir güven deposuna ihtiyacınız vardır. Sertifika bir CA tarafından imzalansa bile güven deposuna ihtiyacınız vardır.

Anahtar depoları ve güven depoları oluşturma hakkında daha fazla bilgi için Anahtar depoları ve Truststore'lar bölümüne bakın.

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

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

<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, tek yönlü TLS'yi etkinleştirmek için <Enabled> öğesi true (doğru) değerine ayarlanır ve <KeyStore> ve <KeyAlias> öğeleri TLS bağlantısı tarafından kullanılan anahtar deposunu ve anahtarı belirtir.

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

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 belirtirsiniz. Referans, anahtar deposu adını doğrudan belirtmek yerine, anahtar deposunun adını içeren bir değişkendir.

Referans kullanmanın avantajı, sanal ana makine tarafından kullanılan anahtar deposunu değiştirmek için referansın değerini değiştirebilmenizdir. Bunun nedeni, genellikle geçerli anahtar deposundaki sertifikanın süresinin yakın gelecekte dolmasıdır. Referansın değerini değiştirmek, Edge Yönlendirici'yi yeniden başlatmanızı gerektirmez.

Alternatif olarak, sanal ana makinede sabit bir anahtar deposu adı kullanabilirsiniz. Ancak anahtar deposu adını değiştirmek için sanal ana makineyi değiştirirseniz Uç Yönlendiricileri yeniden başlatmanız gerekir.

Anahtar depoları ve güven deposu referanslarını kullanmayla ilgili kısıtlamalar

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

  • Sanal ana makinelerde anahtar deposu ve güven deposu referanslarını yalnızca SNI'yı destekliyorsanız ve Apigee Yönlendiricilerinde SSL'yi sonlandırırsanız kullanabilirsiniz.
  • Apigee Yönlendiricilerin önünde bir yük dengeleyiciniz varsa ve yük dengeleyicide TLS'yi sonlandırırsanız sanal ana makinelerde anahtar deposu ve güven deposu referanslarını kullanamazsınız.

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

Apigee, sanal ana makinelerin anahtar depolarına ve güven depolarına referans kullanmasını önemle tavsiye eder. Referanslar, uç yönlendiricileri yeniden başlatmak zorunda kalmadan sanal ana makine tarafından kullanılan anahtar deposunu ve güven deposunu değiştirebilmenizi sağlar.

Sanal ana makineleriniz şu anda anahtar deposunun veya güven deposunun değişmez adını kullanacak şekilde yapılandırılmışsa bunları referans kullanacak şekilde dönüştürebilirsiniz. Bunu yapmak için sanal ana makineyi referansları kullanacak şekilde güncelleyin ve ardından Uç Yönlendiricileri yeniden başlatın.

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

Edge 4.15.07 ve önceki bir sürümü kullanıyorsanız <SSLInfo> etiketinin <Ciphers> ve <Protocols> alt etiketlerini kullanarak sanal ana makine tarafından kullanılan TLS protokolünü ve şifrelerini ayarlarsınız. 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ı kullanır. Örneğin, Java 8 için http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites adresine bakın.

Edge 4.16.01 ile 4.16.09 arasındaki sürümler için TLS şifrelerini ve protokollerini belirtme

Edge 4.16.01 ile 4.16.09 arasındaki sürümlerde, Yönlendirici üzerinde küresel olarak sanal ana makineler için varsayılan şifreleri ve protokolleri ayarlarsınız. 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önlendiricinin varsayılan şifrelerini 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:

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. Jeton için boşlukla ayrılmış bir değer listesi belirtin.

conf_load_balancing_load.balancing.driver.server.ssl.ciphers jetonunun varsayılan değeri:

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

Bu ayar şunları belirtir:

  • 128 bit veya daha uzun anahtar uzunluğu gerekir (HIGH).
  • Kimlik doğrulaması olmayan şifreleri hariç tut (!aNULL)
  • MD5 kullanan şifre paketlerini hariç tut (!MD5)
  • DH (anonim DH, geçici DH ve sabit DH dahil) VE üçlü DES (!DH+3DES) kullanan şifre paketlerini hariç tut
  • 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ğerler hakkında bilgi için OpenSSL şifreleri konusuna bakın. Bu jetonun, AES128-SHA256 gibi OpenSSL şifre adlarını kullandığını ve TLS_RSA_WITH_AES_128_CBC_SHA256 gibi Java/JSSE şifre adlarını kullanmadığını unutmayın.

Yönlendiricinin jetonunu ayarlamak için:

  1. /opt/apigee/customer/application/router.properties dosyasını düzenleyin. Böyle bir dosya yoksa oluşturun.
  2. conf_load_balancing_load.balancing.driver.server.ssl.ciphers jetonunu ayarlayın. Örneğin, yalnızca TLSv1.2'yi belirtmek ve önceden paylaşılan anahtarları kullanarak şifre paketlerini hariç tutmak için şunu ekleyin:!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 Apigee'ye ait olduğundan emin olun:
    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

Edge 4.17.01 ve sonraki sürümler için TLS sanal ana makine parametrelerini ayarlama

Edge'in 4.17.01 ve sonraki bir sürümünü kullanıyorsanız <VirtualHost> etiketinin <Properties> alt etiketini kullanarak tek bir sanal ana makine için TLS protokolü ve şifresi gibi bazı TLS özelliklerini ayarlayabilirsiniz. Bu etiketler, Sanal ana makine mülk referansı başlıklı makalede açıklanmıştı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 konusuna bakın. Bu jetonun, AES128-SHA256 gibi OpenSSL şifre adlarını kullandığını ve TLS_RSA_WITH_AES_128_CBC_SHA256 gibi Java/JSSE şifre adlarını kullanmadığını unutmayın.

HTTPS kullanan sanal ana makine oluşturma

Bu örnek, bir referans kullanarak sanal ana makinenin anahtar deposunu belirtir. Referans kullanmak, Yönlendiricileri yeniden başlatmak zorunda kalmadan anahtar deposunu değiştirmenize olanak tanır.

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

  1. Anahtar depoları ve Truststores bölümünde açıklanan prosedürü kullanarak myTestKeystore adlı bir anahtar deposu oluşturup yapılandırın. Anahtar deposunun sertifika ve özel anahtar için myKeyAlias'ın takma adını kullandığından emin olun.
  2. Yukarıda oluşturduğunuz anahtar deposuna keystoreref adlı bir 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 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 Makine Oluştur API'sini kullanarak sanal ana makineyi oluşturun. Burada <ms-IP>, Yönetim Sunucusu düğümünün IP adresi veya alan adıdır.

    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. Sanal ana makine için ana makine takma adıyla eşleşen bir DNS kaydı oluşturun.
  5. Mevcut API proxy'leriniz varsa sanal ana makineyi ProxyEndpoint'teki <HTTPConnection> öğesine ekleyin. Sanal ana makine, tüm yeni API proxy'lerine otomatik olarak eklenir.

    Sanal ana makineler hakkında başlıklı makalede, Sanal ana makine oluşturduktan sonra API proxy'sini güncelleme bölümüne bakın.

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

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

Örneğin:

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

Anahtar deposu veya güven deposu referansları oluşturma ve değiştirme

İsteğe bağlı olarak sanal ana makineyi, bunun yerine anahtar deposu veya güven deposuna bir referans kullanacak şekilde yapılandırabilirsiniz. Referans kullanmanın avantajı, Yönlendiriciyi yeniden başlatmaya gerek kalmadan TLS sertifikasını güncellemek için referansı farklı bir anahtar deposuna veya güven deposuna işaret edecek şekilde güncelleyebilmenizdir.

Örneğin, aşağıda anahtar deposuna başvuru 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

Daha sonra referansı farklı bir anahtar deposuna işaret edecek şekilde değiştirmek ve takma adın aynı ada sahip olduğundan emin olmak için 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