Secara default, server Jetty mentransmisikan data melalui HTTP, yang mengekspos layanan web Anda terhadap risiko seperti paparan data dan pembajakan. Untuk mengaktifkan HTTPS dan mengenkripsi komunikasi antara klien dan server, konfigurasikan Sertifikat SSL. Ini mengamankan transmisi data, memverifikasi identitas server, dan meningkatkan kepercayaan pengguna.
Tema ini menggunakan Linux dan jetty-distribution-9.4.51.v20230217 sebagai contoh. Proses penerapan dapat bervariasi tergantung pada sistem operasi atau versi server Jetty Anda. Jika Anda mengalami masalah, hubungi manajer akun Anda untuk mendapatkan 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, pertama-tama perpanjang Sertifikat SSL.
Pencocokan nama domain: Pastikan sertifikat cocok dengan semua nama domain yang ingin Anda amankan. Jika tidak, pengunjung akan melihat peringatan keamanan saat mengakses nama domain yang tidak sesuai melalui HTTPS. Untuk menambah atau memodifikasi domain, lihat Tambah dan ganti nama domain.
Nama domain yang cocok secara eksak: Hanya berlaku untuk nama domain yang ditentukan.
example.comhanya melindungiexample.com.www.example.comhanya melindungiwww.example.com.
Nama domain wildcard: Hanya berlaku untuk subdomain tingkat pertama.
*.example.comberlaku untuk subdomain tingkat pertama sepertiwww.example.comdana.example.com.*.example.comtidak melindungi domain rootexample.comatau subdomain multi-level sepertia.b.example.com.
CatatanUntuk 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 membutuhkan akun
rootatau akun dengan hak istimewasudo.Resolusi DNS: Rekaman DNS domain dikonfigurasi dan diselesaikan ke alamat IP publik server.
Prosedur
Langkah 1: Unduh Sertifikat SSL
Kunjungi halaman Manajemen Sertifikat SSL. Di kolom Actions sertifikat target, klik Download Certificate. Kemudian, di tab Download, unduh sertifikat untuk Server Type JKS.
CatatanJKS (Java Keystore) adalah format penyimpanan kunci milik Java untuk lingkungan Java.
File yang diekstraksi mencakup file sertifikat (dengan ekstensi
.jksyang berisi rantai sertifikat lengkap) dan file kata sandi (jks-password.txt).
Langkah 2: Konfigurasi sistem dan lingkungan jaringan
Langkah ini memastikan aplikasi Anda memiliki izin untuk mendengarkan port tertentu dan bahwa grup keamanan serta firewall Anda mengizinkan lalu lintas eksternal mencapainya.
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> 443Jika 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> 443Jika keluarannya adalah
Koneksi ke <alamat IP publik server saat ini> port [tcp/https] berhasil!atau[<alamat IP publik server saat ini>] 443 (https) terbuka, port 443 terbuka. Jika tidak, buka port 443 di grup keamanan dan firewall.Buka port 443 di konfigurasi grup keamanan Anda.
PentingJika server Anda ditempatkan di platform cloud, pastikan grup keamanannya mengizinkan lalu lintas masuk pada port TCP 443. Jika tidak, layanan tidak akan dapat diakses. Langkah-langkah berikut menggunakan Alibaba Cloud Elastic Compute Service (ECS) sebagai contoh. Untuk platform cloud lainnya, lihat dokumentasi resmi mereka.
Kunjungi halaman Instans Layanan Komputasi Elastis, klik nama instans target untuk masuk ke halaman detail instans. 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.
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" fiJika keluarannya adalah
none, tidak ada tindakan lebih lanjut yang diperlukan. Jika tidak, jalankan perintah yang sesuai berdasarkan keluaran (firewalld,ufw,nftables, atauiptables) untuk membuka port 443:firewalld
sudo firewall-cmd --permanent --add-port=443/tcp && sudo firewall-cmd --reloadufw
sudo ufw allow 443/tcpnftables
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/nulliptables
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPTUntuk memastikan aturan iptables bertahan setelah reboot sistem, jalankan perintah berikut:
RHEL/CentOS
sudo yum install -y iptables-services sudo service iptables saveDebian/Ubuntu
sudo apt-get install -y iptables-persistent sudo iptables-save | sudo tee /etc/iptables/rules.v4 >/dev/null
Langkah 3: Pasang Sertifikat SSL pada server Jetty
Buat dan masuk ke direktori dasar Jetty (
$JETTY_BASE) dan buat direktoricertdi dalamnya untuk menyimpan file sertifikat Anda.PentingMemisahkan direktori instalasi Jetty (
$JETTY_HOME) dari direktori dasar ($JETTY_BASE) menyederhanakan peningkatan dan pemeliharaan di masa depan.# Contoh: Anggap Jetty diinstal di /usr/local/jetty, dan aplikasi serta konfigurasi ada di /var/www/my-app. export JETTY_HOME=/usr/local/jetty export JETTY_BASE=/var/www/my-app # Buat struktur direktori yang diperlukan untuk file sertifikat, sumber daya kode situs web, dan sebagainya. mkdir -p $JETTY_BASE/cert mkdir -p $JETTY_BASE/webapps # Lakukan operasi berikut di direktori $JETTY_BASE. cd $JETTY_BASEUnggah file sertifikat Anda ke direktori
certyang baru saja Anda buat.CatatanGunakan fitur unggah file dari alat akses jarak jauh Anda, seperti PuTTY, Xshell, atau WinSCP. Jika menggunakan Alibaba Cloud ECS, lihat Unggah atau unduh file.
Aktifkan modul
sslJetty dan tentukan informasi sertifikat.Di direktori
$JETTY_BASE, jalankan perintah berikut untuk menginisialisasi modulssl.# Perintah ini menghasilkan file konfigurasi ssl.ini dan https.ini di direktori $JETTY_BASE/start.d/. java -jar $JETTY_HOME/start.jar --add-to-start=sslEdit file
$JETTY_BASE/start.d/ssl.iniuntuk menentukan jalur sertifikat dan kata sandi.# Jalankan perintah berikut untuk masuk ke mode edit dan siapkan untuk mengonfigurasi informasi sertifikat. vim $JETTY_BASE/start.d/ssl.iniTemukan dan ubah parameter berikut, pastikan mereka tidak dikomentari dengan
#. Untuk sertifikat JKS yang diunduh dari Alibaba Cloud, gunakan kata sandi yang sama untukkeyStorePassworddankeyManagerPassword.# --------------------------------------- # SSL Context Factory KeyStore Configuration # --------------------------------------- # jetty.ssl.keystore.path sudah usang. Gunakan jetty.ssl.keyStorePath sebagai gantinya. jetty.ssl.keyStorePath=cert/your_domain.jks # jetty.ssl.keystore.password sudah usang. Gunakan jetty.ssl.keyStorePassword sebagai gantinya. jetty.ssl.keyStorePassword=[password dari file jks-password.txt] # jetty.ssl.keymanager.password sudah usang. Gunakan jetty.ssl.keyManagerPassword sebagai gantinya. jetty.ssl.keyManagerPassword=[password dari file jks-password.txt]
Langkah 4: Mulai ulang layanan Jetty
Di direktori $JETTY_BASE, mulai server Jetty.
Karena port 443 adalah port istimewa, gunakan sudo untuk memulai layanan.
# Ubah ke direktori kerja Jetty.
cd $JETTY_BASE
# Mulai ulang layanan.
sudo java -jar $JETTY_HOME/start.jarLangkah 5: Verifikasi pemasangan
Akses domain Anda melalui HTTPS di browser web. Misalnya,
https://yourdomain.com. Gantiyourdomain.comdengan domain Anda yang sebenarnya.Jika ikon gembok muncul di bilah alamat browser, sertifikat telah berhasil diterapkan. Jika Anda mengalami kesalahan akses atau ikon gembok tidak muncul, bersihkan cache browser Anda atau coba lagi dalam mode penyamaran (privasi).

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

