全部产品
Search
文档中心

Certificate Management Service:Memasang Sertifikat SSL pada server Tomcat (Linux)

更新时间:Oct 25, 2025

Topik ini menjelaskan cara memasang sertifikat SSL dalam format Java KeyStore (JKS) atau PFX/PKCS#12 pada server Tomcat. Ini mencakup seluruh proses, termasuk mengunduh file sertifikat, mengedit konfigurasi Tomcat untuk mengaktifkan SSL, dan memverifikasi instalasi akhir.

Penting

Jika Anda memiliki pertanyaan, hubungi manajer akun Anda untuk bantuan.

Catatan penggunaan

Sebelum memulai, pastikan Anda memenuhi persyaratan berikut:

  • Status Sertifikat: Sertifikat SSL Anda diterbitkan oleh otoritas sertifikat tepercaya (CA). Jika sertifikat About to Expire atau Expired, terlebih dahulu perpanjang sertifikat SSL.

  • Pencocokan Nama Domain: Pastikan sertifikat cocok dengan semua nama domain yang ingin Anda amankan. Untuk menambah atau memodifikasi domain, lihat Tambah dan Ganti Nama Domain.

    • Nama domain eksak: Hanya berlaku untuk domain tertentu.

      • example.com hanya melindungi example.com.

      • www.example.com hanya melindungi www.example.com.

    • Nama domain wildcard: Hanya berlaku untuk subdomain tingkat pertama.

      • *.example.com berlaku untuk subdomain tingkat pertama seperti www.example.com dan a.example.com.

      • *.example.com tidak melindungi domain root example.com atau subdomain multi-level seperti a.b.example.com.

    Catatan

    Untuk melindungi subdomain multi-level, bidang Bound Domains harus berisi domain eksak, seperti a.b.example.com, atau domain wildcard yang sesuai, seperti *.b.example.com.

  • Izin Server: Anda memerlukan akun root atau akun dengan hak istimewa sudo.

  • Resolusi DNS: Rekaman DNS domain dikonfigurasi dan diarahkan ke alamat IP publik server.

Prosedur

Langkah 1: Persiapkan file sertifikat

  1. Kunjungi halaman Sertifikat SSL. Di kolom Actions dari sertifikat target, klik Download Certificate. Pada tab Download, unduh sertifikat untuk Server Type Tomcat.

  2. Ekstrak paket sertifikat yang telah diunduh. Paket tersebut mencakup file sertifikat (.pfx atau .jks) dan file kata sandi (.txt).

    Catatan

    Pilih format sertifikat sesuai dengan kebutuhan, sumber daya, dan kompatibilitas sistem Anda.

    • JKS merupakan format keystore khusus untuk Java yang paling sesuai digunakan dalam lingkungan Java. Jika alat dan skrip Anda mendukung JKS, pilihlah format ini.

    • PFX adalah format universal yang didukung luas oleh Java dan platform lainnya. Untuk integrasi lintas tumpukan teknologi atau dengan sistem non-Java, pilih format PFX.

  3. Unggah file sertifikat yang diekstrak (.pfx atau .jks) dan file kata sandi (.txt) ke server. Simpan mereka di direktori eksternal yang aman, seperti direktori /etc/ssl/cert.

    Penting

    Untuk memastikan keamanan kunci, atur izin file yang ketat setelah unggahan. Izinkan hanya pengguna Tomcat untuk membaca file tersebut.

    Anda dapat menggunakan fitur unggah file lokal dari alat login jarak jauh, seperti PuTTY, XShell, atau WinSCP, untuk mengunggah file. Jika Anda menggunakan instance Elastic Compute Service, untuk informasi lebih lanjut tentang cara mengunggah file, lihat Unggah atau Unduh File.

Langkah 2: Konfigurasikan sistem dan lingkungan jaringan

Pastikan grup keamanan dan firewall sistem Anda mengizinkan lalu lintas masuk pada port HTTPS (443).

  1. Jalankan perintah berikut di terminal server untuk memeriksa apakah port 443 terbuka:

    RHEL/CentOS

    command -v nc > /dev/null 2>&1 || sudo yum install -y nc
    # Ganti <your_server_public_ip> dengan alamat IP publik server Anda yang sebenarnya.
    sudo ss -tlnp | grep -q ':443 ' || sudo nc -l 443 & sleep 1; nc -w 3 -vz <your_server_public_ip> 443

    Jika keluarannya adalah Ncat: Connected to <Alamat IP publik server saat ini>:443, port 443 terbuka. Jika tidak, buka port 443 di grup keamanan dan firewall.

    Debian/Ubuntu

    command -v nc > /dev/null 2>&1 || sudo apt-get install -y netcat
    # Ganti <your_server_public_ip> dengan alamat IP publik server Anda yang sebenarnya.
    sudo ss -tlnp | grep -q ':443 ' || sudo nc -l -p 443 & sleep 1; nc -w 3 -vz <your_server_public_ip> 443

    Jika keluarannya adalah Connection to <alamat IP publik server saat ini> port [tcp/https] succeeded! atau [<alamat IP publik server saat ini>] 443 (https) open, port 443 terbuka. Jika tidak, buka port 443 di grup keamanan dan firewall.

  2. Buka port 443 di konfigurasi grup keamanan Anda.

    Penting

    Jika server Anda ditempatkan di platform cloud, pastikan grup keamanannya mengizinkan lalu lintas masuk pada port TCP 443. Jika tidak, layanan akan tidak dapat diakses. Langkah-langkah berikut menggunakan Alibaba Cloud Elastic Compute Service (ECS) sebagai contoh. Untuk platform cloud lainnya, lihat dokumentasi resmi mereka.

    Kunjungi halaman instance Elastic Compute Service, klik nama instance target untuk masuk ke halaman detail instance. Lihat Tambah Aturan Grup Keamanan untuk menambahkan aturan baru di Security Group dengan Action disetel ke Allow, Protocol Type ke Custom TCP, Destination Port Range ke HTTPS(443), dan Authorization Object ke All IPv4 Addresses.

  3. Buka port 443 di firewall Anda.

    Jalankan perintah berikut untuk mengidentifikasi layanan firewall aktif di sistem Anda:

    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

    Jika keluarannya adalah none, tidak ada tindakan lebih lanjut yang diperlukan. Jika tidak, jalankan perintah yang sesuai berdasarkan keluaran (firewalld, ufw, nftables, atau iptables) untuk membuka port 443:

    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

    Untuk memastikan aturan iptables bertahan setelah reboot sistem, jalankan perintah berikut:

    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

