API BaaS için TLS'yi yapılandırma

Edge for Private Cloud s. 4.17.01

TLS (selesi SSL olan Taşıma Katmanı Güvenliği), API ortamınız genelinde güvenli ve şifrelenmiş mesajlaşmayı sağlamak için kullanılan standart güvenlik teknolojisidir. TLS'yi API BaaS Portalı ve API BaaS Yığını düğümlerinde yapılandırabilirsiniz.

Aşağıdaki resimde, tek bir BaaS Portal düğümü ve üç API BaaS Stack düğümü içeren API BaaS için tipik bir dağıtım şeması gösterilmektedir.

Geliştiriciler, Portal'a istek göndermek için bir tarayıcı kullanır. İstekler varsayılan olarak Portal düğümünün 9000 numaralı bağlantı noktasında HTTP protokolünü kullanır.

Bu dağıtımda, Portal ile Stack düğümleri arasında bir yük dengeleyici bulunur. Bu yapılandırmasında portal, yük dengeleyiciye HTTP istekleri gönderir ve yük dengeleyici de istekleri yığın düğümlerinden birine yönlendirir. Bu, üretim sistemi için önerilen dağıtım ortamıdır.

TLS yapılandırma seçenekleri

API BaaS için TLS'yi yapılandırırken birkaç seçeneğiniz vardır:

  • Portal'da ve yığın düğümleri için yük dengeleyicide TLS'yi yapılandırma

    Bu yapılandırmada geliştiriciler Portal'a erişmek için HTTPS protokolünü kullanır ve tarayıcıda çalışan Portal, yük dengeleyici üzerinden yığın düğümlerine istek göndermek için HTTPS'yi kullanır. Yük dengeleyici, Yığın düğümlerine erişmek için HTTP kullanır.
  • Portal, yük dengeleyici ve Stack düğümlerinde TLS'yi yapılandırma

    Daha fazla güvenlik için yük dengeleyiciyi, Stack düğümlerine erişmek için TLS kullanacak şekilde yapılandırın.
  • Portal'da ve tek bir Stack düğümünde TLS'yi yapılandırma

    Test veya geliştirme ortamı gibi küçük bir ortamda yalnızca tek bir Stack düğümünüz olabilir. Bu durumda, yük dengeleyici eklemeniz gerekmez. Bu yapılandırmada, hem Portal hem de Stack düğümlerinde TLS'yi yapılandırın.
  • Portal için bir yük dengeleyicide TLS'yi yapılandırma

    Yukarıda gösterilmeyen bir seçenek, Portal düğümünün önünde bir yük dengeleyici kullanmaktır. Bu yapılandırmada, TLS'yi yük dengeleyicide ve isteğe bağlı olarak yük dengeleyici ile Portal arasındaki bağlantıda yapılandırabilirsiniz.

TLS bağlantı noktasının açık olduğundan emin olun

Aşağıdaki prosedürler, varsayılan Portal bağlantı noktası olan 9000 ve Stack düğümü olan 8080'de TLS'yi yapılandırır. Ancak dilerseniz bu bağlantı noktasını değiştirebilirsiniz.

Kullandığınız bağlantı noktası ne olursa olsun, düğümde bağlantı noktasının açık olduğundan emin olmanız gerekir. Örneğin, 8443 numaralı bağlantı noktasını açmak için aşağıdaki komutu kullanabilirsiniz:

$ iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8443 -j ACCEPT --verbose

API BaaS yığınında TLS'yi yapılandırma

API BaaS Stack için TLS varsayılan olarak devre dışıdır. Ardından, Stack düğümünün IP adresini veya DNS adını ve 8080 bağlantı noktasını kullanarak BaaS API'ye HTTP üzerinden erişirsiniz. Örneğin:

http://stack_IP:8080

Alternatif olarak, BaaS API'ye TLS erişimini aşağıdaki biçimde yapılandırabilirsiniz:

https://stack_IP:8080

Bu örnekte, TLS erişimini 8080 bağlantı noktasını kullanacak şekilde yapılandırırsınız. Ancak, bağlantı noktası 8080 gerekli değildir. Stack'i farklı bir bağlantı noktası kullanacak şekilde yapılandırabilirsiniz. Tek şart, güvenlik duvarınızın belirtilen bağlantı noktası üzerinden trafiğe izin vermesidir.

Yığın, tek bir bağlantı noktası üzerinden yalnızca bir istek türünü (HTTP veya HTTPS) destekleyebilir. Bu nedenle, 8080 numaralı bağlantı noktasında HTTPS erişimini yapılandırırsanız 8080 numaralı bağlantı noktasına erişmek için HTTP'yi kullanamazsınız. Grup'u HTTPS ile 8443 bağlantı noktasını kullanacak şekilde yapılandırırsanız Grup artık 8080 bağlantı noktasında dinleme yapmaz.

