Aşağıdaki belge size sisteminizde kurulu olan Tomcat'e nasıl SSL ekleyeceğinizi ve geliştirme amaçlı nasıl ssl sertifikası alabileceğinizi açıklamayı hedeflemiştir. Geliştirme amaçlı olduğu için gerçek bir ssl sertifikası kullanılmayacak ve gerçek bir ssl gibi çalışmayacaktır. Amaç geliştiriciye ssl ile geliştirme imkanı sağlamaktır.
Ortam
Bu yazı windows sistemler baz alınarak hazırlanmıştır. Fakat Unix/Linux sistemlerinde de aynen çalışması gerekir.
Eğer Tomcat kendi başına çalışmıyorda başka bir web sunucusu arkasında çalışıyorsa Tomcat üzerinde herhangi bir işlem yapmaya gerek yoktur. Fakat kendi başına çalışan Tomcat sürümü kullanıyorsanız aşağıdaki ayarları yapmanız gerekecektir. Bu yazıyı yazarken Tomcat 6.0.16 sürümünü kullanmaktayım.
Apache Tomcat Native http://tomcat.apache.org/native-doc/
indirmek için http://tomcat.heanet.ie/native/1.1.12/binaries/win32/tcnative-1.dll
ve http://tomcat.heanet.ie/native/1.1.12/binaries/win32/openssl.exe
Bu iki dosyayı %CATALINA_HOME%\bin altına kopyalayın. openssl.exe dosyasını kopyalamanız gerekmeyebilir. Ben test etmedim.
Apache Portable Runtime http://apr.apache.org/
indirmek için http://www.ip97.com/apache.org/apr/binaries/win32/apr-all-1.2.12-win32-x86-msvcrt60.zip
Bu klasörü uygun gördüğünüz bir yere açın ve içerisindeki bin klasörünü path sistem değişkenine ekleyin.
Ayrıca Open SSL kurulumunu indirin, kurun ve lib\VC klasörünü path sistemdeğişkenine ekleyin. Örneğin benim sistemimde
c:\OpenSSL\lib\VC
şeklindedir.
Keystore Dosyası Oluşturmak
Windows sistemlerde

Unix sistemlerde

komutlarını komut satırından çalıştırın. Size bir dizi soru soracak. Bu sorulardan ilki ssl ile işaretlemek istediğiniz alanadı olmalı. "What is your first and last name?" sorusuna vereceğiniz cevap alanadi.com olduğu zaman www.alanadi.com çalışmaz. Eğer *.alanadi.com şeklinde çalışmak istiyorsanız wildcard ssl kullanmanız gerekidir. Biz geliştirme amacı ile kullanacağımıza göre bizim alan adımız büyük ihtimalle localhost olacaktır.
Bu işlem sonucunda user klasörü altında .keystore adında bir dosya oluşması gerekli. İsterseniz dosya adını kendiniz belirleyebilir, istediğiniz klasöre kaydedebilirsiniz. Ben bu yöntemi kullanıyorum.
komutunu çalıştırdığınızda komutu çalıştırdığınız yerde tomcat_ca adında bir dosya oluşması gereklidir. Ben bu klasörü tomcat içerisindeki conf klasörü olarak belirledim.
Şimdi gerekli olan sertifika dosyamızı oluşturmuş olduk. Eğer geliştirme amaçlı değilde gerçek bir ssl sistemi kuruyor olsaydık o zaman ssl sağlayıcı bir firmadan ayrıca hizmet almamız gerekirdi.
Tomcat Ayarları
%CATALINA_HOME%\conf\server.xml dosyasında yeni bir Connector yaratmamız gerekli. Eğer Tomcat'i varsayılan ayarları ile kullanıyorsanız Tomcat, istemci ile 8080 portundan konuşuyor demektir. Bu ayar server.xml dosyası içerisinde bulunmaktadır. Varsayılan olarak aşağıdaki şekilde gelmektedir.
connectionTimeout="20000"
redirectPort="8443" />
Bu girişten sonra yorum satırına alınmış olarak 8443 numaralı portu ayarlayan Connector girişi bulunmaktadır. Yorum satırı aynen dursun. Biz aşağıdaki Connector girişini sonrasına yapıştıralım.
port="8443"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="conf/tomcat_ca" keystorePass="Sifre"
clientAuth="false" sslProtocol="TLS"/>
Yukarıdaki girişte keystorePass niteliğine keystore dosyanızı oluştururken vermiş olduğunuz şifreyi girin.
Sonuç
Artık Tomcat istemci ile ssl üzerinden konuşmaya hazır. Test etmek için
https://localhost:8443/
adresine girebilirsiniz.
http://www.nabble.com/SSL-SetAllPropertiesRule-warning-and-error-td15432321.html
Ortam
Bu yazı windows sistemler baz alınarak hazırlanmıştır. Fakat Unix/Linux sistemlerinde de aynen çalışması gerekir. Eğer Tomcat kendi başına çalışmıyorda başka bir web sunucusu arkasında çalışıyorsa Tomcat üzerinde herhangi bir işlem yapmaya gerek yoktur. Fakat kendi başına çalışan Tomcat sürümü kullanıyorsanız aşağıdaki ayarları yapmanız gerekecektir. Bu yazıyı yazarken Tomcat 6.0.16 sürümünü kullanmaktayım.
Not
Bu yazıyı çalışırken hızlı hızlı yazdım. Dolayısı ile bazı hatalar içeriyor olabilir.Genel Olarak SSL
Secure Socket Layer (Güvenli Soket Katmanı) adı verilen bu teknoloji sunucu ile istemci arasında verilerin güvenli bir şekilde gönderilmesini sağlar. Basitçe bakacak olursak bir taraftan diğer tarafa gidecek olan veriler önce şifrelenir, soket üzerinden gönderilir ve verinin ulaştığı yerde şifresi çözülerek ulaşım sağlanır.Tomcat Kurulumu
Eğer daha önceden kurmadıysanız aşağıdaki bileşenleri kurmanız gerekmektedir. Bu bileşenler tomcat'in ssl ile çalışması için gereklidir.Apache Tomcat Native http://tomcat.apache.org/native-doc/
indirmek için http://tomcat.heanet.ie/native/1.1.12/binaries/win32/tcnative-1.dll
ve http://tomcat.heanet.ie/native/1.1.12/binaries/win32/openssl.exe
Bu iki dosyayı %CATALINA_HOME%\bin altına kopyalayın. openssl.exe dosyasını kopyalamanız gerekmeyebilir. Ben test etmedim.
Apache Portable Runtime http://apr.apache.org/
indirmek için http://www.ip97.com/apache.org/apr/binaries/win32/apr-all-1.2.12-win32-x86-msvcrt60.zip
Bu klasörü uygun gördüğünüz bir yere açın ve içerisindeki bin klasörünü path sistem değişkenine ekleyin.
Ayrıca Open SSL kurulumunu indirin, kurun ve lib\VC klasörünü path sistemdeğişkenine ekleyin. Örneğin benim sistemimde
c:\OpenSSL\lib\VC
şeklindedir.
Keystore Dosyası Oluşturmak
Windows sistemlerde"%JAVA_HOME%\bin\keytool" -genkey -alias tomcat -keyalg RSA

