全部产品
Search
文档中心

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

更新时间:Oct 23, 2025

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.

Penting

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.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 membutuhkan akun root atau akun dengan hak istimewa sudo.

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

Prosedur

Langkah 1: Unduh Sertifikat SSL

  1. Kunjungi halaman Manajemen Sertifikat SSL. Di kolom Actions sertifikat target, klik Download Certificate. Kemudian, di tab Download, unduh sertifikat untuk Server Type JKS.

    Catatan

    JKS (Java Keystore) adalah format penyimpanan kunci milik Java untuk lingkungan Java.

  2. File yang diekstraksi mencakup file sertifikat (dengan ekstensi .jks yang 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.

  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 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.

  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 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.

  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 SSL pada server Jetty

  1. Buat dan masuk ke direktori dasar Jetty ($JETTY_BASE) dan buat direktori cert di dalamnya untuk menyimpan file sertifikat Anda.

    Penting

    Memisahkan 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_BASE
  2. Unggah file sertifikat Anda ke direktori cert yang baru saja Anda buat.

    Catatan

    Gunakan fitur unggah file dari alat akses jarak jauh Anda, seperti PuTTY, Xshell, atau WinSCP. Jika menggunakan Alibaba Cloud ECS, lihat Unggah atau unduh file.

  3. Aktifkan modul ssl Jetty dan tentukan informasi sertifikat.

    1. Di direktori $JETTY_BASE, jalankan perintah berikut untuk menginisialisasi modul ssl.

      # 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=ssl
    2. Edit file $JETTY_BASE/start.d/ssl.ini untuk 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.ini
    3. Temukan dan ubah parameter berikut, pastikan mereka tidak dikomentari dengan #. Untuk sertifikat JKS yang diunduh dari Alibaba Cloud, gunakan kata sandi yang sama untuk keyStorePassword dan keyManagerPassword.

      # ---------------------------------------
      # 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.

Catatan

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.jar

Langkah 5: Verifikasi pemasangan

  1. Akses domain Anda melalui HTTPS di browser web. Misalnya, 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 Anda mengalami kesalahan akses atau ikon gembok tidak muncul, bersihkan cache browser Anda atau coba lagi dalam mode penyamaran (privasi).

    image

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

image.png

Catatan

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.

    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 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.

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.