Jana Sijil HTTPS untuk Domain yang Berasaskan ’localhost'
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
.
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, manakalaRootCA.key
menyimpan kunci peribadinya.
- Sijil ini adalah dalam format
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 nilaiCommon Name (CN)
semata-mata.
- Contoh konfigurasi boleh dirujuk dalam “
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.
- Arahan ini bertujuan untuk menghasilkan Certificate Signing Request (CSR) — permintaan sijil bagi domain
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 olehRootCA.pem
menggunakan kunciRootCA.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.
- Sijil akhir (
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 siriRootCA.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
Benarkan
Firefox
menggunakan sijil akar yang dipercayai oleh sistem operasi.- Layari
about:config
, carisecurity.enterprise_roots.enabled
, dan tetapkan nilainya kepadatrue
.
- Layari
Import sijil akar secara manual ke dalam Firefox.
- Buka
about:preferences#privacy
→Certificates
→View Certificates
→Import
- Pilih
RootCA.pem
dan tandakan “Trust this CA to identify websites." → OK.
- Buka
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