Unix sistemlerde
$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA

komutlarını komut satırından çalıştırın. Size bir dizi soru soracak. Bu sorulardan ilki ssl ile işaretlemek istediğiniz alanadı olmalı. "What is your first and last name?" sorusuna vereceğiniz cevap alanadi.com olduğu zaman www.alanadi.com çalışmaz. Eğer *.alanadi.com şeklinde çalışmak istiyorsanız wildcard ssl kullanmanız gerekidir. Biz geliştirme amacı ile kullanacağımıza göre bizim alan adımız büyük ihtimalle localhost olacaktır.
Bu işlem sonucunda user klasörü altında .keystore adında bir dosya oluşması gerekli. İsterseniz dosya adını kendiniz belirleyebilir, istediğiniz klasöre kaydedebilirsiniz. Ben bu yöntemi kullanıyorum.
"%JAVA_HOME%\bin\keytool" -genkey -alias tomcat -keyalg RSA -keystore ./tomcat_ca
komutunu çalıştırdığınızda komutu çalıştırdığınız yerde tomcat_ca adında bir dosya oluşması gereklidir. Ben bu klasörü tomcat içerisindeki conf klasörü olarak belirledim.
Şimdi gerekli olan sertifika dosyamızı oluşturmuş olduk. Eğer geliştirme amaçlı değilde gerçek bir ssl sistemi kuruyor olsaydık o zaman ssl sağlayıcı bir firmadan ayrıca hizmet almamız gerekirdi.
Tomcat Ayarları
%CATALINA_HOME%\conf\server.xml dosyasında yeni bir Connector yaratmamız gerekli. Eğer Tomcat'i varsayılan ayarları ile kullanıyorsanız Tomcat, istemci ile 8080 portundan konuşuyor demektir. Bu ayar server.xml dosyası içerisinde bulunmaktadır. Varsayılan olarak aşağıdaki şekilde gelmektedir. redirectPort="8443" />
Bu girişten sonra yorum satırına alınmış olarak 8443 numaralı portu ayarlayan Connector girişi bulunmaktadır. Yorum satırı aynen dursun. Biz aşağıdaki Connector girişini sonrasına yapıştıralım.
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="conf/tomcat_ca" keystorePass="Sifre"
clientAuth="false" sslProtocol="TLS"/>
Yukarıdaki girişte keystorePass niteliğine keystore dosyanızı oluştururken vermiş olduğunuz şifreyi girin.
Sonuç
Artık Tomcat istemci ile ssl üzerinden konuşmaya hazır. Test etmek için https://localhost:8443/
adresine girebilirsiniz.
Faydalanılan Kaynaklar
http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.htmlhttp://www.nabble.com/SSL-SetAllPropertiesRule-warning-and-error-td15432321.html
Yorumlar