Langkah 3: Pasang sertifikat pada server Tomcat

  1. Pergi ke direktori root instalasi Tomcat Anda dan jalankan perintah berikut untuk membuka file server.xml.

    sudo vim ./conf/server.xml 
  2. Konfigurasikan file server.xml berdasarkan contoh dan komentar berikut.

    Penting

    Untuk menghindari kesalahan saat memulai Tomcat, hapus komentar saat Anda menyalin kode.

    Sementara langkah-langkah untuk mengonfigurasi sertifikat SSL di Tomcat serupa di berbagai versi, ada perbedaan kecil karena variasi dalam versi Java yang didukung dan sintaks konfigurasi. Bagian ini memberikan instruksi spesifik untuk Tomcat 7, 8.5, dan 9.

    Tomcat 9

    Ikuti proses konfigurasi berikut untuk mengonfigurasi penerusan port, file sertifikat, dan pengaturan lainnya.

    • Konfigurasikan konektor redirect HTTP. Contohnya:

      <!-- Ubah port konektor menjadi 80 dan redirectPort menjadi 443, port SSL default, untuk meneruskan permintaan HTTP ke port 443. -->
      <Connector port="80" protocol="HTTP/1.1"
                 connectionTimeout="20000"
                 redirectPort="443"
                 maxParameterCount="1000"
                 />
    • Konfigurasikan konektor SSL. Contohnya:

      Format PFX

      <!-- Ubah port HTTPS default di Tomcat menjadi 443. Port 8443 tidak dapat diakses langsung melalui nama domain. Anda harus menambahkan nomor port setelah nama domain. -->
      <!-- Port 443 adalah port default untuk HTTPS dan dapat diakses langsung melalui nama domain tanpa menambahkan nomor port. -->
      <!-- Port konektor memiliki dua mode operasi: NIO dan APR. Pilih mode NIO.-->
      <Connector port="443"
                     protocol="org.apache.coyote.http11.Http11NioProtocol" 
                     maxThreads="150" 
                     SSLEnabled="true"
                     maxParameterCount="1000"
                     >
              <SSLHostConfig>
                      <!-- Ganti /etc/ssl/cert/domain_name.pfx dengan jalur aktual ke sertifikat Anda. Ganti kata sandi sertifikat dengan isi file pfx-password.txt. -->
                      <Certificate certificateKeystoreFile="/etc/ssl/cert/domain_name.pfx" 
                                   certificateKeystorePassword="Kata sandi sertifikat" 
                                   type="RSA" />
              </SSLHostConfig>
      </Connector>

      Format JKS

      <!-- Ubah port HTTPS default di Tomcat menjadi 443. Port 8443 tidak dapat diakses langsung melalui nama domain. Anda harus menambahkan nomor port setelah nama domain. -->
      <!-- Port 443 adalah port default untuk HTTPS dan dapat diakses langsung melalui nama domain tanpa menambahkan nomor port. -->
      <!-- Port Konektor memiliki dua mode operasi: NIO dan APR. Pilih mode NIO.-->
      <Connector port="443"
                     protocol="org.apache.coyote.http11.Http11NioProtocol" 
                     maxThreads="150" 
                     SSLEnabled="true"
                     maxParameterCount="1000"
                     >
              <SSLHostConfig>
                      <!-- Ganti /etc/ssl/cert/domain_name.jks dengan jalur aktual ke sertifikat Anda. Ganti kata sandi sertifikat dengan isi file jks-password.txt. -->
                      <Certificate certificateKeystoreFile="/etc/ssl/cert/domain_name.jks" 
                                   certificateKeystorePassword="Kata sandi sertifikat" 
                                   type="RSA" />
              </SSLHostConfig>
      </Connector>
    • Item konfigurasi 3:

      Contoh konfigurasi (hapus simbol komentar <!-- dan -->):

      <!-- Ubah redirectPort menjadi 443 untuk meneruskan permintaan HTTPS ke port 443. -->
      <Connector protocol="AJP/1.3"
                     address="::1"
                     port="8009"
                     redirectPort="443" 
                     maxParameterCount="1000"
                     />

    Tomcat 8.5

    Tentukan implementasi SSL secara manual (tentukan implementasi JSSE).

    Contoh konfigurasi (Hapus komentar dengan menghapus <!-- dan -->):

    Format PFX

    <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true"
               maxParameterCount="1000">
        <SSLHostConfig>
            <!-- Ganti /etc/ssl/cert/domain_name.pfx dengan jalur aktual ke sertifikat Anda. Ganti kata sandi sertifikat dengan isi file pfx-password.txt. -->
            <Certificate certificateKeystoreFile="/etc/ssl/cert/domain_name.pfx"
                         certificateKeystorePassword="Kata sandi sertifikat"
                         type="RSA"/>
        </SSLHostConfig>
    </Connector>

    Format JKS

    <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true"
               maxParameterCount="1000">
        <SSLHostConfig>
            <!-- Ganti /etc/ssl/cert/domain_name.jks dengan jalur aktual ke sertifikat Anda. Ganti kata sandi sertifikat dengan isi file jks-password.txt. -->
            <Certificate certificateKeystoreFile="/etc/ssl/cert/domain_name.jks"
                         certificateKeystorePassword="Kata sandi sertifikat"
                         type="RSA"/>
        </SSLHostConfig>
    </Connector>

    Tomcat 7

    Server Tomcat secara otomatis memilih implementasi SSL. Jika Anda tidak dapat menyelesaikan konfigurasi menggunakan metode ini, lingkungan Anda mungkin tidak mendukung implementasi SSL yang dipilih secara otomatis.

    Contoh konfigurasi:

    Format PFX

    <!-- #Ubah atribut port sesuai kebutuhan (port HTTPS default adalah 443). Jika Anda menggunakan nomor port yang berbeda, Anda harus mengakses situs web Anda menggunakan https://domain_name:port. 
    Ganti nilai keystoreFile dengan jalur aktual ke sertifikat Anda.
    Ganti nilai keystorePass dengan isi file pfx-password.txt.
    Untuk informasi tentang item konfigurasi lainnya, kunjungi situs web resmi Tomcat.-->
    <Connector port="443"
               protocol="HTTP/1.1"
               SSLEnabled="true"
               scheme="https"
               secure="true"
               keystoreFile="/etc/ssl/cert/domain_name.pfx"
               keystoreType="PKCS12"
               keystorePass="Kata sandi sertifikat"
               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"/>

    Format JKS

    <!-- #Ubah atribut port sesuai kebutuhan (port HTTPS default adalah 443). Jika Anda menggunakan nomor port yang berbeda, situs web Anda menggunakan https://domain_name:port. 
    Ganti nilai keystoreFile dengan jalur aktual ke sertifikat Anda.
    Ganti nilai keystorePass dengan isi file jks-password.txt.
    Untuk informasi tentang bidang lainnya, kunjungi situs web resmi Tomcat.-->
    <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="Kata sandi sertifikat"
               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"/>    
  3. Opsional: Di file /conf/web.xml, konfigurasikanpengalihan otomatis dari HTTP ke HTTPS.

    1. Pergi ke direktori root instalasi Tomcat Anda dan jalankan perintah berikut untuk membuka file web.xml.

      sudo vim ./conf/web.xml 
    2. Tambahkan konfigurasi berikut di bagian bawah file web.xml.

      <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>
  4. Pergi ke direktori bin instalasi Tomcat Anda dan jalankan perintah berikut untuk memvalidasi file konfigurasi. Jika keluarannya adalah Uji file konfigurasi berhasil, validasi telah berhasil. Jika tidak, modifikasi konfigurasi berdasarkan petunjuk hingga uji berhasil.

    ./configtest.sh
  5. Pergi ke direktori bin instalasi Tomcat Anda dan jalankan perintah berikut untuk menghentikan dan memulai ulang Tomcat.

    • Perintah henti:

      sudo ./shutdown.sh
    • Perintah mulai ulang:

      sudo ./startup.sh

