Tomcat SSL veya HTTPS Yapılandırma Örneği

Açık Erişim SSL

Tomcat SSL veya HTTPS Yapılandırma Örneği


Güvenli Yuva Katmanı (SSL), kriptografik yöntemler kullanarak İnternet üzerinden iletişim için kullanılan güvenli bir aktarım protokolüdür. SSL protokolünün temel amacı, hiç kimsenin bir tarayıcı ile web uygulamasının dağıtıldığı sunucu arasındaki iletişimi kurcalamayacağının garantisidir. Güvenli iletişimin başka bir amacı, sunucunun ve sahibinin SSL bilgilerine dayanarak kimlik doğrulaması yapabilmesidir - böylece bir kullanıcı erişmekte olduğu sunucunun söylediği sunucu olduğundan emin olabilir. Genel bir SSL senaryosunda, kullanıcı web sunucusuna ilk kez eriştiğinde, sunucu istemciye SSL sertifikasını veya ortak anahtarını gönderir. SSL sertifikası, sunucu, sahibi, şirketi ve geçerlilik süresi ile ilgili bilgileri içerir. Kullanıcı, özgünlüğüne güvenmiyorsa, sertifikayı reddedebilir ve bağlantıyı etkin bir şekilde sonlandırabilir. Kullanıcı sertifikayı kabul ederse, sertifikanın kendisi tarayıcıda saklanır ve veren sunucu ile güvenli bir bağlantı başlatmak için kullanılır.

HTTP protokolü üzerinden SSL protokolü iletişimi HTTPS (güvenli HTTP) olarak adlandırılır. SSL şifreli bağlantılar kullanan web siteleri, örneğin tarayıcının adres çubuğunda protokol adı olarak https görüntüler. Sertifika Yetkilileri (CA) adı verilen kuruluşlar SSL sertifikasının ayrıntılarını doğrulayabilir, bu nedenle kullanıcı CA'ya güvenirse, güvenli web sitesinin sertifikalı olduğundan ve ayrıntılarının doğru olduğundan emin olabilirler. Sertifikalı SSL sertifikası verebilecek bir dizi CA vardır. Modern tarayıcılar, en büyük ve en iyi bilinen CA'ları otomatik olarak tanır ve bu kuruluşlar tarafından otomatik olarak sertifikalandırılmış SSL sertifikaları sağlayan sitelere bağlantılara izin verir. SSL sertifikası bir CA tarafından sertifikalandırılmamışsa veya CA tarafından onaylanmış ancak kullanıcının tarayıcısı tarafından tanınmıyorsa, kullanıcıya sertifikaya güvenip güvenmeyeceğine karar verebileceği bir uyarı ekranı sunulur.


1) Anahtar Deposu Oluşturma


SSL sertifikaları JKS dosyalarıdır. JKS formatı, Java'ya özgü bir anahtar deposu formatı olan Java KeyStore'un kısaltmasıdır. JKS anahtar deposu, 1.4 sürümünden Java SDK'nın bir parçası olarak dağıtılan keytool yardımcı programı uygulaması kullanılarak oluşturulabilir ve değiştirilebilir. Kendinden imzalı bir SSL sertifikası oluşturmak için kullanacağımız Keytool, JAVA_HOME / bin / dizininde bulunur.


//GOTO JAVA HOME
c:\ > cd %JAVA_HOME%/bin
 
//TYPE GENKEY COMMAND
C:\BAML\DFCCUI\installs\jdk1.6\bin>keytool -genkey -alias tomcat -keyalg RSA
 
Enter keystore password:
Re-enter new password:
What is your first and last name?
  [Unknown]:  lokesh
What is the name of your organizational unit?
  [Unknown]:  boa
What is the name of your organization?
  [Unknown]:  boa
What is the name of your City or Locality?
  [Unknown]:  delhi
What is the name of your State or Province?
  [Unknown]:  delhi
What is the two-letter country code for this unit?
  [Unknown]:  91
Is CN=lokesh, OU=boa, O=boa, L=delhi, ST=delhi, C=91 correct?
  [no]:  yes
 
Enter key password for <tomcat>
        (RETURN if same as keystore password):
Re-enter new password:
 
C:\installs\jdk1.6\bin>


Kullanıcı ana dizininizde bir .keystore dosyası oluşturur. Windows 7'de, C: \ Users \ lokesh altında.

Bir IP adresi için yalnızca bir SSL sertifikanız olabilir. Aynı IP'de birden fazla alan barındırıyorsanız, bu ana bilgisayar adlarından yalnızca birinin alan adıyla eşleşen geçerli bir SSL sertifikası olabilir. Aynı IP'deki başka bir alan adı için SSL kullanmaya çalışırsanız, tarayıcı alan adının sertifikayla eşleşmediğine dair bir uyarı görüntüler. Bu, SSL'nin bilinen bir sınırlamasıdır, çünkü ana bilgisayar adı HTTP isteğinden çıkarılmadan önce bir SSL protokolü anlaşması gerçekleşmelidir.


2) server.xml dosyasındaki Bağlayıcı güncelleniyor


Tomcat kurulum dizininizi açın ve conf klasörünü açın. Bu klasörün içinde server.xml dosyasını bulacaksınız. Açın ve aşağıdaki bildirimi bulun:

<!--
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
           maxThreads="150" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS" />
-->

Ve bu bilgilerle değiştirin. Parolanızı ve anahtar deposu yolunuzu kullanmayı unutmayın.

<Connector SSLEnabled="true" acceptCount="100" clientAuth="false"
    disableUploadTimeout="true" enableLookups="false" maxThreads="25"
    port="8443" keystoreFile="C:/Users/lokesh/.keystore" keystorePass="password"
    protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https"
    secure="true" sslProtocol="TLS" />

Bitirdiniz. Şimdi uygulama değişikliklerine bakın.


3) Uygulamanın web.xml dosyasını güvenli URL'lerle güncelleme


Şimdi uygulamanızın web.xml dosyasını aşağıdakilerle güncelleyin.

<security-constraint>
    <web-resource-collection>
        <web-resource-name>application-one</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
        <transport-guarantee>NONE</transport-guarantee>
    </user-data-constraint>
</security-constraint>


URL kalıbı /* olarak ayarlanmış, böylece uygulamanızdaki herhangi bir sayfa / kaynak güvenli (sadece https ile erişilebilir). Aktarım garantisi etiketi, uygulamanızın SSL'de çalışacağından emin olmak için GİZLİ yani CONFIDENTIAL olarak ayarlanmıştır.


Şimdi https://localhost:8443/application-one/ kullanarak uygulamaya erişmeyi deneyin. Bu tarayıcıdaki sertifika bilgilerini gösterecektir.

tomcat-https-enabled


Yalnızca sertifikayı kabul ettikten sonra sayfayı görüntüler.

ssl-certificate-accepted

Web.xml dosyasında “security-constraint” yani güvenlik-kısıtlamasında koymazsanız, http://localhost:8080/application-one/ kullanarak doğrudan uygulamanıza erişebileceksiniz.

ssl-disabled

Tomcat sunucusunda SSL desteği uygulama ile ilgili bu basit ama önemli konsept için hepsi bu.


Nice Mutlu Öğrenmeler!