bg-tutorials

Tomcat’te SSL Sertifikası Nasıl Kurulur

Bu eğitimde, Java keytool aracını kullanarak Apache Tomcat’e nasıl SSL sertifikası yükleyeceğinizi öğreneceksiniz, ardından server.xml dosyasındaki HTTPS bağlayıcısını yapılandıracaksınız. CSR’nizi henüz oluşturmadıysanız, ilk bölüm size bunun nasıl yapılacağını gösterir.

Sürecin tamamını adım adım gösteren bir video da hazırladık. Videoyu izleyebilir, talimatları okuyabilir veya her ikisini de yapabilirsiniz. Videoyu aşağıda izleyebilirsiniz.

Tomcat için CSR kodu oluşturma

CSR, Certificate Signing Request (Sertifika İmzalama Talebi) anlamına gelir ve domain’iniz ile kuruluşunuz hakkındaki güncel bilgileri içeren bir metin bloğudur. Ticari bir SSL sertifikası satın alan her kişi, doğrulamayı geçmek ve sertifikayı almak için Sertifika Yetkilisine (SSL sağlayıcısına) bir CSR göndermek zorundadır. CSR yanlış bilgiler içeriyorsa, CA bunu imzalamaz.

Tomcat’te CSR, bir Java keystore’undan keytool ile oluşturulur ve aynı keystore, kurulum sırasında yeniden kullanacağınız özel anahtarı (private key) da barındırır. İki seçeneğiniz var:

Önemli: CSR’yi oluştururken kullandığınız keystore dosyasını ve alias’ı not edin. İmzalanmış sertifikanızı daha sonra tam olarak bu alias’a geri aktaracaksınız, çünkü eşleşen özel anahtar oradadır.

Sertifika Yetkilisi talebinizi doğruladıktan ve SSL dosyalarını size gönderdikten sonra, aşağıdaki kurulumla devam edin.

Tomcat’e SSL sertifikası yükleme

Bir Tomcat kurulumu iki aşamadan oluşur: önce sertifika zincirini ve imzalanmış sertifikanızı, özel anahtarınızı zaten içeren keystore’a aktarırsınız, ardından server.xml dosyasındaki HTTPS bağlayıcısını bu keystore’u kullanacak şekilde yapılandırırsınız.

Adım 1: SSL sertifika dosyalarınızı hazırlayın

Sertifika Yetkiliniz dosyaları belirttiğiniz e-posta adresine gönderir, genellikle bir ZIP arşivi olarak. Bunu çıkarın. CA’ya bağlı olarak dosyalar iki formattan birinde gelir:

  • PKCS#7: sertifikanızı, kök ve ara sertifikalarla birlikte zaten paketleyen tek bir .p7b (veya .cer) dosyası.
  • PEM: ayrı dosyalar, genellikle sunucu sertifikanız için bir .crt dosyası ile ayrı root.crt ve intermediate.crt dosyaları.

Çıkardığınız dosyaları sunucuya, CSR’nizi oluşturduğunuz keystore ile aynı dizine yükleyin (aşağıda example.jks olarak adlandırılır). Formatınızı belirleyin ve ilgili talimatları takip edin.

Adım 2: Sertifikayı keystore’unuza aktarın

PKCS#7 formatı. Bir .p7b dosyası zaten tam zinciri içerdiğinden, tek bir komut her şeyi mevcut özel anahtar alias’ınıza aynı anda aktarır:

keytool -import -trustcacerts -alias ssldragon -keystore example.jks -file example.p7b

ssldragon yerine kendi alias’ınızı ve example yerine kendi dosya adlarınızı yazın. Alias, özel anahtarınızı zaten tutan alias olmalıdır (CSR adımından gelen alias). Certificate reply was installed in keystore mesajını gördüğünüzde, aktarım başarılı olmuştur. Keystore’un içeriğini şu şekilde doğrulayın:

keytool -list -v -keystore example.jks

Türü PrivateKeyEntry olan ve sertifika zincir uzunluğu 1’den fazla olan bir girdi arayın. Bu, imzalanmış sertifikanın artık özel anahtarınıza bağlı olduğunu doğrular.

PEM formatı. Sertifikaları zincir sırasına göre ayrı ayrı aktarın: önce kök sertifika, ardından herhangi bir ara sertifika ve son olarak domain sertifikanız. Zinciri önce aktarmak, keytool’un yanıtı anahtarınıza eklemeden önce tam bir güven yolu (trust path) oluşturmasına olanak tanır. Kök sertifikayı aktarın:

keytool -import -trustcacerts -alias root -keystore example.jks -file root.crt

Ardından ara sertifikayı aktarın:

keytool -import -trustcacerts -alias intermediate -keystore example.jks -file intermediate.crt