Langkah 4: Verifikasi penerapan

  1. Akses domain Anda melalui HTTPS di browser web. Contohnya, https://yourdomain.com. Ganti yourdomain.com dengan domain Anda yang sebenarnya.

  2. Jika ikon gembok muncul di bilah alamat browser, sertifikat telah berhasil diterapkan. Jika terjadi kesalahan akses atau ikon gembok tidak muncul, bersihkan cache browser Anda atau coba lagi dalam mode penyamaran (privasi).

    image

    Mulai versi 117, ikon image di bilah alamat Chrome telah diganti dengan ikon baru image. Klik ikon ini untuk melihat informasi gembok.

Catatan

Jika masalah tetap ada, lihat bagian FAQ untuk pemecahan masalah.

Tayang

Saat menerapkan ke lingkungan produksi, ikuti praktik terbaik berikut untuk meningkatkan keamanan, stabilitas, dan kemudahan pemeliharaan:

  • Jalankan sebagai Pengguna Non-Administrator:

    Buat pengguna sistem khusus dengan hak istimewa rendah untuk aplikasi. Jangan pernah menjalankan aplikasi dengan akun yang memiliki hak administrator.

    Catatan

    Pendekatan yang direkomendasikan adalah mengonfigurasi SSL di lapisan gateway. Ini melibatkan pemasangan sertifikat pada Server Load Balancer (SLB) atau reverse proxy seperti Nginx. Gateway mengakhiri lalu lintas HTTPS dan meneruskan lalu lintas HTTP yang telah didekripsi ke aplikasi backend.

  • Kelola Kredensial secara Eksternal:

    Jangan hard-code kata sandi atau informasi sensitif lainnya dalam kode atau file konfigurasi Anda. Gunakan variabel lingkungan, Vault, atau layanan manajemen kunci penyedia cloud untuk menyuntikkan kredensial.

  • Paksakan Pengalihan HTTP ke HTTPS:

    Alihkan semua lalu lintas HTTP ke HTTPS untuk mencegah serangan man-in-the-middle.

  • Konfigurasikan Protokol TLS Modern:

    Nonaktifkan protokol lama dan tidak aman (seperti SSLv3, TLSv1.0, dan TLSv1.1) dalam konfigurasi server Anda. Aktifkan hanya TLSv1.2 dan TLSv1.3.

  • Monitor Sertifikat dan Otomatiskan Pembaruan:

    Setelah menerapkan sertifikat, aktifkan pemantauan domain. Alibaba Cloud secara otomatis memeriksa periode validitas sertifikat dan mengirimkan pengingat pembaruan sebelum kedaluwarsa untuk membantu Anda menghindari gangguan layanan. Untuk informasi lebih lanjut, lihat Pembelian dan Aktivasi Pemantauan Nama Domain Publik.

