Java Uygulamalar için A’dan Z’ye Apache Tomcat Rehberi

apache-tomcat

Bir müşterimden gelen talep üzerine Java Web uygulaması için Web Server çalışması gerçekleştirdim. Yapıda Java için bilinen popüler java servlet, Apache Tomcat yer alıyor. Tüm bu süreçleri sizlerle paylaşacağım. İlerleyeceğimiz adımlar şunlardır;

A) Apache Tomcat Konumlandırma
B) Apache Tomcat Kurulumu
C) KeyStore Oluşturma (Anahtar Deposu)
D) CSR Oluşturma (Sertifika İsteği)
E) CRT Yükleme (Sertifika)
F) Apache Tomcat SSL Yapılandırması
G) Apache Tomcat’in Başlatılması

A) Apache Tomcat Konumlandırma

Apache Tomcat versiyonu ne olursa olsun bu adımlar geçerli olacaktır. Burada önemli kriter sertifikanın server tarafında doğru port ve yapılandırmaya sahip olmasıdır.

Peki, bu ne demek oluyor?

Eğer Apache Tomcat’i server üzerinde farklı Web server mevcutsa (Apache Web Server, Nginx Server gibi) Web uygulamamız için alternatif port düşünmemiz gerekecek. Çünkü tüm HTTP serverları default olarak 80 HTTPS için 443’ü kullanır. Server üzerinde hem Apache Web Server hem Apache Tomcat var ise 80 ve 443’ü dinleyecek tek servis olabileceği için serverlar sağlıklı çalışmayacaktır. Unutmamalıyız ki bir portu sadece bir servis dinleyebilir. Aynı server üzerinde yer alan Apache Tomcat için 8443 portunu kullanabiliriz.

Java uygulamasını farklı bir server üzerinden çalıştırmak istersek port için default 443’ü kullanabiliriz. Fakat Web sitemizin bir kısmı Apache Web Server’de çalışması gerekiyor ve bizim Java uygulamamız için çözüm üretmemiz gerekirse bunu A kaydı oluşturarak yapabiliriz. Örneğin, mshowto.org sitemizde PHP ve MySQL çalıştırmaktayız ve Java Uygulamamızın performanslı çalışması için ikinci bir server mevcut. Yapmamız gereken çok basit; mshowto.org DNS Server’i üzerinden bir A kaydı oluşturmamız, biz bu örnekte a kaydına JAVA diyelim. Java A kaydı ise ikinci server olan Apache Tomcat’in IP adresini göstermeli.

  • mshowto.org Apache Web Server & MySQL
  • java.mshowto.org Apache Tomcat

B) Apache Tomcat Kurulumu

  • Makalemizde Apache Tomcat 10”ı Ubuntu Server’a kuracağız.
  • 80 ve 443 portlarını kullanacağı şekilde yapılandıracağız.
  • Path olarak da D:\Server\Java klasörünü kullanacağız.
  • Environment’ı JAVA_HOME yapacağız.
  1. Paket listelerini güncelleyelim.
    sudo apt update
  2. Java Development Kit’i kuruyoruz.
    sudo apt install default-jdk
  3. Tomcat için path oluşturuyoruz.
    sudo mkdir /opt/tomcat
    cd /opt/tomcat
  4. Path’i environment olarak ekliyoruz. Set yazarak liste halinde görebiliriz.
    export JAVA_HOME=/opt/tomcat
  5. Son versiyonu Apache Tomcat adresinden indiriyoruz.
    wget https://ftp.itu.edu.tr/Mirror/Apache/tomcat/tomcat-10/v10.0.0-M3/bin/apache-tomcat-10.0.0-M3.tar.gz
  6. tar.gz dosyasını Path’imize çıkarıyoruz.
    sudo tar xzvf apache-tomcat-*tar.gz -C /opt/tomcat --strip-components=1
  7. Servis yapılandırması için dosyayı çalıştıralım.
    chmod +x ./bin/startup.sh
    ./bin/startup.sh
  8. Firewall üzerinden izin verelim.
    sudo ufw allow 8080
    sudo ufw allow 8443

C) KeyStore Oluşturma (Anahtar Deposu)

Sertifikayı public bir sağlayıcıdan (GeoTrust, Comodo gibi) temin edeceğiz.

Sertifika isteğini Java’nın Keytool aracını kullanarak gerçekleştireceğiz, şimdi adım adım ilerleyelim.

  1. Tomcat dizinine gidiyoruz ve sertifikaları yöneteceğimiz bir path oluşturup açıyoruz.
    mkdir $JAVA_HOME/SSL
    cd $JAVA_HOME/ssl
  2. KeyStore oluşturuyoruz.
    keytool -genkey -alias mshowto -keyalg RSA -keysize 2048 –keystore mshowto.keystore
    1. KeyStore parolasını oluşturuyor ve tekrar yazarak doğruluyoruz.
    2. Kullanılacak domain adı. En önemli kısım burasıdır.
      java.mshowto.org
    3. Organizasyon birimi.
      IT
    4. Şehir veya Lokasyon adı.
      MsHowto
    5. State ve Letter’a aynı değeri vererek tamamlıyoruz.
      TR
    6. Doğruluğunu “yes” yazarak onaylıyoruz.
    7. MshHowto.Store için KeyStore parolasını oluşturuyor ve tekrar yazarak doğruluyoruz.

Resim-1

D) CSR Oluşturma (Sertifika İsteği)

Oluşturduğumuz sertifika deposuyla yeni bir CSR oluşturuyoruz.

  1. Sertifikaları yöneteceğimiz path içerisindeyiz.
    cd $JAVA_HOME/SSL
  2. CSR oluşturuyoruz.
    keytool -certreq -keyalg RSA -alias mshowto -file CSR.txt -keystore mshowto.keystore
  3. KeyStore parolasını girerek CSR oluşturma işlemini tamamlıyoruz.
  4. cat CSR.txt ile CSR kodunu kopyalıyoruz.

Resim-2

  1. CSR kodunu SSL alacağımız sağlayıcıya iletiyor ve bize SSL için gerekli CRT dosyalarının gönderilmesini bekliyoruz.

E) CSR Oluşturma (Sertifika İsteği)

Sertifikalar genellikle ZIP dosyası halinde mail ile gönderiliyor. Şimdi sertifikamızı yöneteceğimiz path’e çıkaracak ve ardından import edeceğiz.

  1. Sertifikaları yöneteceğimiz path içerisindeyiz.
    cd $JAVA_HOME/ssl
  2. Sertifika ZIP’ini dışarı çıkarıyoruz. SSL klasöründe Root, Intermediate ve Domain sertifikalarını görebilmekteyiz.
  3. Root sertifikalar genellikle global ve tanınmış olduğundan server’da default olarak yer almaktadır. Bu yüzden import etmeye gerek yok.
  4. Intermediate (ara sertifika) ya da Bundle olarak bir sertifika varsa bunu import ediyoruz.
    keytool -import -alias intermed -keystore mshowto.keystore -trustcacerts -file JAVA_mshowto_org.ca-BUNDLE
  5. Domain sertifikasını import ediyoruz. Alias ve KeyStore oluşturduğumuz değerler ile aynı olmalı.
    keytool -import -alias mshowto -keystore tomcat.keystore -trustcacerts -file JAVA_mshowto_org.crt

F) Apache Tomcat SSL Yapılandırması

Sertifikamızı server’a import ettikten sonra Apache Tomcat tarafından yapılandırmayı gerçekleştirmemiz gerekiyor.

  1. Apache Tomcat yapılandırma dosyası $JAVA_HOME/conf altında server.xml dosyasıdır.
  2. Server.xml’i editleyeceğiz.
    Nano $JAVA_HOME/conf/server.xml
  3. <!–<Connector port=”8443 ‘ı server.xml içerisinde aratalım.
  4. <!—ve –> açıklama parametrelerini kaldırıyoruz. Connector portunu 443 olarak değiştiriyorum.

    Konumlandırma adımında planladığımız gibi yeni bir server’da Apache Tomcat çalışacağı için 443 yapmamız herhangi bir soruna yol açmayacak.
    Eğer aynı sunucuda Apache Web Server vb. Web Server olsaydı portu 8443 ya da farklı bir port olarak değiştirebiliriz. Bu makalede Java’ı başka bir sunucuda çalıştıracağım için 8080 portunu da 80 olarak değiştirdim.

  5. Port yapılandırmasından sonra SSL için KeyStore yapılandırmasını server.xml dosyasında düzenleyeceğiz.

    keystoreFile ve keystorePass değerlerini değiştirerek kaydedelim.

  6. Aşağıdaki gibi görünmelidir. Dilerseniz doğrudan bu yapılandırmayı kullanabilirsiniz.

G) Apache Tomcat’in Başlatılması

SSL yapılandırmasından sonra servisi yeniden başlatarak yapılandırmaları devreye alalım.

  1. Apache Tomcat servis yönetimi için bin klasörüne giriyoruz.
    cd $JAVA_HOME\bin\
  2. Apache Tomcat’i durdurmak için aşağıdaki komutu çalıştırın:
    ./shutdown.sh
  3. Apache Tomcat’i yeniden başlatmak için aşağıdaki komutu çalıştırın:
    ./startup.sh
  4. https://java.mshowto.org adresine girdiğimizde yapılandırmanın başarıyla tamamlandığını görüyoruz.

     

    Resim-3

    Referanslar

    www.mshowto.org

    http://tomcat.apache.org/tomcat-10.0-doc/index.html

    TAGs: Apache Tomcat, Apache Tomcat 9, Apache Tomcat 10, Apache Tomcat SSL, Apache Tomcat Service, Apache Tomcat Sertifika, Apache Tomcat CSR Oluşturma, java servlet

Yazı gezinmesi

Mobil sürümden çık