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

Private Cloud için Edge v. 4.16.09

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 istekte bulunmak için bir tarayıcı kullanır. Varsayılan olarak istekler, Portal düğümünün 9000 numaralı bağlantı noktasında HTTP protokolünü kullanır.

Bu dağıtım, Portal ve Stack düğümleri arasında bir yük dengeleyici içerir. 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ırın

    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 aracılığıyla Yığın düğümlerine istek göndermek için HTTPS kullanır. Yük dengeleyici, Yığın düğümlerine erişmek için HTTP kullanır.
  • Portal, yük dengeleyici ve Yığın düğümlerinde TLS'yi yapılandırın

    Daha fazla güvenlik için yük dengeleyiciyi Yığın düğümlerine erişmek üzere 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 yük dengeleyicide TLS'yi yapılandırma

    Yukarıda gösterilmeyen seçeneklerden biri, 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 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 8080 bağlantı noktası gerekli değildir. Grup'u farklı bir bağlantı noktası kullanacak şekilde yapılandırabilirsiniz. Tek şart, güvenlik duvarınızın belirtilen bağlantı noktasından trafiğe izin vermesidir.

Grup, tek bir bağlantı noktası üzerinden yalnızca bir tür isteği (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 deposu JKS dosyasını Yığın düğümündeki /opt/apigee/customer/application gibi bir dizine 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 dosyasını yetkisiz erişime karşı korumanız gerekir.

    Anahtar deposu takma adını belirtmek için tomcat-server_keyalias mülkünü kullanın. Anahtar takma adını, anahtarı oluştururken ayarlarsınız. Örneğin, keytool komutunda -alias seçeneğini kullanarak 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. Yığın düğümünü yapılandırın:
    > /opt/ gelir/Apigee/service/bin/ ekip/hizmet baas-usergrid yapılandırması
  6. Değişiklikleri Tomcat'e dağıtın:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid deploy
  7. BaaS yığınını yeniden başlatın:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  8. 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.
  9. Tüm Stack düğümlerinde bu işlemi tekrarlayın.
  10. Yığın düğümlerinin önünde bir yük dengeleyiciniz varsa yük dengeleyiciyi, Yığın 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.

    Portal, grupta doğrudan istek gönderiyorsa Portal'ı, aşağıdaki bölümde açıklandığı gibi grupta HTTPS üzerinden erişecek şekilde yapılandırın.
  11. Kullanıcı yanıtları oluştururken Stack düğümünün doğru TLS URL'lerine sahip olmasını sağlamak için "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.

Portal'ı, TLS üzerinden Yığına erişmek için 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'yi kullanacak şekilde yapılandırırsanız Portal'ı, bu çağrıları HTTPS üzerinden yapacak şekilde de yapılandırmanız gerekir.

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

  • Portal ve Yığın düğümleri arasında bir yük dengeleyici kullanın

    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.

    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.

API BaaS Portal'ını HTTPS üzerinden API çağrıları yapacak şekilde yapılandırmak için aşağıdaki prosedürü uygulayı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, grupta HTTPS erişimine izin verilmediğine dair bir hata görürseniz tarayıcınıza aşağıdaki URL'yi isteyin ve erişime izin vermek için bir güvenlik istisnası ekleyin:
    https://stackIP:port/status

    API grubu düğümünün veya yük dengeleyicinin IP adresini ya da 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 sunucusundaki bağlantı noktası 9000 üzerinden şifrelenmemiş HTTP istekleri göndererek Portal'a erişir. Portalı, portala 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 bağlantı noktası 9443 gerekli değildir. Portal'ı farklı bir bağlantı noktası kullanacak şekilde yapılandırabilirsiniz.

Portal, tek bir bağlantı noktası üzerinden yalnızca bir istek türünü (HTTP veya HTTPS) destekleyebilir. Bu nedenle, 9000 numaralı bağlantı noktasında HTTPS erişimini yapılandırırsanız 9000 numaralı bağlantı noktasına erişmek için HTTP'yi kullanamazsınız. Portal'ı HTTPS ile 9443 bağlantı noktasını kullanacak şekilde yapılandırırsanız Portal artık 9000 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: Anahtarda veya sertifikada şifre ya da parola bulunmadığından emin olun.
  2. PEM dosyalarını Portal düğümündeki /opt/apigee/customer/application gibi bir dizine kopyalayın. Dizin, "apigee" kullanıcısı tarafından erişilebilir olmalıdır.
  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/ gelir/Apigee/service/bin/ ekip/hizmeti baas-portal yapılandırın
  6. Yapılandırmayı dağıtın:
    > /opt/ potansiyel/Apigee/Apigee-service/bin/ ekip-service baas-portal deploy
  7. Portalı yeniden başlatın:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart
  8. 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, Stack 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 özellikleri ayarlayın:

usergrid-deployment_swagger.basepath=http://localhost:8080
usergrid-deployment_usergrid.organization.activation.url=http://localhost:8080/management/organizations/%s/activate
usergrid-deployment_usergrid.admin.activation.url=http://localhost:8080/management/users/%s/activate
usergrid-deployment_usergrid.admin.resetpw.url=http://localhost:8080/management/users/%s/resetpw
usergrid-deployment_usergrid.admin.confirmation.url=http://localhost:8080/management/users/%s/confirm
usergrid-deployment_usergrid.user.activation.url=http://localhost:8080/%s/%s/users/%s/activate
usergrid-deployment_usergrid.user.confirmation.url=http://localhost:8080/%s/%s/users/%s/confirm
usergrid-deployment_usergrid.user.resetpw.url=http://localhost:8080/%s/%s/users/%s/resetpw

http://localhost:8080 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ı kullanıyorsanız eklemeniz gerekir. Bu, HTTP için 80 numaralı bağlantı noktası ve HTTPS için 443 numaralı bağlantı noktası dışında bir değer anlamına gelir.

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 kısmını, Yığın için yük dengeleyicinin URL'siyle değiştirin.

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

usergrid-deployment_usergrid.view.management.organizations.organization.activate=http://localhost:9000
usergrid-deployment_usergrid.view.management.organizations.organization.confirm=http://localhost:9000
usergrid-deployment_usergrid.view.management.users.user.activate=http://localhost:9000
usergrid-deployment_usergrid.view.management.users.user.confirm=http://localhost:9000

http://localhost:9000 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 eklemeniz gerekir. Bu, HTTP için bağlantı noktası 80 ve HTTPS için bağlantı noktası 443 dışında bir noktadır.

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

  1. Yığın düğümünü yapılandırın:
    > /opt/ gelir/Apigee/service/bin/ ekip/hizmet baas-usergrid yapılandırması
  2. Değişiklikleri Tomcat'e dağıtın:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid deploy
  3. BaaS yığınını yeniden başlatın:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  4. 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
  5. Değişiklikleri dağıtın:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal deploy
  6. BaaS portalını yeniden başlatın:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart