Tutorial ini menunjukkan cara membuat CSR di lighttpd menggunakan baris perintah OpenSSL pada server yang sama yang menjalankan web server lighttpd. Anda akan membuat dua file dalam satu perintah: kunci privat baru dan CSR (Certificate Signing Request) yang cocok, yang akan Anda kirimkan ke Certificate Authority Anda.
Langkah-langkah di bawah ini berlaku untuk semua distribusi Linux modern yang menyediakan paket lighttpd (Debian, Ubuntu, RHEL, AlmaLinux, Rocky Linux, Fedora, openSUSE, Alpine), karena masing-masing sudah dilengkapi dengan OpenSSL 1.1.1 atau OpenSSL 3.x. Kedua versi tersebut menandatangani permintaan dengan SHA-256 secara default, jadi Anda tidak perlu menambahkan flag digest. Perintah yang sama juga berfungsi di FreeBSD dan di macOS dengan lighttpd.
Langkah 1: Hubungkan ke server lighttpd Anda
Buka Terminal di macOS atau Linux, atau PowerShell atau Windows Terminal di Windows, lalu hubungkan ke server melalui SSH. Ganti nama pengguna dan host dengan milik Anda sendiri:
ssh your-user@your-lighttpd-server
Buat CSR pada server yang sama yang akan menjadi host sertifikat. Kunci privat dibuat di samping CSR dan harus tetap berada di server tersebut, sehingga menjalankan perintah di laptop Anda lalu menyalin kunci ke tempat lain akan menggagalkan tujuannya. Anda mungkin juga ingin melakukan pekerjaan ini di direktori khusus yang dapat Anda temukan kembali nanti, misalnya:
sudo mkdir -p /etc/lighttpd/ssl
cd /etc/lighttpd/ssl
Langkah 2: Buat kunci privat dan CSR
Jika Anda sudah membuat CSR dengan alat lain, lanjutkan ke menginstal sertifikat pada lighttpd.
Jalankan perintah OpenSSL berikut. Perintah ini membuat kunci RSA 2048-bit dan CSR dalam satu langkah, dengan subjek dan Subject Alternative Names (SAN) disertakan langsung sehingga OpenSSL tidak perlu berhenti untuk mengajukan pertanyaan:
openssl req -new -newkey rsa:2048 -nodes
-keyout yourdomain.key
-out yourdomain.csr
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=yourdomain.com"
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"
Fungsi setiap bagiannya:
- -newkey rsa:2048 membuat kunci RSA 2048-bit baru. 2048-bit adalah standar minimum saat ini untuk sertifikat publik; Anda dapat menggunakan rsa:4096 untuk kunci yang lebih besar, atau beralih ke ECDSA (lihat di bawah).
- -nodes membiarkan kunci privat tidak dienkripsi sehingga lighttpd dapat membacanya saat startup tanpa perlu meminta passphrase.
- -keyout dan -out menamai file kunci privat dan CSR.
- -subj menyediakan subjek sertifikat. Masukkan nama perusahaan, negara bagian, dan kota yang sebenarnya di sini, bukan placeholder. CN (Common Name) adalah domain utama Anda.
- -addext “subjectAltName=…” mencantumkan setiap nama host yang harus dicakup oleh sertifikat. CA publik memvalidasi berdasarkan daftar SAN, jadi sertakan juga Common Name di sini.
Ganti yourdomain.com dengan domain Anda yang sebenarnya di seluruh bagian. Untuk mencakup nama host tambahan, tambahkan ke daftar SAN yang dipisahkan dengan koma, misalnya DNS:api.yourdomain.com. Untuk sertifikat wildcard, sertakan baik wildcard maupun domain polos: DNS:*.yourdomain.com,DNS:yourdomain.com. Gunakan hanya karakter alfanumerik di kolom subjek, dan gunakan kode negara dua huruf resmi untuk kolom C.
Jika Anda lebih memilih kunci ECDSA (lebih kecil dan lebih cepat, dengan P-256 yang didukung secara luas), buat kunci dan CSR seperti ini sebagai gantinya:
openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -pkeyopt ec_param_enc:named_curve -nodes
-keyout yourdomain.key
-out yourdomain.csr
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=yourdomain.com"
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"
lighttpd mendukung sertifikat RSA maupun ECDSA melalui mod_openssl, dan Anda dapat menyajikan keduanya pada socket yang sama dengan mencantumkan dua pasang direktif ssl.pemfile dan ssl.privkey.
Jika Anda lebih suka menjawab prompt satu per satu kolom, jalankan openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr tanpa -subj dan tanpa -addext. OpenSSL akan menanyakan setiap kolom secara berurutan. Ketika ini terjadi:
- Country Name (C): kode ISO dua huruf negara Anda, misalnya US atau GB. Untuk sertifikat Business Validation atau Extended Validation, ini harus merupakan negara registrasi resmi organisasi Anda.
- State or Province Name (ST): nama lengkap, misalnya Tennessee. Jangan disingkat.
- Locality Name (L): kota atau kabupaten, misalnya Nashville.
- Organization Name (O): nama resmi terdaftar perusahaan Anda, misalnya Your Company LLC. Untuk sertifikat Domain Validation, Anda dapat memasukkan NA.
- Organizational Unit Name (OU): kolom ini sudah usang dan diabaikan oleh CA publik. Biarkan kosong dengan menekan Enter.
- Common Name (CN): Fully Qualified Domain Name yang menjadi tujuan sertifikat, misalnya www.yourdomain.com. Untuk wildcard, gunakan *.yourdomain.com.
- Email Address: opsional dan tidak digunakan oleh CA publik. Anda dapat membiarkannya kosong.
- A challenge password dan An optional company name: keduanya adalah atribut usang yang diabaikan oleh CA publik. Biarkan kosong.
Tanpa flag -addext, CSR yang dihasilkan tidak akan memiliki entri SAN. CA publik memvalidasi berdasarkan daftar SAN dan akan menolak (atau secara diam-diam mengabaikan) permintaan yang tidak menyertakannya, sehingga jalur yang direkomendasikan adalah perintah -subj ditambah -addext inline di atas.
Langkah 3: Temukan file Anda
Tampilkan daftar isi direktori saat ini untuk memastikan kedua file telah dibuat:
ls
Anda akan melihat dua file baru:
- yourdomain.key: kunci privat Anda. Simpan di server, cadangkan dengan aman, dan jangan pernah mengirimkannya kepada siapa pun, termasuk Certificate Authority. Siapa pun yang memegang kunci ini dapat menyamar sebagai situs Anda.
- yourdomain.csr: Certificate Signing Request Anda. Inilah file yang Anda kirimkan ke penyedia SSL.
Batasi akses kunci privat sehingga hanya pemilik file yang dapat membacanya:
chmod 600 yourdomain.key
Langkah 4: Verifikasi CSR (opsional tetapi disarankan)
Sebelum mengirimkannya, periksa apakah CSR berisi subjek dan SAN yang benar serta apakah tanda tangannya valid. Perintah ini mendekode permintaan secara lokal dengan OpenSSL:
openssl req -noout -text -verify -in yourdomain.csr
Pastikan baris Subject menampilkan detail Anda, bahwa X509v3 Subject Alternative Name mencantumkan setiap nama host yang Anda harapkan, dan bahwa pemeriksaan tanda tangan menampilkan verify OK. Algoritma tanda tangan harus tertulis sha256WithRSAEncryption (atau ecdsa-with-SHA256 untuk kunci ECDSA). Jika Anda lebih memilih tidak menggunakan baris perintah, tempelkan CSR ke CSR Decoder online kami untuk membaca kolom yang sama di browser.
Langkah 5: Kirim CSR Anda
Untuk menyalin CSR untuk pesanan Anda, tampilkan isinya:
cat yourdomain.csr
Anda akan melihat blok teks seperti ini:
-----BEGIN CERTIFICATE REQUEST-----
MIICyzCCAbMCAQAwTDELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQsw...
...(many more lines of base64 characters)...
-----END CERTIFICATE REQUEST-----
Salin seluruh blok, termasuk baris —–BEGIN CERTIFICATE REQUEST—– dan —–END CERTIFICATE REQUEST—– (setiap penanda memiliki lima tanda hubung di kedua sisinya). Seluruh blok itu adalah CSR Anda. Tempelkan ke formulir pemesanan saat Anda melakukan pembelian, dan simpan kunci privat yang cocok tetap berada di server.
Jika Anda lebih memilih tidak menggunakan baris perintah, Anda juga dapat membuat permintaan dengan CSR Generator online kami. Perlu diperhatikan bahwa alat ini membuat kunci privat di browser Anda, jadi simpan sendiri kunci tersebut dan pindahkan ke server.
Setelah CA Anda memvalidasi permintaan, Anda akan menerima sertifikat Anda. Tergantung pada tingkat validasinya, proses ini memerlukan waktu beberapa menit untuk Domain Validation, atau hingga beberapa hari kerja untuk Business Validation dan Extended Validation.
Langkah 6: Instal sertifikat pada lighttpd
Setelah sertifikat diterima, tempatkan sertifikat yang diterbitkan beserta rantai perantaranya di server bersama kunci privat, lalu arahkan lighttpd ke file-file tersebut dalam blok socket TLS Anda. Pada lighttpd versi terbaru, dukungan TLS berada di mod_openssl, dan format yang direkomendasikan (sejak lighttpd 1.4.53 memperkenalkan ssl.privkey) menyimpan sertifikat beserta rantainya dalam satu file dan kunci privat dalam file terpisah:
server.modules += ( "mod_openssl" )
$SERVER["socket"] == ":443" {
ssl.engine = "enable"
ssl.pemfile = "/etc/lighttpd/ssl/yourdomain.fullchain.pem"
ssl.privkey = "/etc/lighttpd/ssl/yourdomain.key"
}
File ssl.pemfile harus berisi sertifikat Anda diikuti dengan sertifikat perantara (buat dengan cat yourdomain.crt yourdomain.ca-bundle > yourdomain.fullchain.pem). Format file tunggal lama yang menggabungkan sertifikat dan kunci privat menjadi satu ssl.pemfile masih berfungsi pada build lama, tetapi bentuk file terpisah lebih sesuai dengan cara Certificate Authority mengirimkan file dan merupakan rekomendasi resmi yang didokumentasikan. Uji konfigurasi dengan sudo lighttpd -t -f /etc/lighttpd/lighttpd.conf dan mulai ulang lighttpd untuk menerapkan perubahan. Untuk alur kerja lengkapnya, lihat panduan kami tentang cara menginstal sertifikat SSL pada lighttpd.
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

