bg-tutorials

Cara Membuat CSR di Qmail

Panduan ini menunjukkan kepada Anda cara membuat CSR (Certificate Signing Request) di qmail menggunakan baris perintah OpenSSL. Qmail (dan fork yang aktif dipelihara, notqmail) tidak menyertakan alat CSR bawaan. Anda menggunakan OpenSSL untuk membuat dua berkas sekaligus: kunci privat yang tetap berada di server, dan CSR yang Anda ajukan ke Certificate Authority (CA) Anda.

CSR mengkodekan hostname mail yang disajikan server Anda selama STARTTLS, detail organisasi Anda, dan bagian publik dari kunci tersebut. Kunci privat yang cocok tidak pernah meninggalkan server. Jika Anda kehilangannya, sertifikat yang diterbitkan menjadi tidak dapat digunakan dan Anda harus membuat pasangan baru.

Catatan tentang qmail vs. notqmail: qmail asli dibekukan oleh Daniel J. Bernstein pada tahun 1998 dan tidak menerima pembaruan upstream sejak itu. notqmail (rilis terbaru: 1.09, Mei 2024) adalah fork yang dipelihara komunitas yang menambahkan perbaikan keamanan, kompatibilitas build terkini, dan pekerjaan portabilitas yang berkelanjutan. TLS bukan bagian darinya: pada notqmail, seperti halnya qmail asli, STARTTLS berasal dari patch eksternal, dan catatan rilis 1.09 mencatat bahwa patch smtp-tls yang ada tidak berlaku untuk rilis tersebut dan bahwa diperlukan patch upstream baru. Periksa status patch untuk rilis yang Anda jalankan sebelum memesan sertifikat. Proses pembuatan CSR identik untuk keduanya, karena menggunakan OpenSSL alih-alih biner qmail apa pun. Jika Anda masih menjalankan qmail asli, pertimbangkan untuk bermigrasi ke notqmail atau Postfix untuk dukungan keamanan yang berkelanjutan.

Prasyarat

  • Akses root atau sudo ke server yang menjalankan qmail (atau notqmail).
  • OpenSSL terinstal. Ini disertakan dalam sistem dasar pada setiap distribusi Linux dan BSD utama. Periksa dengan openssl version.
  • Hostname mail yang sepenuhnya memenuhi syarat (fully qualified) yang ingin Anda gunakan pada sertifikat, misalnya mail.example.com. Ini harus cocok dengan catatan MX yang dihubungi klien melalui STARTTLS, bukan domain apex telanjang.

Langkah 1: Siapkan direktori untuk kunci dan CSR

Qmail-smtpd membaca sertifikat TLS-nya dari /var/qmail/control/servercert.pem, jalur yang di-hard-code oleh patch TLS. Buat subdirektori untuk materi kunci dan kunci akses hanya untuk root:

sudo mkdir -p /var/qmail/control/ssl
sudo chmod 700 /var/qmail/control/ssl
cd /var/qmail/control/ssl

Anda akan membuat kunci dan CSR di dalam direktori ini. Setelah CA menerbitkan sertifikat, Anda menggabungkan berkas-berkas tersebut ke dalam servercert.pem yang dibaca qmail-smtpd saat startup.

Langkah 2: Buat kunci privat dan CSR

Jalankan perintah di bawah ini. Perintah ini membuat kunci privat dan CSR dalam satu langkah dan menyertakan Subject Alternative Name (SAN) yang diperlukan oleh klien mail dan CA modern. SAN harus mencantumkan hostname mail (yang ditunjuk oleh catatan MX Anda):

sudo openssl req -new -newkey rsa:2048 -nodes 
-keyout /var/qmail/control/ssl/mail.example.com.key 
-out /var/qmail/control/ssl/mail.example.com.csr 
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=mail.example.com" 
-addext "subjectAltName=DNS:mail.example.com"

Berikut fungsi setiap bagiannya:

  • req -new membuat permintaan penandatanganan sertifikat baru.
  • -newkey rsa:2048 membuat kunci privat RSA 2048-bit baru. 2048 bit adalah standar minimum saat ini untuk sertifikat publik; Anda dapat menggunakan rsa:4096 untuk kunci yang lebih besar.
  • -nodes membiarkan kunci privat tidak terenkripsi (tanpa passphrase), sehingga qmail-smtpd dapat memuatnya saat startup tanpa perlu diminta.
  • -keyout menulis kunci privat. Jaga kerahasiaan berkas ini dan jangan pernah mengirimkannya kepada siapa pun, termasuk CA.
  • -out menulis CSR yang Anda ajukan ke CA.
  • -subj mengisi bidang subjek secara langsung sehingga perintah berjalan tanpa permintaan interaktif. Atur CN (Common Name) ke hostname mail Anda.
  • -addext “subjectAltName=…” menambahkan entri SAN. CA menerbitkan berdasarkan daftar SAN, sehingga hostname mail harus muncul di sini.

