Tomcat Security

Merhaba arkadaslar, bu yazımda Tomcat’i secure olarak ayağa kaldırmayı anlatmaya çalışacağım.

Öncelikle bazı kavramlar hakkında ufak bilgiler verelim.

SSL(Secure Sockets Layer)/TLS(Transport Layer Security)/HTTPS

Temel olarak client ile server arasındaki iletişimin gizlenmesi/şifrelenmesi anlamına gelir. SSL’in son kullanılan sürümü 3.0’dır. TLS ise SSL’in devamı olarak geliştirilen yeni bir teknolojidir. SSL’in standartlaşması için geliştirilmiştir. İkisi arasında bu daha güvenlidir gibi bir ayrım yapmak pek doğru değil. Temelde birkaç farklılıkları bulunur sadece. SSL ve TLS’in nasıl çalıştıklarını çok detaylı anlatamayacağım. Ancak TCP katmanında(UDP için de implementasyonu var) client ile server arasında bir handshake olduğunu söyleyebiliriz. Asimetrik bir şifreleme üzerinde client/server anlaşır ve aradaki iletişim/mesajlaşma artık encrypt edilerek gidip gelir.

HTTPS ise HTTP üzerine SSL/TLS’in eklenmesi sonucu web üzerinde iletişimin secure olduğunu belirtir.

JKS(Java KeyStore)

Java içerisinde key ve sertifika yönetimini yapan bir araçtır. “keytool” command ile keystore oluşturulabilir, oraya girmeyeceğiz ama CSR, self-signed sertifika ve import işlemlerini yapabileceğiniz özellikli bir araç.

Tomcat SSL ve TLS destekliyor, öncesinde kendimiz için bir keystore oluşturacağız. Bunun için makinada Java kurulu olması gerekir tabi;

Screenshot from 2016-07-10 12:37:03

Yukarıda ilk command olarak “keytool -genkey -alias tomcat -keyalg RSA” ile keystore oluşturmak için ilk adımı yaptık. Burada -alias’dan sonra gelen tomcat unique’dir her keystore için. Kendi domaininizi belirten birşey yazabilirsiniz. Devamında size keystore şifresi ile birlikte birkaç soru soracaktır. Değerleri girelim.

Devamında home dizini altında “.keystore” ile bir dosya oluşturacaktır. Detayını göründülemek istediğimizde çıktıyı görebileceğiz. Keystore type’ın JKS ve provider’ın SUN olduğuna dikkat edebiliriz.

Tomcat with SSL/TLS

Tomcat JKS, PKCS11 ve PKCS12 formatlarındaki keystore’lar ile çalışabilmektedir. JKS, keytool ile üretilebilen Java keystore’dur, jdk içerisinde dahili olarak gelir.  PKCS12 ise genel internet standartıdır, openssl gibi araçlarla generate edilebilir.

Tomcat’i HTTPS olarak ayağa kaldırmak için Connector tanımı yapacağız. Tomcat’i Eclipse’de kullanmaya alıştı iseniz server sekmesinde açtığınızda sağ tarafta hangi port’lardan neyin ayağa kalktığını bulabilirsiniz. Son halini ekleyelim;

Screenshot from 2016-07-10 13:18:16

Default olarak gelen Tomcat admin port ve AJP ile birlikte SSL olarak tanımladığımız 8443 portundan bir Connector ayağa kalkacaktır. Bu tanımlamlar tomcat base directory içerisinde bulunan conf dizinindeki server.xml içerisinde yapılır.

server.xml içerisindeki Service içerisinde aşağıdaki Connector tanımını ekliyoruz;

Connector tanımımız şu şekilde;

Burada keystore dosyasınını, sifre olarak “caysever”, port, protocol, scheme(https) gibi bilgileri giriyoruz. Tomcati restart ettikten sonra HTTPS olarak HTTP + SSL olarak çalışabiliyor olacağız.

Herhangi bir uygulama deploy edip HTTPS olarak gidelim;

Screenshot from 2016-07-10 13:26:51

HTTPS olarak gidebildik ancak firefox bu site güvenli değildir diyerek bizi uyardı. Sertifikayı valide edemediginden dolayı bu uyarıyı verecektir. Development anında bu uyarıyı dikkate almayabilirsiniz ancak production ortamlarında self signed sertifika almanız gerekmektedir yada kendi CA server’ınızın bulunması gerekecektir.

Not : Yukarıdaki uyarının verilmiş olması client ile server arasındaki communication’nun not secure olduğu anlamına gelmez. Yine tüm iletişim SSL üzerinden şifreli olarak gidip gelecektir.

Yazıyı burada sonlandırıyoruz, mutlu ve esen kalın.

– A.Akkus

 

 

614 Total Views 1 Views Today