Yığına TLS erişimini yapılandırmak için aşağıdaki prosedürü kullanın:

  1. TLS sertifikanızı ve özel anahtarınızı içeren anahtar deposu JKS dosyasını oluşturun. Daha fazla bilgi için Şirket İçi Edge için TLS/SSL'yi yapılandırma başlıklı makaleyi inceleyin.
    Not: Anahtar deposundaki ve anahtardaki şifrenin aynı olduğundan emin olun.
  2. Anahtar mağazası JKS dosyasını Stack düğümündeki bir dizine (ör. /opt/apigee/customer/application) kopyalayın. Dizin, "apigee" kullanıcısı tarafından erişilebilir olmalıdır.
  3. JKS dosyasının sahipliğini 'Apigee' kullanıcısı olarak değiştirin:
    > chown Apigee:Apigee /opt/ekip/customer/application/keystore.jks

    burada keystore.jks, anahtar deposu dosyanızın adıdır.
  4. JKS dosyasının yolu ve anahtar deposu ile anahtardaki şifre dahil olmak üzere aşağıdaki özellikleri ayarlamak için /opt/apigee/customer/application/usergrid.properties dosyasını düzenleyin. Bu dosya yoksa oluşturun:
    tomcat-server_scheme=https
    tomcat-server_secure=true
    tomcat-server_ssl.enabled=true
    tomcat-server_keystore.type=JKS
    tomcat-server_keystore.file=/opt/apigee/customer/application/keystore.jks
    tomcat-server_keystore.password=password
    tomcat-server_keyalias=keystore_alias
    tomcat-server_clientauth.enabled=false
    tomcat-server_ssl.protocols=TLSv1,TLSv1.1,TLSv1.2
    # Varsayılan olarak TLS erişimi 8080 bağlantı noktasını kullanır.
    # Farklı bir bağlantı noktası belirtmek için bu özelliği kullanın.
    # tomcat-server_port=8080


    Uyarı: şifre değerinin açık metin olması gerekir. Bu nedenle, usergrid.properties özelliğini yetkisiz erişime karşı korumanız gerekir.

    Anahtar deposu takma adını belirtmek için tomcat-server_keyalias özelliğini kullanın. Anahtar takma adını, anahtarı oluştururken ayarlarsınız. Örneğin, keytool komutunda -alias seçeneğini kullanarak bunu ayarlayabilirsiniz.

    Güvenlik grubu tarafından desteklenen TLS protokollerini ayarlamak için tomcat-server_ssl.protocols değerini kullanın. Java 8 tarafından desteklenen protokollerin listesi için http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#jssename adresine bakın.
  5. Stack düğümünü yapılandırın:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure
  6. BaaS yığınını yeniden başlatın:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  7. HTTPS'yi kullanarak Stack düğümünde aşağıdaki cURL komutunu çalıştırarak TLS'nin çalıştığını onaylayın:
    > curl -k https://localhost:8080/status -v

    TLS doğru şekilde yapılandırılmışsa durum bilgilerini içeren bir yanıt görürsünüz.

    TLS erişimini 8080 dışında bir bağlantı noktası üzerinden yapılandırdıysanız doğru bağlantı noktasını kullanmak için yukarıdaki komutu değiştirin.
  8. Tüm Stack düğümlerinde tekrarlayın.
  9. Yığın düğümlerinin önünde bir yük dengeleyiciniz varsa yük dengeleyiciyi HTTPS üzerinden Yığın düğümlerine istek yapacak şekilde yapılandırın. Daha fazla bilgi için yük dengeleyicinizin dokümanlarına bakın.

    Portal, Yığına doğrudan istek gönderiyorsa Portal'ı, aşağıdaki bölümde açıklandığı şekilde HTTPS üzerinden Yığına erişecek şekilde yapılandırın.
  10. Kullanıcı yanıtları oluştururken Yığın düğümünün doğru TLS URL'lerine sahip olduğundan emin olmak için aşağıdaki "Yığın veya Portal'da TLS için API BaaS Yığını düğümlerini yapılandırma" bölümündeki prosedürü kullanın.

Portal'ı, TLS üzerinden yığına erişecek şekilde yapılandırma

Tarayıcıda çalışan BaaS Portalı, BaaS Yığınına API çağrıları yaparak çalışır. BaaS yığınını TLS kullanacak şekilde yapılandırırsanız Portal'ı da bu çağrıları HTTPS üzerinden yapacak şekilde yapılandırmanız gerekir.