Jika Anda melihat Error 404, itu menunjukkan bahwa server Jetty Anda tidak memiliki aplikasi web. Ini tidak berarti server gagal memulai. Jika masalah tetap ada, lihat 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. Hindari menjalankan aplikasi menggunakan akun dengan hak administrator.
CatatanPendekatan 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 didekripsi ke aplikasi backend.
Eksternalisasi manajemen kredensial:
Hindari menulis hard-code kata sandi atau informasi sensitif lainnya dalam kode atau file konfigurasi. 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 guna 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 otomatisasi 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 pengaktifan pemantauan nama domain publik.
FAQ
Mengapa sertifikat saya tidak berfungsi atau HTTPS tidak dapat diakses setelah pemasangan atau pembaruan?
Penyebab umum meliputi:
Grup keamanan atau firewall server tidak mengizinkan lalu lintas pada port 443. Lihat Konfigurasikan sistem dan lingkungan jaringan.
Domain yang Anda akses tidak termasuk dalam Bound Domains sertifikat. Lihat Pencocokan nama domain.
Anda belum memulai ulang layanan Jetty setelah memodifikasi file konfigurasinya. Lihat Mulai ulang layanan Jetty.
File sertifikat tidak diganti dengan benar, atau konfigurasi Jetty tidak menunjuk ke jalur sertifikat yang benar. Verifikasi bahwa konfigurasi dan file sertifikat adalah yang terbaru dan valid.
Lalu lintas domain dirutekan melalui produk cloud seperti Content Delivery Network (CDN), SLB, atau Web Application Firewall (WAF), tetapi sertifikat belum dipasang pada layanan tersebut. Lihat Lokasi penerapan sertifikat saat lalu lintas melewati beberapa layanan Alibaba Cloud untuk menyelesaikan pengaturan.
DNS domain diselesaikan ke beberapa server, tetapi sertifikat hanya dipasang di beberapa di antaranya. Pasang sertifikat di setiap server.
Untuk pemecahan masalah lebih lanjut, lihat Selesaikan masalah penerapan sertifikat berdasarkan pesan kesalahan browser dan Panduan pemecahan masalah penerapan Sertifikat SSL.
Bagaimana cara memperbarui atau mengganti Sertifikat SSL di Jetty?
Pertama, cadangkan file sertifikat yang ada (.jks dan .txt) di server Anda. Kemudian, masuk ke konsol Layanan Manajemen Sertifikat, unduh file sertifikat baru, dan unggah ke server target untuk menimpa file lama. Pastikan jalur dan nama file tetap sama. Terakhir, mulai ulang layanan Jetty untuk menerapkan sertifikat baru.
Mengapa saya mendapatkan kesalahan "Alamat sudah digunakan" atau "Port sudah ditempati" saat startup?
Kesalahan ini menunjukkan bahwa port 443 sudah digunakan oleh proses lain. Gunakan perintah sudo ss -tlnp | grep :443 atau sudo lsof -i:443 untuk menemukan proses yang menggunakan port tersebut dan hentikan prosesnya. Penyebab umum termasuk Nginx, Apache, atau perintah uji yang tidak dimatikan dengan benar.
Mengapa saya mendapatkan kesalahan "Izin ditolak" saat startup?
Pada sistem Linux, mengikat ke port di bawah 1024 memerlukan izin root. Gunakan sudo untuk memulai Jetty. Di lingkungan produksi, hindari menjalankan layanan langsung sebagai pengguna root. Praktik yang lebih aman adalah memberikan izin eksekusi Java untuk mengikat ke port bernomor rendah dengan menggunakan setcap (seperti sudo setcap 'cap_net_bind_service=+ep' /path/to/your/java) atau menempatkan Jetty di belakang reverse proxy seperti Nginx.