Ganti mail.example.com dengan hostname sebenarnya yang dihubungi klien (sering kali nama yang sama dengan catatan MX Anda), dan sunting nilai -subj agar sesuai dengan organisasi Anda. Kode negara dua huruf (C) harus huruf besar, misalnya US atau GB. Untuk sertifikat domain-validated (DV), bidang organisasi tidak diverifikasi, tetapi perintah tetap membutuhkan nilai yang valid. OpenSSL modern menandatangani CSR dengan SHA-256 secara default, yang merupakan syarat setiap CA publik.

Jika Anda lebih suka mengisi bidang secara interaktif alih-alih dengan -subj, hilangkan flag tersebut dan OpenSSL akan meminta Anda memasukkan setiap nilai:

sudo openssl req -new -newkey rsa:2048 -nodes 
-keyout /var/qmail/control/ssl/mail.example.com.key 
-out /var/qmail/control/ssl/mail.example.com.csr 
-addext "subjectAltName=DNS:mail.example.com"

Saat diminta, biarkan challenge password dan optional company name kosong dengan menekan Enter. CA mengabaikan bidang-bidang tersebut, dan challenge password justru menimbulkan masalah di kemudian hari.

Mencakup lebih dari satu hostname

Jika instance qmail yang sama menjawab pada lebih dari satu nama (misalnya, baik mail.example.com maupun smtp.example.com), cantumkan setiap hostname dalam nilai SAN, dipisahkan dengan koma:

-addext "subjectAltName=DNS:mail.example.com,DNS:smtp.example.com"

Common Name tetap harus berupa hostname mail utama. Menambahkan domain apex telanjang ke SAN hanya berguna jika klien mail pernah terhubung langsung ke domain tersebut; jika catatan MX Anda menunjuk ke sub-hostname, Anda tidak perlu menyertakan apex pada sertifikat.

Lebih memilih kunci ECDSA?

Kunci ECDSA lebih kecil dan lebih cepat dibandingkan RSA pada tingkat keamanan yang sama dan didukung oleh setiap klien mail dan CA terkini. Untuk membuat kunci dan CSR P-256 (prime256v1) sebagai gantinya, ganti argumen -newkey:

sudo openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -pkeyopt ec_param_enc:named_curve -nodes 
-keyout /var/qmail/control/ssl/mail.example.com.key 
-out /var/qmail/control/ssl/mail.example.com.csr 
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=mail.example.com" 
-addext "subjectAltName=DNS:mail.example.com"

Perhatikan bahwa qmail asli dengan patch TLS DJB mungkin tidak mendukung ECDSA. Jika Anda menjalankan notqmail dengan OpenSSL terkini, ECDSA berfungsi tanpa masalah.

Langkah 3: Lindungi kunci privat

Kunci akses kunci privat sehingga hanya root yang dapat membacanya. Berkas kunci mentah hanya diperlukan ketika Anda membuat gabungan servercert.pem nanti, sehingga kepemilikan root dan mode 600 sudah tepat:

sudo chown root:root /var/qmail/control/ssl/mail.example.com.key
sudo chmod 600 /var/qmail/control/ssl/mail.example.com.key

Berkas CSR tidak bersifat rahasia (hanya berisi kunci publik dan detail subjek Anda), tetapi menyimpannya di direktori yang sama yang terkunci ini menjaga tata letak tetap rapi.

Langkah 4: Verifikasi CSR

Sebelum Anda mengajukan permintaan, pastikan permintaan tersebut berisi hostname dan SAN yang benar serta tanda tangannya valid:

openssl req -noout -text -verify -in /var/qmail/control/ssl/mail.example.com.csr

Cari verify OK pada keluaran, periksa bahwa baris Subject menunjukkan hostname mail Anda sebagai Common Name, dan pastikan bagian X509v3 Subject Alternative Name mencantumkan setiap hostname yang Anda harapkan. Jika SAN hilang, buat ulang CSR dengan nilai -addext yang benar: CA tidak dapat menambahkan hostname setelah penerbitan. Anda juga dapat menempelkan CSR ke CSR Decoder online kami untuk memeriksa bidang-bidang ini di browser.

Langkah 5: Ajukan CSR

Buka berkas CSR dan salin seluruh isinya, termasuk baris BEGIN dan END:

cat /var/qmail/control/ssl/mail.example.com.csr

Blok tersebut terlihat seperti ini. Salin semuanya dari baris pertama hingga terakhir, termasuk lima tanda hubung di setiap sisi penanda BEGIN dan END:

-----BEGIN CERTIFICATE REQUEST-----
MIIC...base64-encoded data...AB
-----END CERTIFICATE REQUEST-----

Tempelkan blok tersebut ke dalam formulir pemesanan SSL Anda. Setelah CA memvalidasi CSR dan menerbitkan sertifikat, ikuti panduan instalasi SSL qmail kami untuk menerapkannya. Simpan berkas .key di server: Anda memerlukannya bersama sertifikat yang diterbitkan untuk mengaktifkan STARTTLS, dan Anda tidak boleh pernah mengirimkannya ke CA atau siapa pun.

Jika Anda lebih memilih untuk tidak menggunakan baris perintah, buat permintaan tersebut dengan CSR Generator kami dan tempelkan hasilnya ke dalam pesanan Anda. Generator ini menghasilkan kunci privat yang cocok yang Anda tempatkan pada jalur yang sama di server.

Ke mana berkas-berkas tersebut ditempatkan di qmail

Sebagai konteks, begini cara berkas-berkas yang baru saja Anda buat dihubungkan ke qmail setelah CA mengembalikan sertifikat dan intermediate (bundel CA). Qmail-smtpd membaca materi TLS-nya dari satu berkas PEM gabungan di /var/qmail/control/servercert.pem. Berkas ini harus berisi kunci privat, sertifikat server, dan sertifikat intermediate, digabungkan dalam urutan tersebut:

cat mail.example.com.key mail.example.com.crt intermediate.pem 
> /var/qmail/control/servercert.pem
sudo chown root:nofiles /var/qmail/control/servercert.pem
sudo chmod 640 /var/qmail/control/servercert.pem

Grup nofiles adalah grup default untuk pengguna qmaild yang dijalankan oleh qmail-smtpd. Mode 640 memungkinkan qmaild membaca berkas tersebut melalui keanggotaan grup sekaligus menjaga agar tidak dapat dibaca oleh pengguna lain. Jika sistem Anda menggunakan grup yang berbeda untuk qmaild, gantikan nama grup tersebut pada perintah chown.

Qmail-smtpd hanya menawarkan STARTTLS ketika telah dibangun dengan dukungan TLS, yang tidak disertakan secara mandiri baik oleh qmail asli maupun notqmail. Rute yang biasa digunakan pada keduanya adalah patch qmail-tls dari Frederik Vermeulen: patch inilah yang membuat qmail-smtpd membaca servercert.pem dan mengiklankan STARTTLS segera setelah berkas tersebut tersedia. Rute lainnya adalah s/qmail dari Erwin Hoffmann dengan ucspi-ssl, di mana sslserver mengekspor variabel lingkungan UCSPITLS di /service/qmail-smtpd/run dan kuncinya berada di berkas serverkey.pem terpisah, sehingga tata letak satu berkas di atas tidak berlaku di sana. Setelah menempatkan berkas PEM gabungan, mulai ulang layanan qmail-smtpd:

sudo svc -t /service/qmail-smtpd

Panduan instalasi lengkap, termasuk memverifikasi rantai sertifikat dengan OpenSSL, ada di panduan instalasi SSL qmail kami.

Verifikasi STARTTLS setelah instalasi

Setelah sertifikat terpasang, pastikan server Anda mengiklankan STARTTLS dan menyajikan rantai yang valid:

openssl s_client -connect mail.example.com:25 -starttls smtp -servername mail.example.com

Cari Verify return code: 0 (ok) dan pastikan subjek dan penerbit cocok dengan sertifikat Anda. Anda juga dapat memindai server dengan SSL Checker kami untuk laporan visual rantai sertifikat dan tanggal kedaluwarsa.

Buat CSR pada platform mail lainnya

Menjalankan server mail yang berbeda? Lihat panduan CSR kami lainnya:

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

Ditulis oleh

Penulis konten berpengalaman yang berspesialisasi dalam Sertifikat SSL. Mengubah topik keamanan siber yang rumit menjadi konten yang jelas dan menarik. Berkontribusi untuk meningkatkan keamanan digital melalui narasi yang berdampak.

Avatar of Sergiu Rosca
Technical Review by Sergiu Rosca

Sergiu Rosca is the core web developer behind SSL Dragon. He manages the technical infrastructure, platform performance, and backend integrations that keep the site running smoothly and securely. At SSL Dragon, Sergiu shares practical insights on web development, site optimization, and technical troubleshooting.

All SSL Dragon installation guides are tested on live server environments and undergo a strict peer-review process to ensure your infrastructure remains secure. Read our full Editorial Policy.