API BaaS yüklemesi genellikle şu şekilde yapılandırılır:

  • Portal ile Stack düğümleri arasında bir yük dengeleyici kullanın

    Yük dengeleyiciyi, Stack düğümlerine HTTPS üzerinden istek gönderecek şekilde yapılandırın. Daha fazla bilgi için yük dengeleyicinizin dokümanlarına bakın.

    Bu yapılandırmada Portal, yük dengeleyiciyi nasıl yapılandırdığınıza bağlı olarak yük dengeleyiciye HTTP veya HTTPS üzerinden erişebilir. Yük dengeleyici TLS kullanıyorsa Portal'ı HTTPS yük dengeleyicisine istek gönderecek şekilde yapılandırmak için aşağıdaki prosedürü uygulayın.
  • Portal'ın grupta doğrudan istek göndermesini sağlayın

    Portal'ı, aşağıda açıklandığı şekilde HTTPS üzerinden grupta erişime açık olacak şekilde yapılandırın.

HTTPS üzerinden API çağrıları yapmak için API BaaS Portalı'nı yapılandırmak üzere aşağıdaki prosedürü kullanın:

  1. BaaS yığınında TLS erişimini yukarıda açıklandığı gibi veya yığın düğümlerinin yük dengeleyicisinde yük dengeleyicinizin dokümanlarında açıklandığı gibi yapılandırın.
  2. Aşağıdaki özelliği ayarlamak için /opt/apigee/customer/application/portal.properties dosyasını düzenleyin. Bu dosya yoksa oluşturun:
    baas.portal.config.overrideUrl=https://stackIP:port

    Bu mülkün değeri olarak, tek düğümlü bir kurulum için API Stack düğümünün IP adresini veya DNS adını ve bağlantı noktasını ya da API BaaS Stack düğümlerinin önünde bir yük dengeleyiciniz varsa yük dengeleyicinin IP adresini veya DNS adını ve bağlantı noktasını belirtin.
  3. Portal düğümünü yapılandırın:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  4. Şu komutu kullanarak Portal'ı yeniden başlatın:
    > /opt/gelir/Apigee-service/bin/gelir-hizmeti baas-portal restart
  5. Yukarıdaki Stack'e TLS erişimini yapılandırırken kendinden imzalı sertifika kullandıysanız tarayıcınız Portal'dan Stack'e yapılan isteklere izin vermeyebilir. Tarayıcıda, Yığına HTTPS erişimine izin verilmediğini belirten bir hata görürseniz tarayıcınızda aşağıdaki URL'yi isteyin ve erişim izni vermek için bir güvenlik istisnası ekleyin:
    https://stackIP:port/status

    API Yığını düğümünün veya yük dengeleyicinin IP adresini veya DNS adını ve bağlantı noktasını belirtin.

API BaaS Portal'ında TLS'yi yapılandırma

Varsayılan olarak kullanıcılar, Portal sunucusunun 9000 numaralı bağlantı noktası üzerinden şifrelenmemiş HTTP istekleri göndererek Portal'a erişir. Portalı, portala gelen ve portaldan gönderilen verileri şifrelemek için HTTPS kullanacak şekilde yapılandırabilirsiniz.

Varsayılan olarak, Portal düğümünün IP adresini veya DNS adını ve 9000 bağlantı noktasını kullanarak Portal'a HTTP üzerinden erişirsiniz. Örneğin:

http://portal_IP:9000

Alternatif olarak, portala TLS erişimini aşağıdaki şekilde yapılandırarak forma erişebilirsiniz:

https://portal_IP:9443

Bu örnekte, TLS erişimini 9443 bağlantı noktasını kullanacak şekilde yapılandırırsınız. Ancak 9443 bağlantı noktası gerekli değildir. Portal'ı farklı bir bağlantı noktası kullanacak şekilde yapılandırabilirsiniz.

Portal, tek bir bağlantı noktası üzerinden yalnızca bir tür isteği (HTTP veya HTTPS) destekleyebilir. Bu nedenle, 9000 bağlantı noktası üzerinde HTTPS erişimini yapılandırırsanız 9000 bağlantı noktasına erişmek için HTTP'yi kullanamazsınız. Portal'ı HTTPS ile bağlantı noktası 9443'ü kullanacak şekilde yapılandırırsanız Portal, artık 9000 numaralı bağlantı noktasında dinleme yapmaz.

