Linux üzerinde çalışan bir Tomcat sunucusunda HTTPS'yi etkinleştirmek için Java KeyStore (JKS) veya PFX/PKCS#12 biçiminde bir SSL sertifikası yükleyin. Bu kılavuzda sertifikanın indirilmesi, Tomcat'in server.xml dosyasının yapılandırılması, 443 numaralı bağlantı noktasının açılması ve dağıtımın doğrulanması anlatılmaktadır.
Gereksinimler
Başlamadan önce aşağıdaki gereksinimlerin karşılandığından emin olun:
Sertifika Durumu: Güvenilir bir sertifika yetkilisi (CA) tarafından verilmiş bir SSL sertifikanız bulunmalıdır. Sertifikanızın süresi dolmak üzereyse veya süresi geçmişse öncelikle yenilemeniz gerekir.
-
Eşleşen Alan Adları: Sertifikanın korumak istediğiniz tüm alan adlarını kapsadığından emin olun. Bir alan adı eklemeniz veya değiştirmeniz gerekiyorsa ücretli bir sertifika satın alabilir veya alan adlarını ekleyip değiştirebilirsiniz.
-
Tam eşleşen alan adı: Tam eşleşen alan adı sertifikası yalnızca belirtilen alan adı için geçerlidir.
example.comiçin bir sertifika yalnızcaexample.comiçin geçerlidir.www.example.comiçin bir sertifika yalnızcawww.example.comiçin geçerlidir.
-
Joker karakterli alan adı: Joker karakterli alan adı sertifikası yalnızca birinci düzey alt alan adları için geçerlidir.
*.example.comiçin bir sertifika;www.example.comvea.example.comgibi birinci düzey alt alan adlarını kapsar.*.example.comiçin bir sertifika kök alan adıexample.comveyaa.b.example.comgibi çok düzeyli alt alan adları için geçerli değildir.
NotÇok düzeyli bir alt alan adıyla eşleşmesi için Bound Domains alanında belirli alan adı (örneğin,
a.b.example.com) veya buna karşılık gelen bir joker karakterli alan adı (örneğin,*.b.example.com) yer almalıdır. -
Sunucu İzinleri:
roothesabını veyasudoizinlerine sahip bir hesabı kullanın.DNS Çözümlemesi: Alan adı sunucunun genel IP adresine çözümlenir.
Hızlı başlangıç
Yükleme işlemi dört adımdan oluşur:
Sertifika Yönetimi konsolundan sertifika paketini indirin ve dosyaları sunucunuza yükleyin.
Güvenlik grubunuzda ve güvenlik duvarında 443 numaralı bağlantı noktasını açın.
SSL bağlayıcısını eklemek için
server.xmldosyasını düzenleyin, ardından Tomcat'i yeniden başlatın.Bir tarayıcıda
https://yourdomainadresini ziyaret edin ve kilit simgesinin göründüğünü onaylayın.
Önkoşullar
Başlamadan önce şunlara sahip olduğunuzdan emin olun:
Güvenilir bir sertifika yetkilisi (CA) tarafından verilen bir SSL sertifikası. Sertifikanın süresi dolmak üzereyse veya zaten dolmuşsa öncelikle yenileyin.
-
Güvenli hale getirmek istediğiniz tüm alan adlarıyla eşleşen bir sertifika: Alan adlarını eklemek veya değiştirmek için ticari bir sertifika satın alın veya alan adlarını ekleyip değiştirin.
Tam eşleşen alan adı: Yalnızca belirtilen alan adı için geçerlidir. Örneğin,
example.comyalnızcaexample.comadresini korur vewww.example.comyalnızcawww.example.comadresini korur.Joker karakterli alan adı: Yalnızca birinci düzey alt alan adları için geçerlidir. Örneğin,
*.example.comwww.example.comvea.example.comadreslerini kapsar ancak kök alan adıexample.comveyaa.b.example.comgibi çok düzeyli alt alan adlarını kapsamaz.
Çok düzeyli bir alt alan adını güvence altına almak için Bound Domains alanında ya tam alt alan adı (örneğin,
a.b.example.com) ya da eşleşen bir joker karakterli alan adı (örneğin,*.b.example.com) yer almalıdır. Sunucuda
roothesabı veyasudoayrıcalıklarına sahip bir hesap.Alan adı için sunucunun genel IP adresine çözümlenen bir DNS kaydı.
1. Adım: Sertifika dosyalarını hazırlama
SSL Certificates sayfasına gidin. Hedef sertifikanın Actions sütununda Download Certificate seçeneğine tıklayın. Download sekmesinde Server Type olarak Tomcat seçeneğini belirleyin ve paketi indirin.
-
İndirilen paketi ayıklayın. Paket bir sertifika dosyası (
.pfxveya.jks) ve bir parola dosyası (.txt) içerir.Ortamınıza uygun sertifika biçimini seçin: - JKS (Java KeyStore) : Java'ya özel bir anahtar deposu biçimidir. Araçlarınız ve betikleriniz bunu zaten destekliyorsa JKS'yi seçin. - PFX/PKCS#12 : Java ve diğer platformlar tarafından desteklenen evrensel bir biçimdir. Farklı teknoloji yığınları arasında veya Java olmayan sistemlerle entegrasyon sağlamak için PFX'i seçin.
-
Sertifika dosyasını (
.pfxveya.jks) ve parola dosyasını (.txt) sunucuya yükleyin. Bunları/etc/ssl/cert/gibi güvenli bir dizinde saklayın. Dosyaları aktarmak için PuTTY, Xshell veya WinSCP gibi bir uzaktan oturum açma aracının dosya yükleme özelliğini kullanın. Bir Alibaba Cloud Elastic Compute Service (ECS) örneği kullanıyorsanız talimatlar için Dosya yükleme veya indirme bölümüne bakın.ÖnemliYüklemeden sonra sertifika dosyalarına erişimi kısıtlayın. Bunları yalnızca Tomcat kullanıcısının okumasına izin verin:
sudo chown tomcat:tomcat /etc/ssl/cert/domain_name.* sudo chmod 400 /etc/ssl/cert/domain_name.*
2. Adım: 443 numaralı bağlantı noktasını açma
Tomcat'in iki düzeyde 443 numaralı bağlantı noktasının açık olması gerekir: cloud güvenlik grubu ve işletim sistemi güvenlik duvarı.
Güvenlik grubunda 443 numaralı bağlantı noktasını açma
Sunucunuz Alibaba Cloud ECS üzerinde çalışıyorsa TCP 443 numaralı bağlantı noktasına izin vermek için gelen bir kural ekleyin:
Elastic Compute Service (ECS) instances adresine gidin ve hedef örnek adına tıklayın.
-
Security Group Details bölümünde aşağıdaki ayarlara sahip bir güvenlik grubu kuralı ekleyin ve kaydedin: Diğer cloud platformları için ilgili belgelere bakın.
Field Value Action Allow Protocol Custom TCP Destination (Current Instance) HTTPS (443) Source 0.0.0.0/0 (anywhere)
İşletim sistemi güvenlik duvarında 443 numaralı bağlantı noktasını açma
Öncelikle 443 numaralı bağlantı noktasının zaten erişilebilir olup olmadığını kontrol edin. Linux dağıtımınız için aşağıdaki komutu çalıştırın:
RHEL/CentOS
command -v nc > /dev/null 2>&1 || sudo yum install -y nc
# Replace <your_server_public_ip> with your server's public IP address.
sudo ss -tlnp | grep -q ':443 ' || sudo nc -l 443 & sleep 1; nc -w 3 -vz <your_server_public_ip> 443
Çıktı Ncat: Connected to <your_server_public_ip>:443 içeriyorsa 443 numaralı bağlantı noktası açıktır ve başka bir işlem yapmanız gerekmez.
Debian/Ubuntu
command -v nc > /dev/null 2>&1 || sudo apt-get install -y netcat
# Replace <your_server_public_ip> with your server's public IP address.
sudo ss -tlnp | grep -q ':443 ' || sudo nc -l -p 443 & sleep 1; nc -w 3 -vz <your_server_public_ip> 443
Çıktı Connection to <your_server_public_ip> port [tcp/https] succeeded! veya [<your_server_public_ip>] 443 (https) open içeriyorsa 443 numaralı bağlantı noktası açıktır ve başka bir işlem yapmanız gerekmez.
443 numaralı bağlantı noktası açık değilse etkin güvenlik duvarını belirleyin ve bağlantı noktasını açın:
if command -v systemctl >/dev/null 2>&1 && systemctl is-active --quiet firewalld; then
echo "firewalld"
elif command -v ufw >/dev/null 2>&1 && sudo ufw status | grep -qw active; then
echo "ufw"
elif command -v nft >/dev/null 2>&1 && sudo nft list ruleset 2>/dev/null | grep -q 'table'; then
echo "nftables"
elif command -v systemctl >/dev/null 2>&1 && systemctl is-active --quiet iptables; then
echo "iptables"
elif command -v iptables >/dev/null 2>&1 && sudo iptables -L 2>/dev/null | grep -qE 'REJECT|DROP|ACCEPT'; then
echo "iptables"
else
echo "none"
fi
Çıktı none ise hiçbir güvenlik duvarı etkin değildir. Aksi takdirde güvenlik duvarınız için ilgili komutu çalıştırın:
firewalld
sudo firewall-cmd --permanent --add-port=443/tcp && sudo firewall-cmd --reload
ufw
sudo ufw allow 443/tcp
nftables
sudo nft add table inet filter 2>/dev/null
sudo nft add chain inet filter input '{ type filter hook input priority 0; }' 2>/dev/null
sudo nft add rule inet filter input tcp dport 443 counter accept 2>/dev/null
iptables
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables kurallarını yeniden başlatmalarda kalıcı hale getirmek için:
-
RHEL/CentOS:
sudo yum install -y iptables-services sudo service iptables save -
Debian/Ubuntu:
sudo apt-get install -y iptables-persistent sudo iptables-save | sudo tee /etc/iptables/rules.v4 >/dev/null
3. Adım: Tomcat'i yapılandırma
Yapılandırma sözdizimi Tomcat sürümleri arasında hafif farklılık gösterir. Sürümünüzle eşleşen bölüme uyun.
Tomcat 9
-
Tomcat kök dizininden
server.xmldosyasını açın:sudo vim ./conf/server.xml -
HTTP yönlendirme bağlayıcısını yapılandırın. Mevcut HTTP bağlayıcısını trafiği 443 numaralı bağlantı noktasına yönlendirecek şekilde güncelleyin:
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" maxParameterCount="1000" /> -
SSL bağlayıcısını ekleyin. Sertifika biçiminize uygun bloğu seçin:
PFX format
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" maxParameterCount="1000" > <SSLHostConfig> <Certificate certificateKeystoreFile="/etc/ssl/cert/domain_name.pfx" certificateKeystorePassword="<password-from-pfx-password.txt>" type="RSA" /> </SSLHostConfig> </Connector>JKS format
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" maxParameterCount="1000" > <SSLHostConfig> <Certificate certificateKeystoreFile="/etc/ssl/cert/domain_name.jks" certificateKeystorePassword="<password-from-jks-password.txt>" type="RSA" /> </SSLHostConfig> </Connector>certificateKeystoreFileyolunu sertifika dosyanızın gerçek yoluyla değiştirin vecertificateKeystorePassworddeğerini ilgili parola dosyasının içeriğiyle değiştirin. -
AJP bağlayıcısının
redirectPortdeğerini 443 olarak güncelleyin:<Connector protocol="AJP/1.3" address="::1" port="8009" redirectPort="443" maxParameterCount="1000" />
Tomcat 8.5
Tomcat 8.5, JSSE uygulamasını manuel olarak belirtmenizi gerektirir. Bağlayıcı sözdizimi yukarıdaki Tomcat 9 ile aynıdır. SSL bağlayıcısını Tomcat 9 bölümündeki PFX veya JKS bloğunu kullanarak ekleyin.
Tomcat 7
Tomcat 7, iç içe geçmiş SSLHostConfig yerine Connector öğesinde satır içi SSL öznitelikleri kullanır.
PFX format
<Connector port="443"
protocol="HTTP/1.1"
SSLEnabled="true"
scheme="https"
secure="true"
keystoreFile="/etc/ssl/cert/domain_name.pfx"
keystoreType="PKCS12"
keystorePass="<password-from-pfx-password.txt>"
clientAuth="false"
SSLProtocol="TLSv1.1+TLSv1.2+TLSv1.3"
ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256"/>
JKS format
<Connector port="443"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectport="8443"
maxParameterCount="1000"
SSLEnabled="true"
scheme="https"
secure="true"
keystoreFile="/etc/ssl/cert/domain_name.jks"
keystoreType="JKS"
keystorePass="<password-from-jks-password.txt>"
clientAuth="false"
SSLProtocol="TLSv1.1+TLSv1.2+TLSv1.3"
ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256"/>
(İsteğe bağlı) HTTP'den HTTPS'ye zorunlu yönlendirme
Tüm HTTP isteklerini otomatik olarak HTTPS'ye yönlendirmek için conf/web.xml dosyasının en altına, kapanış </web-app> etiketinden hemen önce aşağıdaki bloğu ekleyin:
<security-constraint>
<web-resource-collection>
<web-resource-name>SSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
Tomcat'i doğrulama ve yeniden başlatma
-
Yapılandırmayı doğrulayın. Tomcat'in
bindizininden şu komutu çalıştırın:./configtest.shÇıktı
Configuration file test successfulise yapılandırma geçerlidir. Hatalar görünürse hata mesajlarına göre yapılandırmayı düzeltin ve doğrulamayı yeniden çalıştırın. -
Değişiklikleri uygulamak için Tomcat'i yeniden başlatın:
sudo ./shutdown.sh sudo ./startup.sh
4. Adım: Dağıtımı doğrulama
Bir tarayıcı açın ve https://yourdomain adresine gidin (yourdomain yerine gerçek alan adınızı yazın).
Adres çubuğundaki kilit simgesi sertifikanın doğru yüklendiğini onaylar.

Chrome, 117. sürümden itibaren
simgesini yeni bir
simgesiyle değiştirmiştir. Sertifika ayrıntılarını görüntülemek için bu simgeye tıklayın.
Kilit simgesi görünmüyorsa veya erişim hataları görürseniz tarayıcı önbelleğini temizleyin veya gizli modda tekrar deneyin. Sorun devam ederse SSS bölümüne bakın.
Canlıya alma
Üretim ortamına dağıtım yaparken aşağıdaki uygulamaları takip edin:
-
Tomcat'i root olmayan bir kullanıcı olarak çalıştırın. Tomcat için özel, düşük ayrıcalıklı bir sistem hesabı oluşturun ve asla root olarak çalıştırmayın.
Bunun yerine SSL sonlandırmasını ağ geçidi katmanında yapmayı düşünün — sertifikayı bir Server Load Balancer (SLB) veya Nginx gibi bir ters proxy üzerine dağıtın. Ağ geçidi HTTPS sonlandırmasını yönetir ve arka uca düz HTTP iletir; bu durum birden çok sunucuda sertifika yönetimini basitleştirir.
Kimlik bilgilerini yapılandırma dosyalarının dışında tutun. Anahtar deposu parolasını
server.xmliçinde sabit kodlamak yerine çalışma zamanında enjekte etmek için ortam değişkenleri, bir secrets manager veya bir cloud anahtar yönetimi hizmeti kullanın.HTTP'den HTTPS'ye yönlendirmeyi zorunlu kılın. Adam ortası saldırılarını önlemek için tüm HTTP trafiğini HTTPS'ye yönlendirin (bkz. 3. Adım içindeki isteğe bağlı adım).
Eski TLS protokollerini devre dışı bırakın. Tomcat yapılandırmanızda SSLv3, TLS 1.0 ve TLS 1.1'i devre dışı bırakın. Yalnızca TLS 1.2 ve TLS 1.3'ü etkinleştirin.
Sertifika sona erme tarihini izleyin. Dağıtımdan sonra Sertifika Yönetimi hizmetinde alan adı izlemeyi etkinleştirin. Alibaba Cloud sertifika geçerliliğini kontrol eder ve süre dolmadan önce yenileme hatırlatmaları gönderir. Talimatlar için bkz. Genel alan adı izlemeyi satın alma ve etkinleştirme.
SSS
Yükleme veya sertifika güncellemesinden sonra HTTPS erişilemiyor
Aşağıdakileri sırayla kontrol edin:
443 numaralı bağlantı noktası engellenmiş. Hem güvenlik grubunun hem de işletim sistemi güvenlik duvarının 443 numaralı bağlantı noktasında gelen TCP trafiğine izin verdiğini doğrulayın. Bkz. 2. Adım.
Alan adı uyumsuzluğu. Eriştiğiniz alan adının sertifikanın Bound Domains alanında listelendiğini onaylayın. Alan adı eşleştirme kuralları için Önkoşullar bölümüne bakın.
Tomcat yeniden başlatılmamış. Yeni yapılandırma yalnızca Tomcat yeniden başlatıldıktan sonra etkili olur. Bkz. 3. Adım içindeki doğrulama ve yeniden başlatma adımları.
Yanlış sertifika yolu veya dosyası.
server.xmliçindekicertificateKeystoreFile(veyakeystoreFile) öğesinin doğru ve güncel sertifika dosyasına işaret ettiğini kontrol edin.Yukarı akış hizmetlerinde sertifika eksik. Alan adınız bir Content Delivery Network (CDN), Server Load Balancer (SLB) veya Web Application Firewall (WAF) üzerinden geçiyorsa sertifikanın bu hizmetlere de yüklenmesi gerekir. Bkz. Trafik birden çok Alibaba Cloud hizmetinden geçtiğinde sertifika dağıtım konumları.
Eksik çok sunuculu dağıtım. Alan adının DNS'i birden çok sunucuya çözümleniyorsa sertifikayı hepsine yükleyin.
Daha derinlemesine sorun giderme için bkz. Tarayıcı hata mesajlarına göre sertifika dağıtım sorunlarını çözme ve SSL sertifikası dağıtım sorun giderme kılavuzu.
Tomcat başlatılamıyor ve günlükte "Keystore was tampered with, or password was incorrect" hatası görülüyor
Bu durum neredeyse her zaman server.xml içindeki parolanın anahtar deposu dosyasıyla eşleşmediği anlamına gelir. Düzeltmek için:
Sertifika paketindeki parola dosyasını (
.txt) açın ve içeriğini sondaki boşluklar veya yeni satırlar olmadan tam olarak kopyalayın.server.xmliçindekicertificateKeystorePassword(veyakeystorePass) özniteliğini bu değerle güncelleyin.certificateKeystoreFile(veyakeystoreFile) öğesinin doğru dosya yoluna işaret ettiğini onaylayın.Tomcat kullanıcısının sertifika dosyasında okuma iznine sahip olduğunu onaylayın.
Sunucuya erişirken Connection was reset / Connection refused hatası alınıyor
Bu bir ağ bağlantısı sorunudur, sertifika sorunu değildir. Aşağıdakileri kontrol edin:
Hem güvenlik grubunun hem de işletim sistemi güvenlik duvarının 443 numaralı bağlantı noktasında (veya
server.xmliçinde yapılandırılan bağlantı noktasında) gelen trafiğe izin verdiğini onaylayın. Bkz. 2. Adım.Tomcat'in çalıştığını doğrulayın:
ps -ef | grep tomcatserver.xmlSSL bağlayıcısındakiportözniteliğinin eriştiğiniz bağlantı noktasıyla eşleştiğini onaylayın.
Tomcat'te SSL sertifikası nasıl güncellenir veya değiştirilir
Mevcut dosyaları yedekleyin. Sunucudaki mevcut sertifika dosyasının (
.pfxveya.jks) ve parola dosyasının (.txt) kopyalarını kaydedin.Yeni sertifikayı indirin. Sertifika Yönetimi konsolundan yeni sertifika paketini alın.
Dosyaları değiştirin. Yeni sertifika ve parola dosyalarını sunucudaki aynı yola yükleyerek eskilerinin üzerine yazın. Dosya yolu ve adı
server.xmliçinde yapılandırılanlarla tam olarak eşleşmelidir.Tomcat'i yeniden başlatın. Yeni sertifikayı uygulamak için Tomcat'in
bindizinindensudo ./shutdown.shvesudo ./startup.shkomutlarını çalıştırın.