Panduan ini diadaptasi daripada “How to create an HTTPS certificate for localhost domains”, bertujuan mengaktifkan sokongan HTTPS pada domain yang menghala ke alamat IP 127.0.0.1, iaitu localhost, audio.loc dan laravel.loc.

Semua fail berkaitan pensijilan ini disimpan dalam satu direktori khas: /etc/nginx/ssl.

Sila ubah nilai negara, negeri, bandar dan nama entiti dalam parameter pensijilan mengikut keperluan anda.

Persediaan Direktori

  • Cipta direktori dan tukar ke dalamnya:
    bash
    mkdir -p /etc/nginx/ssl && cd /etc/nginx/ssl

Sijil Akar (Root CA)

  • Jana sijil akar (Root CA) yang ditandatangani sendiri:

    bash
    openssl req -out RootCA.pem -noenc -keyout RootCA.key \
      -x509 -days 365 -subj "/C=MY/CN=Local-Root-CA"
    • Sijil ini adalah dalam format X.509 dan sah selama setahun.
    • Kunci peribadi tidak dienkripsi (tiada kata laluan diminta semasa penjanaan atau ketika diakses).
    • RootCA.pem mengandungi sijil akar, manakala RootCA.key menyimpan kunci peribadinya.

Konfigurasi OpenSSL untuk Domain Alternatif

  • Cipta fail konfigurasi OpenSSL yang menetapkan nama domain alternatif (subjectAltName):

    /etc/nginx/ssl/domains.ext
    basicConstraints=CA:FALSE
    keyUsage = digitalSignature, keyEncipherment
    subjectAltName = @alt_names
    
    [alt_names]
    DNS.1 = localhost
    DNS.2 = audio.loc
    DNS.3 = laravel.loc
    • Contoh konfigurasi boleh dirujuk dalam “/etc/ssl/openssl.cnf”.
    • Parameter subjectAltName wajib dinyatakan kerana pelayar web moden tidak lagi merujuk kepada nilai Common Name (CN) semata-mata.

Permintaan Sijil (CSR)

  • Jana permintaan sijil (CSR) dan kunci peribadi untuk localhost :

    bash
     openssl req -out localhost.csr -new -noenc -keyout localhost.key \
       -subj "/C=MY/ST=Negeri/L=Bandar/O=Local-Certificates/CN=localhost"
    • Arahan ini bertujuan untuk menghasilkan Certificate Signing Request (CSR) — permintaan sijil bagi domain localhost, bersama kunci peribadi yang tidak dilindungi kata laluan melalui opsyen -noenc.
    • Ia tidak menggunakan opsyen -x509, yang jika digunakan akan terus menjana sijil akhir. Sebaliknya, arahan ini hanya menghasilkan fail permintaan sijil (localhost.csr).
    • Dalam konteks ini, opsyen -new wajib disertakan agar OpenSSL tahu bahawa kita ingin menjana CSR baharu. Jika -new tidak disertakan dan tiada input diberikan melalui -in, OpenSSL akan berhenti dan menunggu input daripada papan kekunci (stdin), sesuatu yang biasanya tidak diingini dalam skrip automasi.

Tanda Tangani CSR

  • Tanda tangani permintaan sijil tersebut menggunakan sijil akar:

    bash
     openssl x509 -in localhost.csr -req -out localhost.crt \
       -days 365 -extfile domains.ext \
       -CA RootCA.pem -CAkey RootCA.key -CAcreateserial
    • Sijil akhir (localhost.crt) ini ditandatangani oleh RootCA.pem menggunakan kunci RootCA.key.
    • Sah selama setahun dan mengandungi domain alternatif seperti yang dinyatakan dalam domains.ext.
    • Fail RootCA.srl turut dijana secara automatik bagi menyimpan nombor bersiri pensijilan seterusnya.
  • Struktur direktori /etc/nginx/ssl selepas penjanaan:

    • domains.ext
    • localhost.crt
    • localhost.csr
    • localhost.key
    • RootCA.key
    • RootCA.pem
    • RootCA.srl
  • Jika anda ingin menambah domain baharu ke dalam sijil, cukup dengan mengemas kini fail domains.ext dan menandatangani semula permintaan sijil (localhost.csr) menggunakan fail nombor siri RootCA.srl yang telah dijana sebelum ini. Contoh perintah:

    bash
     openssl x509 -in localhost.csr -req -out localhost.crt \
       -days 365 -extfile domains.ext \
       -CA RootCA.pem -CAkey RootCA.key -CAserial RootCA.srl

Langkah-langkah Supaya Sijil Dikenali oleh Pelayar Firefox

  1. Benarkan Firefox menggunakan sijil akar yang dipercayai oleh sistem operasi.

    • Layari about:config, cari security.enterprise_roots.enabled, dan tetapkan nilainya kepada true.
  2. Import sijil akar secara manual ke dalam Firefox.

    • Buka about:preferences#privacyCertificatesView CertificatesImport
    • Pilih RootCA.pem dan tandakan “Trust this CA to identify websites." → OK.

Menyemak Maklumat Sijil dan Kunci

bash
# Papar kandungan penuh sesuatu sijil
openssl x509 -in RootCA.pem -noout -text
openssl x509 -in localhost.crt -noout -text

# Papar nombor siri sijil
openssl x509 -in RootCA.pem -noout -serial
openssl x509 -in localhost.crt -noout -serial

# Papar nama subjek sijil
openssl x509 -in RootCA.pem -noout -subject
openssl x509 -in localhost.crt -noout -subject

# Papar nama subjek sijil dalam format RFC2253
openssl x509 -in RootCA.pem -noout -subject -nameopt RFC2253
openssl x509 -in localhost.crt -noout -subject -nameopt RFC2253

# Papar sambungan "Subject Alternative Name" dalam sijil
openssl x509 -in localhost.crt -noout -ext subjectAltName

# Papar komponen-komponen utama kunci peribadi ke skrin (standard output)
openssl pkey -in RootCA.key -noout -text
openssl pkey -in localhost.key -noout -text

Kali terakhir dikemaskini:

Tentang Blog & Penulis

Topik perbincangan dalam blog ini merangkumi Linux dan perisian sumber terbuka, Virtual Machine, serta Typesetting system.
Fokus semasa: Full Stack Development
Minat sampingan: Analisis Data
Bakat tersembunyi hamba: Menyanyi dan melukis.

Sumber dari Wallpaper Cave.