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:
bashmkdir -p /etc/nginx/ssl && cd /etc/nginx/ssl
Sijil Akar (Root CA)
Jana sijil akar (Root CA) yang ditandatangani sendiri:
bashopenssl req -out RootCA.pem -noenc -keyout RootCA.key \ -x509 -days 365 -subj "/C=MY/CN=Local-Root-CA"- Sijil ini adalah dalam format
X.509dan sah selama setahun. - Kunci peribadi tidak dienkripsi (tiada kata laluan diminta semasa penjanaan atau ketika diakses).
RootCA.pemmengandungi sijil akar, manakalaRootCA.keymenyimpan kunci peribadinya.
- Sijil ini adalah dalam format
Konfigurasi OpenSSL untuk Domain Alternatif
Cipta fail konfigurasi
OpenSSLyang menetapkan nama domain alternatif (subjectAltName):/etc/nginx/ssl/domains.extbasicConstraints=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
subjectAltNamewajib 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:bashopenssl 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
-newwajib disertakan agar OpenSSL tahu bahawa kita ingin menjana CSR baharu. Jika-newtidak 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:
bashopenssl 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.pemmenggunakan kunciRootCA.key. - Sah selama setahun dan mengandungi domain alternatif seperti yang dinyatakan dalam
domains.ext. - Fail
RootCA.srlturut dijana secara automatik bagi menyimpan nombor bersiri pensijilan seterusnya.
- Sijil akhir (
Struktur direktori
/etc/nginx/sslselepas 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.extdan menandatangani semula permintaan sijil (localhost.csr) menggunakan fail nombor siriRootCA.srlyang telah dijana sebelum ini. Contoh perintah:bashopenssl 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
Firefoxmenggunakan 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.pemdan 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