§HTTPS’yi Yapılandırmak
Play, HTTPS sunmak üzere yapılandırılabilir. Bunu etkinleştirmek için, https.port
sistem değişkenini kullanarak Play’e hangi portu dinlemesi gerektiğini söylemeniz yeterlidir. Örneğin:
./start -Dhttps.port=9443
§SSL Sertifikaları
§Bir anahtar deposundan SSL sertifikaları
Varsayılan olarak, Play kendi kendine imzaladığı bir sertifika üretecektir. Ancak genellikle bu bir web sitesini yayınlamak için uygun değildir. Play, SSL sertifikaları ve anahtarlarını yapılandırmka için Java anahtar depolarını kullanır.
İmza otoriteleri çoğu zaman nasıl bir Java anahtar deposu (bir Tomcat yapılandırmasına referansla) oluşturulacağını anlatan yönergeler sağlarlar. JDK anahtar aracını kullanarak anahtar depoları üretme üzerine resmi Oracle dokümantasyonu burada bulunabilir. Aynı zamanda Generating X.509 Certificates bölümünde de bir örnek vardır.
Anahtar deponuzu yarattıysanız, aşağıdaki sistem değişkenleri Play’i deponuzu kullanması için yapılandırmakta kullanılabilir:
- https.keyStore - gizli anahtar ve sertifikayı saklayan anahtar deposunun konumu - eğer sağlanmadıysa Play sizin için bir anahtar deposu üretecektir.
- https.keyStoreType - anahtar deposu türü, varsayılan olarak
JKS
- https.keyStorePassword - parola, varsayılan olarak boş
- https.keyStoreAlgorithm - anahtar deposu algoritması, varsayılan olarak platformun varsayılan algoritması
§Özel bir SSL motorundan SSL sertifikaları
SSL sertifikalarını yapılandırmanın bir alternatifi de özel bir SSLEngine sağlamaktır. Bu aynı zamanda, özel istemci kimlik doğrulaması gibi özelleştirimiş bir SSLEngine’in gerektiği durumlarda işe yarar.
§Java’da, play.server.SSLEngineProvider
için bir uygulama sağlanmak zorundadır
import play.server.ApplicationProvider;
import play.server.SSLEngineProvider;
import javax.net.ssl.*;
import java.security.NoSuchAlgorithmException;
public class CustomSSLEngineProvider implements SSLEngineProvider {
private ApplicationProvider applicationProvider;
public CustomSSLEngineProvider(ApplicationProvider applicationProvider) {
this.applicationProvider = applicationProvider;
}
@Override
public SSLEngine createSSLEngine() {
try {
// change it to your custom implementation
return SSLContext.getDefault().createSSLEngine();
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
}
}
§Scala’da, play.server.api.SSLEngineProvider
için bir uygulama sağlanmak zorundadır
import javax.net.ssl._
import play.core.ApplicationProvider
import play.server.api._
class CustomSSLEngineProvider(appProvider: ApplicationProvider) extends SSLEngineProvider {
override def createSSLEngine(): SSLEngine = {
// change it to your custom implementation
SSLContext.getDefault.createSSLEngine
}
}
play.server.SSLEngineProvider
veya play.server.api.SSLEngineProvider
uygulamasını hazırladıysanız, aşağıdaki sistem değişkenleri Play’i onu kullanacak şekilde yapılandırmayı sağlar:
- play.http.sslengineprovider -
play.server.SSLEngineProvider
orplay.server.api.SSLEngineProvider
sınıfını uygulayan sınıfın konumu
Örnek:
./start -Dhttps.port=9443 -Dplay.http.sslengineprovider=mypackage.CustomSSLEngineProvider
§HTTP’yi kapatmak
HTTP portunundaki bağlantıyı devre dışı bırakmak için, http.port
sistem değişkenini disabled
yapın. Örneğin:
./start -Dhttp.port=disabled -Dhttps.port=9443 -Dhttps.keyStore=/path/to/keystore -Dhttps.keyStorePassword=changeme
§HTTPS’nin üretim ortamında kullanımı
Play HTTPS’yi üretim ortamında kullanıyorsa, JDK 1.8 ile çalışmalıdır. JDK 1.8 JSSE’yi bir TLS termination layer olarak uygulanabilir kılan yeni özellikler sağlar. Eğer JDK 1.8 kullanılmıyorsa, Play’in önünde bir ters vekil kullanmak daha iyi bir kontrol ve HTTPS güvenliği sağlayacaktır.
Eğer Play’i TLS termination layer için kullanmak isterseniz, lütfen aşağıdaki ayarlara dikkat edin:
SSLParameters.setUseCipherSuiteorder()
- Sunucu tercihine göre şifre takımını yeniden sıralar.- -Djdk.tls.ephemeralDHKeySize=2048 - Bir DH anahtar alışverişinde anahtar boyutunu artırır.
- -Djdk.tls.rejectClientInitiatedRenegotiation=true - Tekrar istemci görüşmesini reddeder.
Sonraki: Bir bulut hizmetine dağıtım yapmak
Dokümantasyonun bu çevirisi Play ekibi tarafından yapılmamaktadır. Eğer bir hata bulduysanız, bu sayfanın kaynak kodu burada bulunmaktadır. Dokümantasyon yönergelerini okuduktan sonra lütfen katkı yapmaktan çekinmeyin.