Portal için TLS'yi yapılandırmak üzere:

  1. PEM biçiminde bir anahtar dosyası ve sertifika dosyası oluşturun.
    Not: Anahtar veya sertifika üzerinde şifre/şifre ifadesi bulunmadığından emin olun.
  2. PEM dosyalarını Portal düğümündeki bir dizine (ör. /opt/apigee/customer/application) kopyalayın. Dizine 'Apigee' kullanıcısı tarafından erişilebilmelidir.
  3. PEM dosyalarının sahipliğini "apigee" kullanıcısına değiştirin:
    > chown apigee:apigee /opt/apigee/customer/application/*.PEM
  4. Aşağıdaki özellikleri ayarlamak için /opt/apigee/customer/application/portal.properties dosyasını düzenleyin. Bu dosya yoksa oluşturun:
    baas.portal.ssl=on
    baas.portal.ssl.certificate=/opt/apigee/customer/application/defaultcert.pem
    baas.portal.ssl.key=/opt/apigee/customer/application/defaultkey.pem
    baas.portal.ssl.protocols=TLSv1 TLSv1.1 TLSv1.2
    # Varsayılan olarak TLS erişimi 9000 numaralı bağlantı noktasını kullanır.
    # Farklı bir bağlantı noktası belirtmek için bu özelliği kullanın.
    # baas.portal.listen=9000


    Portal tarafından desteklenen TLS protokollerini ayarlamak için baas.portal.ssl.protocols parametresini kullanın. Desteklenen protokollerin listesi için Nginx tarafından tanımlanan SSL protokolü adlarının listesine bakın: http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols.
  5. Portal düğümünü yapılandırın:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  6. Portalı yeniden başlatın:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart
  7. Stack düğümünün Portal için doğru TLS URL'sine sahip olmasını sağlamak amacıyla "API BaaS Stack düğümlerini Stack veya Portal'da TLS için yapılandırma" bölümündeki aşağıdaki prosedürü uygulayın.

API BaaS düğümlerini Stack veya Portal'da TLS için yapılandırma

Grup veya Portal düğümlerinin önüne bir yük dengeleyici ekler ya da TLS'yi doğrudan Portal veya Grup düğümünde etkinleştirirseniz Grup'a ve Portal'a erişmek için düğümleri doğru URL'lerle yapılandırmanız gerekir. Örneğin, grup düğümleri aşağıdaki durumlarda bu bilgileri gerektirir:

  • BaaS API isteklerinde yanıtlara URL ekleme.
  • Şifre sıfırlama veya başka bildirimler gönderirken e-posta şablonlarına bağlantı ekleme
  • Kullanıcıları belirli Portal sayfalarına yönlendirme

Stack düğümlerinin önünde bir yük dengeleyici kullanıyorsanız veya Stack düğümünde TLS'yi yapılandırıyorsanız /opt/apigee/customer/application/usergrid.properties dosyasında aşağıdaki özelliği ayarlayın:

usergrid-deployment_usergrid.api.url.base=http://localhost:8080

http://localhost:8080 adresini yük dengeleyicinin URL'siyle değiştirin. Yük dengeleyici TLS'yi kullanacak şekilde yapılandırılmışsa HTTPS protokolünü kullanın. Bağlantı noktasını yalnızca standart olmayan bir bağlantı noktası kullanıyorsanız (yani HTTP için 80 ve HTTPS için 443 numaralı bağlantı noktası dışında bir bağlantı noktası) eklemeniz gerekir.

Stack düğümlerinin önünde bir yük dengeleyici kullanıyorsanız /opt/apigee/customer/application/portal.properties dosyasında aşağıdaki mülkü de ayarlamanız gerekir:

baas.portal.config.overrideUrl=http://localhost:8080

http://localhost:8080 değerini, yığının yük dengeleyicisinin URL'siyle değiştirin.

Portal düğümünün önünde bir yük dengeleyici kullanıyorsanız veya TLS'yi Stack düğümünde yapılandırıyorsanız usergrid.properties dosyasında aşağıdaki özellikleri ayarlayın:

usergrid-deployment_portal.url=http://localhost:9000

http://localhost:9000 adresini yük dengeleyicinin URL'siyle değiştirin. Yük dengeleyici TLS kullanacak şekilde yapılandırılmışsa HTTPS protokolünü kullanın. Bağlantı noktasını yalnızca standart olmayan bir bağlantı noktası (ör. HTTP için 80 ve HTTPS için 443 numaralı bağlantı noktası dışında bir bağlantı noktası) kullanıyorsanız eklemeniz gerekir.

usergrid.properties dosyasını düzenledikten sonra:

  1. Stack düğümünü yapılandırın:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure
  2. BaaS yığınını yeniden başlatın:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  3. portal.properties dosyasını değiştirdiyseniz Portal düğümünü yapılandırın:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  4. BaaS portalını yeniden başlatın:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart