Tutorial ini menunjukkan kepada Anda cara membuat CSR di NGINX. NGINX sendiri tidak membuat Certificate Signing Request: Anda membuat private key dan CSR menggunakan OpenSSL di server yang sama yang akan menjadi host sertifikat, lalu mengirimkan CSR tersebut ke Certificate Authority Anda. Setelah sertifikat yang diterbitkan diterima, Anda mengarahkan NGINX ke sertifikat tersebut dengan directive ssl_certificate dan ssl_certificate_key.
Langkah-langkah di bawah ini berlaku untuk semua distribusi Linux yang didukung dan menyediakan NGINX (Debian, Ubuntu, RHEL, AlmaLinux, Rocky Linux, Amazon Linux), karena masing-masing distribusi menyediakan OpenSSL 1.1.1 atau 3.x. OpenSSL modern menandatangani permintaan dengan SHA-256 secara default, sehingga Anda tidak perlu menambahkan flag digest.
Langkah 1: Hubungkan ke server NGINX Anda
Hubungkan ke server yang menjalankan NGINX melalui SSH dari komputer lokal Anda (Terminal di macOS atau Linux, PowerShell atau Windows Terminal di Windows). Ganti nama pengguna dan host dengan milik Anda sendiri:
ssh your-user@your-nginx-server
Buat CSR di server yang akan melayani sertifikat tersebut. Private key dibuat berdampingan dengan CSR dan harus tetap berada di server itu. Menjalankan perintah-perintah ini secara lokal dan kemudian menyalin key ke server lain akan menghilangkan tujuan utama dari memiliki private key.
Langkah 2: Membuat private key dan CSR
Jalankan perintah berikut. Perintah ini membuat private key RSA 2048-bit dan CSR yang sesuai dalam satu langkah, dengan subject dan Subject Alternative Names (SAN) yang disertakan langsung sehingga OpenSSL tidak 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 bagian:
- -newkey rsa:2048 membuat key RSA baru 2048-bit. 2048-bit adalah minimum saat ini yang diterima oleh CA publik; Anda dapat menggunakan rsa:4096 untuk key yang lebih besar, atau beralih ke ECDSA (lihat di bawah).
- -nodes membuat private key tidak terenkripsi sehingga NGINX dapat membacanya saat startup tanpa meminta passphrase. Jika Anda lebih memilih untuk mengenkripsi key tersebut, hapus -nodes dan gunakan directive ssl_password_file milik NGINX untuk memberikan passphrase saat start dan reload.
- -keyout dan -out memberi nama pada file private key dan file CSR.
- -subj memberikan subject sertifikat. Masukkan nama perusahaan, negara bagian, dan kota Anda yang sebenarnya di sini, bukan placeholder. CN (Common Name) adalah domain utama Anda.
- -addext “subjectAltName=…” mencantumkan setiap hostname yang harus dicakup oleh sertifikat. CA publik melakukan validasi berdasarkan daftar SAN, jadi masukkan juga Common Name di sini. Flag -addext memerlukan OpenSSL 1.1.1 atau yang lebih baru; setiap rilis Linux yang didukung menyediakan setidaknya versi tersebut.
Ganti yourdomain.com dengan domain Anda yang sebenarnya di seluruh bagian. Untuk mencakup hostname tambahan, tambahkan ke daftar SAN yang dipisahkan dengan koma, misalnya DNS:api.yourdomain.com. Untuk wildcard, sertakan baik wildcard maupun domain polos: DNS:*.yourdomain.com,DNS:yourdomain.com.
Jika Anda lebih memilih key ECDSA (lebih kecil dan lebih cepat, dengan P-256 yang didukung secara luas), buat key dan CSR seperti ini:
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"
Jika OpenSSL Anda tidak mendukung -addext
Pada sistem yang sangat lama dengan OpenSSL yang lebih tua dari 1.1.1, flag -addext tidak tersedia. Buat file konfigurasi kecil bernama san.cnf dengan isi berikut:
[ req ]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn
req_extensions = req_ext
[ dn ]
C = US
ST = YourState
L = YourCity
O = YourCompany
CN = yourdomain.com
[ req_ext ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = yourdomain.com
DNS.2 = www.yourdomain.com
Kemudian jalankan:
openssl req -new -newkey rsa:2048 -nodes
-keyout yourdomain.key -out yourdomain.csr -config san.cnf
Langkah 3: Menemukan file Anda
Tampilkan daftar direktori saat ini untuk memastikan kedua file telah dibuat:
ls
Anda akan melihat dua file baru:
- yourdomain.key: private key Anda. Simpan file ini di server, buat cadangannya dengan aman, dan jangan pernah mengirimkannya kepada siapa pun, termasuk Certificate Authority. Siapa pun yang memegang key ini dapat menyamar sebagai situs Anda.
- yourdomain.csr: Certificate Signing Request Anda. Ini adalah file yang Anda kirimkan ke penyedia SSL.
Segera atur izin yang ketat pada private key sehingga hanya root yang dapat membacanya:
sudo chmod 600 yourdomain.key
sudo chown root:root yourdomain.key
Langkah 4: Memverifikasi CSR (opsional tetapi disarankan)
Sebelum mengirimkannya, periksa apakah CSR berisi subject dan SAN yang benar serta tanda tangannya valid. Perintah ini mendekode permintaan tersebut 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 hostname yang Anda harapkan, dan bahwa pemeriksaan tanda tangan menampilkan verify OK. Algoritma tanda tangan harus tertulis sha256WithRSAEncryption (atau ecdsa-with-SHA256 untuk key ECDSA). Jika Anda lebih memilih untuk tidak menggunakan command line, tempelkan CSR ke CSR decoder online kami untuk membaca kolom yang sama di browser.
Langkah 5: Mengirimkan CSR Anda
Untuk menyalin CSR untuk pesanan Anda, tampilkan isinya:
cat yourdomain.csr
Anda akan melihat blok teks seperti ini:
-----BEGIN CERTIFICATE REQUEST-----
MIIBozCB... (a long string of characters)
-----END CERTIFICATE REQUEST-----
Salin seluruh blok tersebut, termasuk baris —–BEGIN CERTIFICATE REQUEST—– dan —–END CERTIFICATE REQUEST—– (setiap penanda memiliki lima tanda hubung di kedua sisinya). Seluruh blok tersebut adalah CSR Anda. Tempelkan ke formulir pesanan saat pembelian Anda, dan simpan private key yang sesuai tetap berada di server.
Jika Anda lebih memilih untuk tidak menggunakan command line, Anda juga dapat membuat permintaan tersebut dengan CSR Generator online kami. Perlu diketahui bahwa alat ini membuat private key di browser Anda, sehingga Anda harus menyimpan sendiri key tersebut dan memindahkannya ke server.
Apa yang terjadi setelah CA menerbitkan sertifikat
Setelah CA memvalidasi CSR dan menerbitkan sertifikat, Anda biasanya akan menerima sertifikat server Anda (file .crt yang diberi nama sesuai domain Anda) beserta satu atau lebih sertifikat perantara (intermediate), yang terkadang digabungkan menjadi satu file .ca-bundle. NGINX mengharapkan sertifikat server dan chain intermediate digabungkan menjadi satu file (disebut “fullchain”) dan dirujuk oleh ssl_certificate; private key yang Anda buat sebelumnya dirujuk secara terpisah oleh ssl_certificate_key. Prosedur lengkapnya (membuat fullchain, mengedit server block, menguji, dan melakukan reload) dijelaskan dalam tutorial instalasi SSL NGINX kami.
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