CA’nız birden fazla ara sertifika sağlıyorsa, her birini birbirlerini imzaladıkları sırayı takip ederek (kökten domain sertifikanıza doğru) kendi güvenilir alias’ı altında aktarın. Örneğin, bir Sectigo Sectigo PositiveSSL sertifikası birden fazla ara sertifikayla gelir, bu nedenle bunları domain sertifikasından önce sırayla aktarın.

Son olarak, birincil sertifikanızı (domain’iniz için verilen sertifika) mevcut özel anahtar alias’ına aktarın, yani CSR’yi oluştururken kullandığınız aynı alias’a:

keytool -import -trustcacerts -alias ssldragon -keystore example.jks -file example.crt

Burada, ssldragon mevcut özel anahtar alias’ınız olmalıdır. Bu alias zaten bir anahtar içerdiğinden, keytool bu aktarımı bir sertifika yanıtı (certificate reply) olarak ele alır ve imzalanmış sertifikayı anahtara bağlar. HTTPS’in çalışmasını sağlayan adım budur.

Kritik tuzak: imzalanmış sertifikayı yepyeni bir alias altında aktarmayın. Alias’ta mevcut bir özel anahtar yoksa, keytool sertifikayı bağlı bir anahtar olmadan bağımsız güvenilir bir girdi olarak saklar ve TLS başarısız olur. Anahtarınızı hangi alias’ın tuttuğundan emin değilseniz, keytool -list -v -keystore example.jks komutunu çalıştırın ve türü PrivateKeyEntry olan alias’ı kullanın.

Adım 3: server.xml dosyasındaki HTTPS bağlayıcısını yapılandırın

Sertifika keystore’unuzda olduğuna göre, Tomcat’in HTTPS bağlayıcısını buna yönlendirin. Bağlayıcı, Tomcat kurulumunuzun conf klasöründe bulunan server.xml dosyasında tanımlanır (örneğin $CATALINA_HOME/conf/server.xml). Dosyayı bir metin düzenleyicide açın.

Güncel Tomcat sürümlerinde (9, 10 ve 11), önerilen biçim, keystore’unuza referans veren bir Certificate öğesini içeren bir SSLHostConfig öğesini iç içe yerleştirir. Güvenli bağlayıcıyı ekleyin veya şu şekilde güncelleyin:

<Connector
    port="443"
    protocol="org.apache.coyote.http11.Http11NioProtocol"
    maxThreads="150"
    SSLEnabled="true"
    scheme="https"
    secure="true">
  <SSLHostConfig>
    <Certificate
        certificateKeystoreFile="/your_path/example.jks"
        certificateKeystorePassword="your_keystore_password"
        certificateKeystoreType="JKS"
        certificateKeyAlias="ssldragon"
        type="RSA" />
  </SSLHostConfig>
</Connector>
  • certificateKeystoreFile: keystore dosyanızın tam yolu.
  • certificateKeystorePassword: keystore şifresi.
  • certificateKeystoreType: .jks keystore için JKS, veya .p12 / .pfx keystore için PKCS12.
  • certificateKeyAlias: özel anahtarınızı ve imzalanmış sertifikanızı tutan alias (burada, ssldragon). Bu, keystore birden fazla girdi içerdiğinde Tomcat’e hangi girdiyi sunacağını bildirir.

Not: yukarıda kullanılan 443 portu standart HTTPS portudur; Tomcat’in kendi örnekleri varsayılan olarak 8443‘ü kullanır, bu nedenle ortamınızın beklediği portu kullanın. Bu ilk HTTPS kurulumunuzsa, güvenli bağlayıcı server.xml dosyasında yorum satırına alınmış olabilir. Bağlayıcının etkin olması için çevresindeki yorum işaretlerini kaldırın ve başka bir bağlayıcının zaten aynı porta bağlı olmadığından emin olun.

Eski biçim (daha eski Tomcat). Daha eski kılavuzlar, keystore bilgilerini doğrudan bağlayıcı üzerine keystoreFile ve keystorePass öznitelikleri olarak yerleştirir. Bu tarz, yukarıda gösterilen SSLHostConfig ve Certificate öğeleri tarafından geçersiz kılınmıştır ve desteklenen Tomcat sürümlerinde kullanılması gereken biçim budur.

Adım 4: server.xml dosyasını kaydedin ve Tomcat’i yeniden başlatın

server.xml dosyasını kaydedin, ardından yapılandırmayı yeniden yüklemesi için Tomcat’i yeniden başlatın. Linux’ta, birlikte gelen betikleri kullanın:

$CATALINA_HOME/bin/shutdown.sh
$CATALINA_HOME/bin/startup.sh

