bg-tutorials

Cara Membuat CSR di Postfix

Panduan ini menunjukkan kepada Anda cara membuat CSR (Certificate Signing Request) di Postfix menggunakan baris perintah OpenSSL. Postfix sendiri tidak membuat kunci atau CSR; Postfix menggunakan berkas-berkas yang dihasilkan OpenSSL dan mereferensikannya dari /etc/postfix/main.cf. Anda menjalankan satu perintah yang membuat dua berkas sekaligus: private key yang tetap berada di server, dan CSR yang Anda kirimkan ke Certificate Authority (CA) Anda.

CSR mengkodekan hostname yang ditampilkan MTA Anda saat STARTTLS, detail organisasi Anda, dan bagian publik dari kunci tersebut. Private key yang cocok tidak pernah meninggalkan server. Jika Anda kehilangannya, sertifikat yang diterbitkan menjadi tidak dapat digunakan dan Anda harus memulai dari awal.

Prasyarat

  • Akses root atau sudo ke server yang menjalankan Postfix.
  • OpenSSL sudah terpasang. OpenSSL disertakan dalam sistem dasar di setiap distribusi Linux 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 sesuai dengan MX record yang digunakan klien untuk terhubung melalui STARTTLS, bukan domain apex saja.

Langkah 1: Siapkan direktori untuk kunci dan CSR

Simpan materi TLS Postfix di direktorinya sendiri di bawah /etc/postfix/ agar izin aksesnya mudah dikelola. Buat direktori tersebut dan kunci aksesnya hanya untuk root:

sudo mkdir -p /etc/postfix/ssl
sudo chmod 700 /etc/postfix/ssl
cd /etc/postfix/ssl

Anda akan membuat kunci dan CSR di dalam direktori ini, kemudian mereferensikannya dari main.cf setelah CA menerbitkan sertifikat.

Langkah 2: Buat private key dan CSR

Jalankan perintah di bawah ini. Perintah ini membuat private key dan CSR dalam satu langkah dan menyertakan Subject Alternative Name (SAN) yang diwajibkan oleh browser, klien email, dan CA modern. SAN harus mencantumkan hostname mail (yang dituju oleh MX record Anda), bukan domain apex saja:

sudo openssl req -new -newkey rsa:2048 -nodes 
-keyout /etc/postfix/ssl/mail.example.com.key 
-out /etc/postfix/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 masing-masing bagian:

  • req -new membuat certificate signing request baru.
  • -newkey rsa:2048 membuat private key RSA 2048-bit baru. 2048 bit adalah minimum saat ini untuk sertifikat publik; Anda dapat menggunakan rsa:4096 untuk kunci yang lebih besar.
  • -nodes membiarkan private key tidak terenkripsi (tanpa passphrase), sehingga Postfix dapat memuatnya saat boot tanpa perlu memasukkan kata sandi.
  • -keyout menulis private key. Jaga kerahasiaan berkas ini dan jangan pernah mengirimkannya kepada siapa pun, termasuk CA.
  • -out menulis CSR yang Anda kirimkan ke CA.
  • -subj mengisi kolom subjek secara langsung sehingga perintah berjalan tanpa perlu interaksi. Atur CN (Common Name) sesuai 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 sesungguhnya yang dihubungi oleh klien (biasanya sama dengan nama pada MX record Anda), dan edit nilai -subj agar sesuai dengan organisasi Anda. Kode negara dua huruf (C) harus huruf kapital, misalnya US atau GB. Untuk sertifikat domain-validated (DV), kolom organisasi tidak diverifikasi, tetapi perintah tetap memerlukan nilai yang valid. OpenSSL modern menandatangani CSR dengan SHA-256 secara default, yang merupakan syarat setiap CA publik.

Jika Anda lebih suka mengisi kolom secara interaktif alih-alih menggunakan -subj, hapus baris tersebut dan OpenSSL akan meminta Anda memasukkan setiap nilai:

sudo openssl req -new -newkey rsa:2048 -nodes 
-keyout /etc/postfix/ssl/mail.example.com.key 
-out /etc/postfix/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 kolom-kolom tersebut, dan challenge password justru dapat menimbulkan masalah di kemudian hari.

Mencakup lebih dari satu hostname

Jika instance Postfix yang sama merespons pada lebih dari satu nama (misalnya, mail.example.com dan smtp.example.com, atau sertifikat bersama untuk mail dan webmail), cantumkan setiap hostname pada nilai SAN, dipisahkan dengan koma:

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

Common Name sebaiknya tetap berupa hostname mail utama. Menambahkan domain apex saja ke SAN hanya berguna jika klien email pernah terhubung langsung ke domain tersebut; jika MX record Anda mengarah 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 email dan CA saat ini. Untuk membuat kunci dan CSR P-256 (prime256v1), ganti argumen -newkey:

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

Langkah 3: Lindungi private key

Kunci akses private key sehingga hanya root yang dapat membacanya. Postfix membuka materi TLS-nya sebelum melepaskan hak akses, sehingga kepemilikan root dan mode 600 keduanya benar dan diwajibkan:

sudo chown root:root /etc/postfix/ssl/mail.example.com.key
sudo chmod 600 /etc/postfix/ssl/mail.example.com.key

Berkas CSR bukanlah rahasia (hanya berisi public key dan detail subjek Anda), tetapi menyimpannya di direktori yang sama yang terkunci membuat susunan berkas tetap rapi.

Langkah 4: Verifikasi CSR

Sebelum mengirimkan permintaan, pastikan CSR berisi hostname dan SAN yang benar serta tanda tangannya valid. Perintah ini menampilkan isi yang telah didekode dan memeriksa tanda tangan secara lokal:

openssl req -noout -text -verify -in /etc/postfix/ssl/mail.example.com.csr

Perhatikan apakah muncul verify OK pada keluaran, periksa apakah baris Subject menampilkan hostname mail Anda sebagai Common Name, dan pastikan bagian X509v3 Subject Alternative Name mencantumkan setiap hostname yang Anda harapkan. Jika ada SAN yang 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 kolom-kolom ini di browser.

Langkah 5: Kirim CSR

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

cat /etc/postfix/ssl/mail.example.com.csr

Blok teks tersebut akan 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 formulir pemesanan SSL Anda. Setelah CA memvalidasi CSR dan menerbitkan sertifikat, ikuti petunjuk instalasi SSL Postfix kami untuk memasangnya. Simpan berkas .key di server: Anda membutuhkannya bersama sertifikat yang diterbitkan untuk melayani STARTTLS, dan Anda tidak boleh pernah mengirimkannya ke CA atau siapa pun.

Jika Anda lebih memilih untuk tidak menggunakan baris perintah, buat permintaan dengan CSR Generator kami dan tempelkan hasilnya ke pesanan Anda. Generator ini akan menghasilkan private key yang sesuai, yang Anda letakkan pada jalur yang sama di server.

Ke mana berkas-berkas ini dirujuk di Postfix

Sebagai konteks, begini cara berkas-berkas yang baru saja Anda buat dihubungkan ke Postfix setelah CA mengembalikan sertifikat dan intermediate (CA bundle). Pada Postfix 3.4 dan versi yang lebih baru, bentuk direktif tunggal yang direkomendasikan menggunakan satu berkas PEM yang berisi private key diikuti oleh rantai sertifikat lengkap:

cat mail.example.com.key mail.example.com.crt intermediate.pem 
> /etc/postfix/ssl/mail.example.com.chain.pem
sudo chmod 600 /etc/postfix/ssl/mail.example.com.chain.pem

Kemudian di /etc/postfix/main.cf:

smtpd_tls_chain_files = /etc/postfix/ssl/mail.example.com.chain.pem
smtpd_tls_security_level = may

Pada Postfix versi lebih lama dari 3.4, gunakan pasangan direktif lama, dengan kunci dan sertifikat rantai lengkap disimpan dalam berkas terpisah:

smtpd_tls_cert_file = /etc/postfix/ssl/mail.example.com.fullchain.crt
smtpd_tls_key_file  = /etc/postfix/ssl/mail.example.com.key
smtpd_tls_security_level = may

Panduan instalasi lengkap, termasuk layanan submission pada port 587 dan verifikasi dengan OpenSSL, tersedia di panduan instalasi SSL Postfix kami.

Membuat CSR di platform email lainnya

Menjalankan server atau gateway email 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.