Dalam tutorial ini, Anda akan mempelajari cara menginstal sertifikat SSL di Apache Tomcat menggunakan utilitas Java keytool, kemudian mengonfigurasi konektor HTTPS di server.xml. Jika Anda belum membuat CSR, bagian pertama menunjukkan caranya.
Kami juga telah merekam video yang memandu Anda melalui seluruh proses. Anda dapat menonton videonya, membaca instruksinya, atau melakukan keduanya. Anda dapat menonton videonya di bawah ini.
Membuat kode CSR untuk Tomcat
CSR adalah singkatan dari Certificate Signing Request, sebuah blok teks yang berisi detail terkini tentang domain dan organisasi Anda. Setiap pembeli sertifikat SSL komersial harus mengirimkan CSR ke Certificate Authority (penyedia SSL) untuk lolos validasi dan menerima sertifikat. Jika CSR mengandung detail yang salah, CA tidak akan menandatanganinya.
Di Tomcat, CSR dibuat dengan keytool dari Java keystore, dan keystore yang sama tersebut menyimpan private key yang akan Anda gunakan kembali saat instalasi. Anda memiliki dua opsi:
- Gunakan CSR Generator kami untuk membuat CSR secara otomatis.
- Ikuti tutorial langkah demi langkah kami tentang cara membuat CSR di Tomcat.
Penting: catat baik-baik file keystore dan alias yang Anda gunakan saat membuat CSR. Anda akan mengimpor kembali sertifikat yang sudah ditandatangani ke alias yang sama itu nantinya, karena di sanalah private key yang sesuai berada.
Setelah Certificate Authority memvalidasi permintaan Anda dan mengirimkan file SSL, lanjutkan dengan instalasi di bawah ini.
Menginstal sertifikat SSL di Tomcat
Instalasi Tomcat memiliki dua tahap: pertama, Anda mengimpor rantai sertifikat dan sertifikat yang sudah ditandatangani ke dalam keystore yang sudah memuat private key Anda, lalu Anda mengonfigurasi konektor HTTPS di server.xml untuk menggunakan keystore tersebut.
Langkah 1: Siapkan file sertifikat SSL Anda
Certificate Authority Anda akan mengirimkan file tersebut melalui email ke alamat yang Anda berikan, biasanya dalam bentuk arsip ZIP. Ekstrak arsip tersebut. Bergantung pada CA-nya, file akan tiba dalam salah satu dari dua format berikut:
- PKCS#7: satu file .p7b (atau .cer) yang sudah menggabungkan sertifikat Anda bersama sertifikat root dan intermediate.
- PEM: file terpisah, biasanya sebuah .crt untuk sertifikat server Anda ditambah file root.crt dan intermediate.crt tersendiri.
Unggah file yang sudah diekstrak ke server, ke direktori yang sama dengan keystore yang Anda gunakan untuk membuat CSR (disebut di bawah ini sebagai example.jks). Kenali format Anda dan ikuti instruksi yang sesuai.
Langkah 2: Mengimpor sertifikat ke keystore Anda
Format PKCS#7. Karena file .p7b sudah berisi seluruh rantai, satu perintah saja dapat mengimpor semuanya sekaligus ke alias private key yang sudah ada:
keytool -import -trustcacerts -alias ssldragon -keystore example.jks -file example.p7b
Ganti ssldragon dengan alias Anda sendiri dan example dengan nama file Anda. Alias tersebut harus alias yang sudah memuat private key Anda (alias dari langkah pembuatan CSR). Ketika Anda melihat pesan Certificate reply was installed in keystore, artinya impor berhasil. Verifikasi isi keystore dengan:
keytool -list -v -keystore example.jks
Cari entri yang tipenya PrivateKeyEntry dengan panjang rantai sertifikat lebih dari 1. Ini mengonfirmasi bahwa sertifikat yang sudah ditandatangani kini terhubung dengan private key Anda.
Format PEM. Impor sertifikat secara terpisah, sesuai urutan rantai: root terlebih dahulu, lalu intermediate mana pun, dan sertifikat domain Anda terakhir. Mengimpor rantai terlebih dahulu memungkinkan keytool membangun jalur trust yang lengkap sebelum menghubungkan reply ke key Anda. Impor sertifikat root:
keytool -import -trustcacerts -alias root -keystore example.jks -file root.crt
Kemudian impor sertifikat intermediate:
keytool -import -trustcacerts -alias intermediate -keystore example.jks -file intermediate.crt
Jika CA Anda menyediakan beberapa sertifikat intermediate, impor masing-masing dengan alias trusted tersendiri, mengikuti urutan penandatanganan di antara mereka (dari root menuju sertifikat domain Anda). Misalnya, sertifikat Sectigo PositiveSSL dari Sectigo disertai lebih dari satu intermediate, sehingga Anda perlu mengimpornya secara berurutan sebelum sertifikat domain.
Terakhir, impor sertifikat utama Anda (yang diterbitkan untuk domain Anda) ke dalam alias private key yang sudah ada, yaitu alias yang sama yang Anda gunakan saat membuat CSR:
keytool -import -trustcacerts -alias ssldragon -keystore example.jks -file example.crt
Di sini, ssldragon harus merupakan alias private key Anda yang sudah ada. Karena alias tersebut sudah memiliki key, keytool memperlakukan impor ini sebagai certificate reply dan mengikat sertifikat yang sudah ditandatangani ke key tersebut. Langkah inilah yang membuat HTTPS berfungsi.
Kesalahan kritis yang harus dihindari: jangan mengimpor sertifikat yang sudah ditandatangani ke alias baru. Jika alias tersebut tidak memiliki private key yang sudah ada, keytool akan menyimpan sertifikat sebagai entri trusted mandiri tanpa key yang terhubung, dan TLS akan gagal. Jika Anda tidak yakin alias mana yang menyimpan key Anda, jalankan keytool -list -v -keystore example.jks dan gunakan alias yang tipenya PrivateKeyEntry.
Langkah 3: Mengonfigurasi konektor HTTPS di server.xml
Setelah sertifikat berada di keystore Anda, arahkan konektor HTTPS Tomcat ke sana. Konektor didefinisikan di server.xml, yang terletak di folder conf pada instalasi Tomcat Anda (misalnya $CATALINA_HOME/conf/server.xml). Buka file tersebut dengan editor teks.
Pada versi Tomcat saat ini (9, 10, dan 11), bentuk yang direkomendasikan menyarangkan elemen SSLHostConfig, yang pada gilirannya memuat elemen Certificate yang merujuk pada keystore Anda. Tambahkan atau perbarui konektor aman agar terlihat seperti ini:
<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: jalur lengkap ke file keystore Anda.
- certificateKeystorePassword: kata sandi keystore.
- certificateKeystoreType: JKS untuk keystore .jks, atau PKCS12 untuk keystore .p12 / .pfx.
- certificateKeyAlias: alias yang menyimpan private key dan sertifikat yang sudah ditandatangani (di sini, ssldragon). Ini memberi tahu Tomcat entri mana yang harus dilayani ketika keystore memuat lebih dari satu entri.
Catatan: port 443 adalah port HTTPS standar yang digunakan di atas; contoh milik Tomcat sendiri secara default menggunakan 8443, jadi gunakan port yang sesuai dengan lingkungan Anda. Jika ini adalah pengaturan HTTPS pertama Anda, konektor aman mungkin sudah dikomentari (di-comment out) di server.xml. Hapus tanda comment di sekitarnya agar konektor aktif, dan pastikan tidak ada konektor lain yang sudah terikat pada port yang sama.
Bentuk lama (Tomcat versi lebih lama). Panduan lama menempatkan detail keystore langsung pada konektor sebagai atribut keystoreFile dan keystorePass. Gaya tersebut telah digantikan oleh elemen SSLHostConfig dan Certificate yang ditunjukkan di atas, yang merupakan bentuk yang harus digunakan pada rilis Tomcat yang didukung saat ini.
Langkah 4: Simpan server.xml dan mulai ulang Tomcat
Simpan server.xml, lalu mulai ulang Tomcat agar konfigurasi dimuat ulang. Di Linux, gunakan skrip yang sudah tersedia:
$CATALINA_HOME/bin/shutdown.sh
$CATALINA_HOME/bin/startup.sh
Jika Tomcat berjalan sebagai layanan (service), mulai ulang melalui pengelola layanan Anda (misalnya systemctl restart tomcat di Linux, atau panel Services di Windows). Selamat, sertifikat SSL Anda kini telah terinstal di server Tomcat Anda.
Menguji instalasi SSL Tomcat Anda
Setelah menginstal sertifikat, kesalahan kecil dapat terjadi tanpa disadari dan memengaruhi cara browser memperlakukan situs Anda. Jadikan pemeriksaan instalasi sebagai kebiasaan. Jalankan SSL Checker kami untuk pemindaian instan yang mengungkap masalah seperti sertifikat intermediate yang hilang atau rantai yang tidak dipercaya.
Pertanyaan yang Sering Diajukan
Penyebab umumnya adalah mengimpor sertifikat yang sudah ditandatangani ke alias baru, bukan ke alias yang sudah memuat private key Anda. keytool kemudian menyimpannya sebagai entri sertifikat trusted tanpa key, sehingga Tomcat tidak dapat menyelesaikan proses TLS handshake. Impor ulang reply yang sudah ditandatangani ke alias private key yang sudah ada (alias dari CSR Anda). Konfirmasi bahwa hal itu berhasil dengan menjalankan keytool -list -v -keystore example.jks dan memeriksa apakah alias tersebut ditampilkan sebagai PrivateKeyEntry dengan rantai lebih dari satu sertifikat.
Impor rantai terlebih dahulu. Tambahkan sertifikat root dan intermediate mana pun sebagai entri trusted, secara berurutan, lalu impor sertifikat domain Anda ke alias private key terakhir. Ini memungkinkan keytool membangun jalur trust yang lengkap sebelum menghubungkan reply ke key Anda. Dengan file PKCS#7 (.p7b), rantai sudah tergabung, sehingga satu impor saja menangani semuanya.
Konektor HTTPS didefinisikan di server.xml, di direktori conf pada instalasi Tomcat Anda (misalnya $CATALINA_HOME/conf/server.xml). Pada versi Tomcat saat ini, keystore dirujuk melalui elemen SSLHostConfig dan Certificate yang bersarang, bukan langsung pada konektor.
Ya. Tomcat mendukung keduanya. Atur certificateKeystoreType ke PKCS12 untuk keystore .p12 atau .pfx, atau JKS untuk keystore .jks, dan arahkan certificateKeystoreFile ke file yang sesuai. PKCS12 adalah format keystore standar yang portabel, sehingga menjadi pilihan default yang baik untuk keystore baru.
Konfigurasi contoh Tomcat menggunakan port 8443 untuk konektor aman. Untuk melayani HTTPS pada port standar yang digunakan browser secara default, atur port konektor ke 443 dan pastikan tidak ada konektor atau layanan lain yang sudah menggunakannya.
Jalankan skrip yang sudah tersedia $CATALINA_HOME/bin/shutdown.sh diikuti dengan $CATALINA_HOME/bin/startup.sh, atau mulai ulang layanan Tomcat melalui pengelola layanan Anda (misalnya systemctl restart tomcat di Linux, atau panel Services di Windows). Mulai ulang diperlukan agar perubahan pada server.xml diterapkan.
Hemat 10% untuk Sertifikat SSL saat memesan hari ini!
Penerbitan cepat, enkripsi kuat, kepercayaan peramban 99,99%, dukungan khusus, dan jaminan uang kembali 25 hari. Kode kupon: SAVE10