FAQ

Mengapa sertifikat saya tidak bekerja atau HTTPS tidak dapat diakses setelah instalasi atau pembaruan?

Masalah ini sering disebabkan oleh salah satu masalah konfigurasi berikut. Periksa mereka secara berurutan:

  • Port 443 Diblokir: Grup keamanan atau firewall server tidak memiliki port 443 terbuka. Lihat Konfigurasikan Sistem dan Lingkungan Jaringan.

  • Ketidakcocokan Domain: Domain yang Anda akses tidak terdaftar dalam Bound Domains sertifikat. Lihat Kecocokan Nama Domain.

  • Tomcat Tidak Dimulai Ulang: Layanan Tomcat tidak dimulai ulang setelah file konfigurasi dimodifikasi. Untuk instruksi, lihat Hentikan dan Mulai Ulang Layanan Tomcat.

  • Konfigurasi Sertifikat Salah: File sertifikat tidak diganti dengan benar, atau jalur sertifikat tidak ditentukan dengan benar dalam konfigurasi Tomcat. Periksa file konfigurasi Tomcat dan file sertifikat sudah mutakhir dan valid.

  • Sertifikat Hilang di Layanan Lain: Jika domain Anda menggunakan layanan seperti Content Delivery Network (CDN), Server Load Balancer (SLB), atau Web Application Firewall (WAF), sertifikat juga harus dipasang di layanan tersebut. Lihat Lokasi Penerapan Sertifikat Saat Lalu Lintas Melewati Beberapa Layanan Alibaba Cloud untuk menyelesaikan pengaturan.

  • Penerapan Tidak Lengkap di Beberapa Server: Jika DNS domain Anda diarahkan ke beberapa server, sertifikat harus dipasang di semuanya.

Bagaimana cara yang benar untuk memperbarui atau mengganti sertifikat SSL di Tomcat?

  1. Cadangkan File Lama: Cadangkan file sertifikat yang ada (.pfx atau .jks, dan file .txt) di server.

  2. Dapatkan File Baru: Unduh file sertifikat dan kunci privat baru dari Konsol Layanan Manajemen Sertifikat Anda.

  3. Ganti File: Unggah file baru ke server Anda, menimpa yang lama. Pastikan file baru memiliki jalur dan nama file yang sama persis seperti yang ditentukan dalam konfigurasi Tomcat Anda.

  4. Mulai Ulang Tomcat: Mulai ulang layanan Tomcat untuk menerapkan sertifikat baru.

Tomcat gagal memulai, dan log menunjukkan kesalahan "Keystore was tampered with, or password was incorrect"

Ini adalah masalah umum. Lihat bagian Pasang Sertifikat pada Server Tomcat dan pecahkan masalah dengan langkah-langkah berikut:

  1. Verifikasi bahwa kata sandi sertifikat yang dikonfigurasi di server.xml identik dengan kata sandi file keystore itu sendiri. Pastikan tidak ada spasi tambahan atau karakter baris baru.

  2. Verifikasi bahwa jalur file untuk certificateKeystoreFile (atau keystoreFile) sudah benar.

  3. Verifikasi bahwa pengguna Tomcat memiliki izin baca untuk file sertifikat.

Kesalahan: "Connection was reset" atau "Connection Refused" saat mengakses server

Ini biasanya merupakan masalah konektivitas jaringan. Lihat bagian Konfigurasikan Sistem dan Lingkungan Jaringan dan pecahkan masalah dengan langkah-langkah berikut:

  1. Verifikasi bahwa baik grup keamanan server maupun firewall sistem mengizinkan lalu lintas pada port HTTPS (443 atau port lain yang dikonfigurasi).

  2. Verifikasi bahwa layanan Tomcat sedang berjalan. Anda dapat memeriksanya menggunakan perintah ps -ef | grep tomcat.

  3. Verifikasi bahwa port yang dikonfigurasi di server.xml sesuai dengan port yang diakses.