bg-tutorials

Cara Membuat CSR di Apache

Tutorial ini menunjukkan kepada Anda cara membuat CSR di Apache menggunakan baris perintah OpenSSL pada server yang sama yang menjalankan Apache HTTP Server. Anda akan membuat dua file dalam satu perintah: kunci privat baru dan CSR (Certificate Signing Request) yang sesuai, yang akan Anda kirimkan ke Certificate Authority Anda.

Langkah-langkah di bawah ini berfungsi pada setiap distribusi Linux modern yang menjalankan Apache (Ubuntu, Debian, RHEL, AlmaLinux, Rocky Linux, Amazon Linux 2023), karena masing-masing sudah dilengkapi OpenSSL 1.1.1 atau OpenSSL 3.x. Kedua versi tersebut menandatangani permintaan dengan SHA-256 secara default, sehingga Anda tidak perlu menambahkan flag digest. Perintah yang sama juga berfungsi di FreeBSD dan di macOS dengan Apache.

Langkah 1: Hubungkan ke server Apache 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-apache-server

Buat CSR pada server yang sama yang nantinya akan menjalankan sertifikat tersebut. Kunci privat dibuat di samping CSR dan harus tetap berada di server itu, sehingga menjalankan perintah di laptop Anda kemudian menyalin kunci ke tempat lain akan menghilangkan tujuannya. Anda juga mungkin ingin melakukan pekerjaan ini di direktori khusus yang dapat Anda temukan lagi nanti, misalnya:

sudo mkdir -p /etc/ssl/yourdomain
cd /etc/ssl/yourdomain

Langkah 2: Buat kunci privat dan CSR

Jika Anda sudah membuat CSR dengan alat lain, langsung ke memasang sertifikat di Apache.

Jalankan perintah OpenSSL berikut. Perintah ini membuat kunci RSA 2048-bit dan CSR dalam satu langkah, dengan subjek 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 masing-masing bagian:

  • -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 terenkripsi sehingga Apache dapat membacanya saat startup tanpa perlu memasukkan passphrase.
  • -keyout dan -out menamai file kunci privat dan file CSR.
  • -subj menyediakan subjek 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 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 perintah. 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 pada bidang subjek, dan gunakan kode negara dua huruf resmi untuk bidang C.

Jika Anda lebih suka menggunakan kunci ECDSA (lebih kecil dan lebih cepat, dengan P-256 yang didukung secara luas), buat kunci 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 Anda lebih suka menjawab prompt satu bidang setiap kali, jalankan openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr tanpa -subj dan tanpa -addext. OpenSSL akan menanyakan setiap bidang secara bergantian. Saat itu 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 pendaftaran resmi organisasi Anda.
  • State or Province Name (ST): nama lengkap, misalnya California. Jangan disingkat.
  • Locality Name (L): kota, misalnya San Francisco.
  • Organization Name (O): nama resmi terdaftar perusahaan Anda, misalnya GPI Holding LLC. Untuk sertifikat Domain Validation, Anda dapat mengisi NA.
  • Organizational Unit Name (OU): bidang ini sudah tidak digunakan lagi 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 merupakan 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 menggantikan) permintaan tanpa itu, sehingga jalur yang direkomendasikan adalah perintah inline -subj ditambah -addext di atas.

Langkah 3: Temukan file Anda

Tampilkan 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. Ini adalah file yang Anda kirimkan ke penyedia SSL.

Batasi kunci privat agar hanya pemilik file yang dapat membacanya:

chmod 600 yourdomain.key

Langkah 4: Verifikasi CSR (opsional, tetapi disarankan)

Sebelum mengirimkannya, periksa apakah CSR memuat subjek dan SAN yang benar dan bahwa 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 nama host yang Anda harapkan, dan bahwa pemeriksaan tanda tangan menampilkan verify OK. Algoritma tanda tangan seharusnya menunjukkan sha256WithRSAEncryption (atau ecdsa-with-SHA256 untuk kunci ECDSA). Jika Anda lebih suka tidak menggunakan baris perintah, tempelkan CSR ke CSR decoder online kami untuk membaca bidang yang sama di browser.

Langkah 5: Kirimkan 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 tersebut, 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 sesuai di server.

Jika Anda lebih suka tidak menggunakan baris perintah, Anda juga dapat membuat permintaan tersebut dengan CSR Generator online kami. Perhatikan bahwa alat ini membuat kunci privat di browser Anda, jadi simpan kunci itu sendiri dan pindahkan ke server.

Setelah CA Anda memvalidasi permintaan tersebut, Anda akan menerima sertifikat Anda. Bergantung pada tingkat validasinya, hal ini memerlukan waktu beberapa menit untuk Domain Validation, atau hingga beberapa hari kerja untuk Business Validation dan Extended Validation.

Langkah 6: Pasang sertifikat di Apache

Setelah sertifikat diterbitkan, letakkan sertifikat yang diterbitkan (termasuk intermediate mana pun yang digabungkan menjadi satu file fullchain) dan kunci privat di server, lalu arahkan Apache ke file-file tersebut di virtual host situs Anda:

SSLCertificateFile    /etc/ssl/yourdomain/fullchain.crt
SSLCertificateKeyFile /etc/ssl/yourdomain/yourdomain.key

Apache modern (2.4.8 dan yang lebih baru) membaca sertifikat leaf dan intermediate mana pun dari satu file yang diberikan ke SSLCertificateFile, jadi gabungkan sertifikat Anda dan bundel CA menjadi satu file. Direktif SSLCertificateChainFile yang lama sudah tidak digunakan lagi dan tidak boleh digunakan pada Apache saat ini. Uji konfigurasi dengan apachectl configtest dan muat ulang Apache untuk menerapkan perubahan tersebut. Untuk alur kerja lengkapnya, lihat panduan kami tentang cara memasang sertifikat SSL di Apache.

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.