Tomcat bir servis olarak çalışıyorsa, bunun yerine servis yöneticiniz üzerinden yeniden başlatın (örneğin Linux’ta systemctl restart tomcat, veya Windows’ta Services paneli). Tebrikler, SSL sertifikanız artık Tomcat sunucunuza yüklendi.

Tomcat SSL kurulumunuzu test edin

Sertifikayı yükledikten sonra, küçük hatalar fark edilmeden aralara sızabilir ve tarayıcıların sitenize nasıl davrandığını etkileyebilir. Kurulumu kontrol etmeyi bir alışkanlık haline getirin. Eksik bir ara sertifika veya güvenilmeyen bir zincir gibi sorunları ortaya çıkaran anlık bir tarama için SSL Checker aracımızı çalıştırın.

Sıkça Sorulan Sorular

Tomcat SSL sertifikam aktardıktan sonra neden çalışmıyor?

Genel sebep, imzalanmış sertifikayı özel anahtarınızı zaten tutan alias yerine yeni bir alias altında aktarmaktır. keytool bunu daha sonra anahtarı olmayan güvenilir bir sertifika girdisi olarak saklar, dolayısıyla Tomcat bir TLS el sıkışmasını tamamlayamaz. İmzalanmış yanıtı, mevcut özel anahtar alias’ına (CSR’nizden gelen) yeniden aktarın. keytool -list -v -keystore example.jks komutunu çalıştırıp alias’ın bir PrivateKeyEntry olarak görünüp görünmediğini ve zincirin bir sertifikadan uzun olduğunu kontrol ederek işe yaradığını doğrulayın.

Önce sertifika zincirini mi yoksa domain sertifikamı mı aktarmalıyım?

Önce zinciri aktarın. Kök ve varsa ara sertifikaları sırayla güvenilir girdiler olarak ekleyin, ardından domain sertifikanızı en son olarak özel anahtar alias’ına aktarın. Bu, keytool’un yanıtı anahtarınıza eklemeden önce tam bir güven yolu oluşturmasına olanak tanır. Bir PKCS#7 (.p7b) dosyasında zincir zaten paketlenmiştir, dolayısıyla tek bir aktarım her şeyi halleder.

Tomcat SSL yapılandırma dosyası nerede?

HTTPS bağlayıcısı, Tomcat kurulumunuzun conf dizininde bulunan server.xml dosyasında tanımlanır (örneğin $CATALINA_HOME/conf/server.xml). Güncel Tomcat sürümlerinde, keystore doğrudan bağlayıcı üzerinde değil, iç içe yerleştirilmiş bir SSLHostConfig ve Certificate öğesi üzerinden referans gösterilir.

Tomcat’te JKS yerine PKCS12 keystore kullanabilir miyim?

Evet. Tomcat her ikisini de destekler. .p12 veya .pfx keystore için certificateKeystoreType‘ı PKCS12 olarak, .jks keystore için JKS olarak ayarlayın ve certificateKeystoreFile‘ı ilgili dosyaya yönlendirin. PKCS12, standart ve taşınabilir bir keystore formatıdır, dolayısıyla yeni keystore’lar için iyi bir varsayılan seçimdir.

Tomcat, HTTPS için hangi portu kullanır?

Tomcat’in örnek yapılandırması güvenli bağlayıcı için 8443 portunu kullanır. Tarayıcıların varsayılan olarak kullandığı standart port üzerinden HTTPS sunmak için bağlayıcının port değerini 443 olarak ayarlayın ve başka bir bağlayıcı veya servisin zaten bu portu kullanmadığından emin olun.

SSL yapılandırmasını değiştirdikten sonra Tomcat’i nasıl yeniden başlatırım?

Birlikte gelen betikleri çalıştırın: önce $CATALINA_HOME/bin/shutdown.sh, ardından $CATALINA_HOME/bin/startup.sh, veya Tomcat servisini servis yöneticiniz üzerinden yeniden başlatın (örneğin Linux’ta systemctl restart tomcat, veya Windows’ta Services paneli). server.xml’deki değişikliklerin etkili olması için yeniden başlatma gereklidir.

Bugün SSL Dragon’dan sipariş vererek SSL Sertifikalarında %10 indirimden yararlanın!

Hızlı düzenleme, güçlü şifreleme, %99,99 tarayıcı güvenilirliği, özel destek ve 25 günlük para iade garantisi. Kupon kodu: SAVE10

A detailed image of a dragon in flight
Tarafından yazıldı

SSL Sertifikaları konusunda uzmanlaşmış deneyimli içerik yazarı. Karmaşık siber güvenlik konularını açık, ilgi çekici içeriğe dönüştürmek. Etkili anlatımlar yoluyla dijital güvenliğin geliştirilmesine katkıda bulunun.