buat sertifikat SSL yang ditandatangani sendiri tepercaya untuk localhost (untuk digunakan dengan Express / Node)

130

Mencoba mengikuti berbagai instruksi tentang membuat sertifikat yang ditandatangani sendiri untuk digunakan dengan localhost, Sebagian besar instruksi tampaknya untuk IIS, tetapi saya mencoba menggunakan Nodejs / Express. Tak satu pun dari mereka berfungsi dengan baik karena sementara sertifikat dipasang, itu tidak dipercaya. inilah yang saya coba yang gagal:

Dapatkah seseorang menawarkan alur kerja yang dapat melakukan ini? Saya bisa mendapatkan sertifikat terpasang, tetapi saya tidak bisa mendapatkan sertifikat untuk dipercaya baik di chrome (v32) atau IE (v10).

EDIT: disarankan dalam komentar bahwa masalahnya ada pada cert-root yang terpercaya. Saya menginstal sertifikat melalui IE tetapi masih belum dipercaya.

JasonS
sumber
Tidak satu pun dari sertifikat yang ditandatangani sendiri yang dapat dipercaya untuk browser web. Mereka tidak ditandatangani oleh otoritas penandatanganan tepercaya.
1
itu tidak benar: Anda dapat memasang sertifikat akar agar sertifikat yang ditandatangani sendiri dipercaya. namun saya tidak bisa melakukan ini dengan benar. Saya membaca bahwa Anda dapat menginstal rantai sertifikat di IE (bukan di chrome), jadi saya mencobanya tetapi masih belum dikenali. Saya tidak tahu apakah itu karena localhost spesial atau jika sertifikat yang ditandatangani sendiri tidak benar.
JasonS
3
Saya tidak pernah mendapatkan sertifikat yang ditandatangani sendiri yang berfungsi dengan browser seperti Chrome. Inilah solusi saya: Saya membuat entri DNS untuk local.MYDOMAIN.com menunjuk ke 127.0.0.1 (localhost) dan kemudian hanya menggunakan sertifikat produksi saya. Ini memiliki manfaat tambahan untuk memastikan tidak ada masalah dengan rantai sertifikat produksi Anda, dll.
JasonS

Jawaban:

86

Jawaban di atas sebagian. Saya telah menghabiskan begitu banyak waktu untuk membuat ini bekerja, itu gila. Catatan untuk diri saya di masa depan, inilah yang perlu Anda lakukan:

Saya sedang mengerjakan Windows 10, dengan Chrome 65. Firefox berperilaku baik - cukup konfirmasi localhost sebagai pengecualian keamanan dan itu akan berfungsi. Chrome tidak:

Langkah 1. di backend Anda, buat folder bernama security. kami akan bekerja di dalamnya.

Langkah 2. buat file konfigurasi permintaan req.cnfdengan nama konten berikut (kredit diberikan ke: @Anshul )

req.cnf:

[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
C = Country initials like US, RO, GE
ST = State
L = Location
O = Organization Name
OU = Organizational Unit 
CN = www.localhost.com
[v3_req]
keyUsage = critical, digitalSignature, keyAgreement
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = www.localhost.com
DNS.2 = localhost.com
DNS.3 = localhost

Penjelasan tentang bidang ini ada di sini .

Langkah 3. arahkan ke folder keamanan di terminal dan ketik perintah berikut:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout cert.key -out cert.pem -config req.cnf -sha256

Langkah 4. kemudian di luar securityfolder, di aplikasi ekspres Anda lakukan sesuatu seperti ini: (kredit diberikan ke @Diego Mello)

backend 
 /security
 /server.js

server.js:

const express = require('express')
const app = express()
const https = require('https')
const fs = require('fs')
const port = 3000

app.get('/', (req, res) => {
    res.send("IT'S WORKING!")
})

const httpsOptions = {
    key: fs.readFileSync('./security/cert.key'),
    cert: fs.readFileSync('./security/cert.pem')
}
const server = https.createServer(httpsOptions, app)
    .listen(port, () => {
        console.log('server running at ' + port)
    })

Langkah 5. mulai server node server.js, dan buka https: // localhost: 3000 .

Pada titik ini kami memiliki pengaturan server. Tetapi browser harus menampilkan pesan peringatan.

Kami perlu mendaftarkan sertifikat yang ditandatangani sendiri, sebagai Otoritas Sertifikat tepercaya CA, di penyimpanan sertifikat chrome / windows. (chrome juga menyimpan ini di windows,)

Langkah 6. buka Dev Tools di chrome, buka panel Keamanan, lalu klik Lihat Sertifikat. masukkan deskripsi gambar di sini

Langkah 7. pergi ke panel Details, klik Copy File, kemudian ketika Certificate Export Wizard muncul, klik Next seperti di bawah ini:

buka detail - salin file - selanjutnya di wizard ekspor

Langkah 8. tinggalkan encoding DER, klik next, pilih Browse, taruh di folder yang mudah diakses seperti Desktop, dan beri nama sertifikat localhost.cer, then click Save and then Finish.. Anda seharusnya dapat melihat sertifikat Anda di Desktop.

Langkah 9. Buka chrome://settings/dengan memasukkannya ke dalam kotak url. Di bawah, klik Advanced / Advanced Options, lalu gulir ke bawah untuk menemukan Manage Certificates.

pilih kelola sertifikat

Langkah 10. Buka panel Otoritas Sertifikasi Root Terpercaya, dan klik impor.

Buka panel Otoritas Sertifikasi Root Terpercaya, dan klik impor

Kami akan mengimpor localhost.cersertifikat yang baru saja kami ekspor pada langkah 8.

Langkah 11. klik browse, cari localhost.cer, biarkan nilai default klik next beberapa kali - sampai peringatan ini muncul, klik yes.

konfirmasi pengecualian keamanan

Langkah 12. tutup semuanya, dan mulai ulang chrome. Kemudian, saat pergi ke https://localhost:3000Anda harus melihat: harus menyukai hijau

AIon
sumber
Hai, saat saya menyelesaikan semua langkah yang saya buka https://localhost:3000dan Chrome berhenti saat memuat. Ada yang tahu apa alasannya?
co. Zohar
@ co.zohar ada pesan di konsol? Tekan crl+shift+iatau F12untuk membuka konsol.
AI pada
1
Jika Anda melakukan ini untuk alamat di jaringan, saya menemukan bahwa menyiapkan DNS sertifikat ke nama host seperti: DNS.1 = server.local Kemudian pada mesin penghubung perbarui file HOSTS untuk mengarahkan alamat IP server ke nama host, misalnya: 192.168.0.50 server.localIni akan memungkinkan sertifikat dan alamat untuk mencocokkan dan memvalidasi sertifikat.
roskelld
@AI di konsol tidak menampilkan apa pun. Halaman itu hanya menunjukkan: "Menunggu localhost ...". Apakah Anda mengonfigurasi sesuatu di file host?
co. Zohar
1
Saya menemukan semi-jawaban untuk pertanyaan saya sendiri: jika Anda mengubah CN dan DNS.1 menjadi sesuatu seperti "local.com" misalnya, dan di setiap komputer yang membutuhkan akses ke server, ubah file etc / hosts ke titik lokal .com ke ip server, ini berfungsi.
TKoL
111

Jalan terpendek. Diuji di MacOS, tetapi mungkin bekerja dengan cara yang sama di OS lain.

Hasilkan pem

> openssl req -x509 -newkey rsa:2048 -keyout keytmp.pem -out cert.pem -days 365

> openssl rsa -in keytmp.pem -out key.pem

Server ekspres Anda

const express = require('express')
const app = express()
const https = require('https')
const fs = require('fs')
const port = 3000

app.get('/', (req, res) => {
  res.send('WORKING!')
})

const httpsOptions = {
  key: fs.readFileSync('./key.pem'),
  cert: fs.readFileSync('./cert.pem')
}
const server = https.createServer(httpsOptions, app).listen(port, () => {
  console.log('server running at ' + port)
})
  • Buka https://localhost:3000di Google Chrome dan Anda akan melihat bahwa itu tidak aman. Namun!
  • Di Alat Pengembang> Keamanan> Lihat Sertifikat: Seret gambar ke desktop Anda dan klik dua kali.
  • Klik 'Tambahkan'
  • Temukan di Keychain Access dan klik dua kali
  • Perluas 'Trust' dan ubah 'When using this certificate' menjadi 'Always trust'.
  • Anda mungkin diminta untuk mengotentikasi.
  • Mulai ulang server Anda.
  • Segarkan browser Anda.
  • Nikmati! :)
Diego Mello
sumber
1
Berikut tautan lain jika Anda ingin melakukannya di Mac: certsimple.com/blog/localhost-ssl-fix .
Yohanes
Cantik! Ini berhasil! Saya ingin menambahkan: Instal OpenSSL dari sini: indy.fulgan.com/SSL/?C=M;O=A . Dapatkan file .cnf dari sini: dan kemudian, konfigurasikan dari sini: gist.githubusercontent.com/pandurang90/dbe6a67339747ef5bacf/raw/… dan konfigurasikan openSSL dari sini: stackoverflow.com/questions/7360602/…
Jose A
2
Saya ingin menambahkannya untuk Chrome 58+, Anda akan menerima pesan kesalahan "Nama Alternatif Subjek hilang". stackoverflow.com/a/42917227/1057052 . Periksa jawaban di bawah untuk bantuan lebih lanjut: stackoverflow.com/a/43666288/1057052 , stackoverflow.com/a/44398368/1057052
Jose A
14
Drag image to your desktop and double click it-> Saya tidak bisa menyeret apapun ke desktop saya, tidak bisa diseret .. Apa imagesebenarnya yang Anda bicarakan tentang bijih?
AI
7
Untuk mengatasi "Nama Alternatif Subjek hilang" di Chrome, Anda dapat melakukan openssl req -newkey rsa:2048 -x509 -nodes -keyout keytmp.pem -new -out cert.pem -subj /CN=localhost -reqexts SAN -extensions SAN -config <(cat /System/Library/OpenSSL/openssl.cnf <(printf '[SAN]\nsubjectAltName=DNS:localhost')) -sha256 -days 3650sebagai pengganti baris pertama yang Anda sarankan. Dan juga yang ini akan mengajukan lebih sedikit pertanyaan dalam prosesnya ...
Michael Litvin
78

Anda dapat mencoba openSSL untuk menghasilkan sertifikat. Coba lihat ini .

Anda akan membutuhkan file .key dan .crt untuk menambahkan HTTPS ke server node JS express. Setelah Anda membuatnya, gunakan kode ini untuk menambahkan HTTPS ke server.

var https = require('https');
var fs = require('fs');
var express = require('express');

var options = {
    key: fs.readFileSync('/etc/apache2/ssl/server.key'),
    cert: fs.readFileSync('/etc/apache2/ssl/server.crt'),
    requestCert: false,
    rejectUnauthorized: false
};


var app = express();

var server = https.createServer(options, app).listen(3000, function(){
    console.log("server started at port 3000");
});

Ini berfungsi dengan baik di mesin lokal saya serta server tempat saya menerapkan ini. Yang saya miliki di server dibeli dari goDaddy tetapi localhost memiliki sertifikat yang ditandatangani sendiri.

Namun, setiap browser membuat kesalahan yang mengatakan bahwa koneksi tidak dipercaya, apakah Anda ingin melanjutkan. Setelah saya klik lanjutkan, itu berfungsi dengan baik.

Jika ada yang pernah melewati kesalahan ini dengan sertifikat yang ditandatangani sendiri, harap jelaskan.

Mars Robertson
sumber
9
Sertifikat Anda masih tidak tepercaya, jadi Anda memiliki masalah yang sama dengan yang saya jelaskan. Saya membutuhkannya agar dipercaya untuk menguji / men-debug layanan web dengan benar.
JasonS
1
Jadi Anda ingin sertifikat ini dipercaya hanya di komputer lokal Anda dan bukan di jaringan?
1
tautan di atas jawaban merekomendasikan enkripsi 3DES 1024 bit, yang sudah ketinggalan zaman. Lebih baik digunakan openssl genrsa -out key.pem 2048untuk kunci yang lebih baik.
steampowered
3
Sertifikat Anda masih belum dipercaya.
Diego Mello
2
kode ekspres di atas berfungsi, menggunakan github.com/FiloSottile/mkcert (bukan openSSL) untuk membuat CA lokal / sertifikat tepercaya. Garis hijau di sepanjang jalan.
som
11

Cara membuat sertifikat SSL untuk localhost: link

openssl genrsa -des3 -out server.key 1024

Anda perlu memasukkan kata sandi di sini yang perlu Anda ketik ulang dalam langkah-langkah berikut

openssl req -new -key server.key -out server.csr

ketika ditanya "Nama Umum" ketik: localhost

openssl x509 -req -days 1024 -in server.csr -signkey server.key -out server.crt
fuma
sumber
1
Ini adalah solusi yang telah saya jelajahi di internet selama 2 jam terakhir. Bagi siapa pun di ubuntu, pindahkan cp server.crt /usr/local/share/ca-certificates/.dan jalankan sudo update-ca-certificatesKemudian permintaan https localhost bekerja di bawah NodeJS 8+. Id juga meningkat1024 to 2048
Salyangoz
6

Inilah yang berhasil untuk saya

di jendela

1) Tambahkan ini ke file% WINDIR% \ System32 \ drivers \ etc \ hosts Anda: 127.0.0.1 localdev.YOURSITE.net (karena browser dengan 'localhost' (untuk skrip lintas sumber)

Windows Vista dan Windows 7 Vista dan Windows 7 menggunakan User Account Control (UAC) sehingga Notepad harus dijalankan sebagai Administrator.

  1. Klik Mulai -> Semua Program -> Aksesori

  2. Klik kanan Notepad dan pilih Run as administrator

  3. Klik Lanjutkan di jendela UAC "Windows membutuhkan izin Anda".

  4. Ketika Notepad terbuka Klik File -> Open

  5. Di kolom nama file, ketik C: \ Windows \ System32 \ Drivers \ etc \ hosts

  6. Klik Buka

  7. Tambahkan ini ke file% WINDIR% \ System32 \ drivers \ etc \ hosts Anda: 127.0.0.1 localdev.YOURSITE.net

  8. Menyimpan

  9. Tutup dan mulai ulang browser

Di Mac atau Linux:

  1. Buka / etc / hosts dengan su izin
  2. Menambahkan 127.0.0.1 localdev.YOURSITE.net
  3. Simpan itu

Saat mengembangkan Anda menggunakan localdev.YOURSITE.net daripada localhost jadi jika Anda menggunakan konfigurasi run / debug di ide Anda, pastikan untuk memperbaruinya.

Gunakan ".YOURSITE.net" sebagai Cookiedomain (dengan titik di awal) saat membuat Cookiem, maka Cookiem harus bekerja dengan semua subdomain.

2) buat sertifikat menggunakan localdev.url itu

TIPS: Jika Anda mengalami masalah dalam membuat sertifikat di windows, gunakan mesin VirtualBox atau Vmware sebagai gantinya.

3) impor sertifikat seperti yang diuraikan di http://www.charlesproxy.com/documentation/using-charles/ssl-certificates/

TroyWorks
sumber
Hai Troy, terima kasih telah membagikan ini. Orang lain harus mengomentari apakah ini berfungsi atau tidak. Solusi saya: Saya akhirnya menambahkan dev.phantomjscloud.com ke file host saya, dan kemudian menggunakan sertifikat produksi saya. Itu hanya berguna jika Anda ingin kunci produksi Anda tersedia di kotak dev Anda, jadi saya pikir solusi Anda masih bisa valid, jika orang lain dapat memverifikasi
JasonS
Ini berfungsi untuk saya dan tim saya, dalam kombinasi cara, mengamankan server lokal ke lokal untuk mengamankan server lokal ke produksi.
TroyWorks
Untuk Windows, konsol git bash berfungsi dengan baik menggunakan perintah openssl dari sini . Hanya perlu menginstal sertifikat root dan Anda dapat membuat beberapa sertifikat khusus situs yang ditandatangani olehnya jika Anda mau.
Jason Goemaat
6

Mkcert dari @FiloSottile membuat proses ini jauh lebih sederhana:

  1. Instal mkcert , ada instruksi untuk macOS / Windows / Linux
  2. mkcert -install untuk membuat CA lokal
  3. mkcert localhost 127.0.0.1 ::1 untuk membuat sertifikat tepercaya untuk localhost di direktori saat ini
  4. Anda menggunakan node (yang tidak menggunakan penyimpanan root sistem), jadi Anda perlu menentukan CA secara eksplisit dalam variabel lingkungan, misalnya:export NODE_EXTRA_CA_CERTS="$(mkcert -CAROOT)/rootCA.pem"
  5. Terakhir, jalankan server ekspres Anda menggunakan pengaturan yang dijelaskan dalam berbagai jawaban lain (misalnya di bawah)
  6. ledakan. localhost berenang dengan warna hijau.

Penyiapan node dasar:

const https = require('https');
const fs = require('fs');
const express = require('express');

const app = express();    
const server = https.createServer({
    key: fs.readFileSync('/XXX/localhost+2-key.pem'), // where's me key?
    cert: fs.readFileSync('/XXX/localhost+2.pem'), // where's me cert?
    requestCert: false,
    rejectUnauthorized: false,
}, app).listen(10443); // get creative
som
sumber
Bekerja dengan sangat baik! Dengan pendekatan ini, kami tidak perlu mendaftarkan sertifikat yang ditandatangani sendiri, sebagai Otoritas Sertifikat tepercaya CA, di penyimpanan sertifikat chrome / windows. Seperti yang disebutkan dalam jawaban lain.
zaheer
4

Jika Anda menggunakan OSX / Chrome, Anda dapat menambahkan sertifikat SSL yang ditandatangani sendiri ke rantai kunci sistem Anda seperti dijelaskan di sini: http://www.robpeck.com/2010/10/google-chrome-mac-os-x-and -sertifikat ssl yang ditandatangani sendiri

Ini adalah proses manual, tapi akhirnya saya berhasil. Pastikan saja Common Name (CN) disetel ke "localhost" (tanpa port) dan setelah sertifikat ditambahkan pastikan semua opsi Kepercayaan pada sertifikat disetel ke "Selalu Percayai". Pastikan juga Anda menambahkannya ke rantai kunci "Sistem" dan bukan rantai kunci "masuk".

Vijay Rudraraju
sumber
Dia menyebut IE, yang artinya dia menggunakan Windows.
2-bit
3

Jika Anda menggunakan node, mengapa tidak membuatnya dengan node? Modul ini tampaknya memiliki fitur yang cukup lengkap:

Perhatikan bahwa saya tidak akan menghasilkan dengan cepat. Buat dengan beberapa jenis skrip build sehingga Anda memiliki sertifikat dan kunci yang konsisten. Jika tidak, Anda harus mengotorisasi sertifikat yang ditandatangani sendiri yang baru dibuat setiap saat.

BT
sumber
3

Beberapa jawaban yang diposting memiliki potongan yang sangat berguna bagi saya untuk mengatasi masalah ini juga. Namun, saya juga tertarik dengan minimum jumlah langkah dan, idealnya, menghindari OpenSSL (di Windows 10).

Jadi, satu bagian penting dari jawaban (kredit: @ TroyWorks ) adalah Anda perlu mengedit file HOSTS Anda untuk membuat server fiktif, dan memetakannya ke 127.0.0.1. Ini mengasumsikan Anda akan melakukan pembangunan lokal.

Dalam kasus saya, saya menggunakan sertifikat SS untuk mengamankan websocket di NodeJS, dan soket itu terhubung secara terprogram (bukan melalui browser). Jadi bagi saya, sangat penting bahwa sertifikat diterima tanpa peringatan atau kesalahan, dan bagian penting di sana adalah mendapatkan sertifikat yang dibuat dengan CN yang tepat (dan tentu saja menerima sertifikat tersebut ke dalam Otoritas Tepercaya, seperti yang dijelaskan di bagian lain dalam jawaban) . Menggunakan IIS untuk membuat sertifikat yang ditandatangani sendiri tidak akan membuat CN yang tepat, jadi saya menemukan perintah sederhana berikut menggunakan Powershell:

New-SelfSignedCertificate -DnsName "gandalf.dummy.dev" -FriendlyName "gandalf" -CertStoreLocation "cert:\LocalMachine\My"

Ini harus dijalankan di konsol Admin PS, tetapi berfungsi dengan mudah, dan menempatkan sertifikat ke bagian "Pribadi" di penyimpanan sertifikat LocalMachine. Anda dapat memverifikasi itu dibuat dengan menjalankan:

ls cert:\LocalMachine\My 

Untuk mempercayainya, cukup salin ini dan tempel ke "Otoritas Sertifikasi Root Terpercaya" menggunakan Manajer Sertifikat (pastikan Anda melihat sertifikat Mesin Lokal, bukan Pengguna Saat Ini!).

Jika Anda mengikat ke sertifikat ini di IIS, Anda harus dapat menekan https://gandalf.dummy.dev/ dan mendapatkan koneksi aman tanpa peringatan apa pun.

Bagian terakhir, menggunakan ini di NodeJS, dijelaskan di atas dan dalam jawaban SO lainnya, jadi saya hanya akan menambahkannya di Windows, lebih mudah untuk bekerja dengan file pfx yang menggabungkan sertifikat dan kunci pribadi. Anda dapat mengekspor pfx dengan mudah dari Manajer Sertifikat, tetapi itu memengaruhi cara Anda menggunakannya di NodeJS. Saat membuat instance Server menggunakan modul 'https', opsi yang akan Anda gunakan (sebagai pengganti 'key' dan 'cert') adalah 'pfx' dan 'passphrase', seperti di:

var https = require('https');
var options = { 
    pfx: fs.readFileSync('mypfxfile'), 
    passphrase: 'foo' 
};
var server = https.createServer(options);
tomo
sumber
2

pada windows saya membuat iis development certificate dipercaya dengan menggunakan MMC (start> run> mmc), kemudian menambahkan sertifikat snapin, memilih "komputer lokal" dan menerima default. Setelah snapip sertifikat ditambahkan, perluas pohon sertifikat komputer lokal untuk melihat di bawah Personal, pilih sertifikat localhost, klik kanan> semua tugas> ekspor. terima semua default di wizard ekspor.

Setelah file itu disimpan, perluas sertifikat tepercaya dan mulailah mengimpor sertifikat yang baru saja Anda ekspor. https://localhostsekarang dipercaya di chrome tanpa peringatan keamanan.

Saya menggunakan panduan resolusi # 2 ini dari blog MSDN, op juga membagikan tautan dalam pertanyaannya tentang itu juga harus menggunakan MMC tetapi ini berhasil untuk saya. resolusi # 2

jamur
sumber
2

Pergi ke: chrome://flags/

Aktifkan: Izinkan sertifikat yang tidak valid untuk sumber daya yang dimuat dari localhost.

Anda tidak memiliki keamanan hijau, tetapi Anda selalu diizinkan untuk https: // localhost di chrome.

Alphapage
sumber
2

Ada lebih banyak aspek untuk ini.

Anda dapat mencapai TLS (beberapa terus mengatakan SSL) dengan sertifikat, ditandatangani sendiri atau tidak.

Untuk memiliki bilah hijau untuk sertifikat yang ditandatangani sendiri, Anda juga harus menjadi Otoritas Sertifikat (CA). Aspek ini hilang di sebagian besar sumber daya yang saya temukan dalam perjalanan saya untuk mencapai bilah hijau dalam pengaturan pengembangan lokal saya. Menjadi CA semudah membuat sertifikat.

Sumber daya ini mencakup pembuatan sertifikat CA dan sertifikat Server dan mengakibatkan penyiapan saya menampilkan bilah hijau di localhost Chrome, Firefox, dan Edge: https://ram.k0a1a.net/self-signed_https_cert_after_chrome_58

Harap diperhatikan: di Chrome Anda perlu menambahkan Sertifikat CA ke otoritas tepercaya Anda.

Jos
sumber
0

Jika Anda perlu melangkah lebih jauh dari langkah rinci @ alon dan juga membuat ca yang ditandatangani sendiri:

https.createServer({
  key: fs.readFileSync(NODE_SSL_KEY),
  cert: fs.readFileSync(NODE_SSL_CERT),
  ca: fs.readFileSync(NODE_SSL_CA),
}, app).listen(PORT, () => {});

package.json

"setup:https": "openssl genrsa -out src/server/ssl/localhost.key 2048
&& openssl req -new -x509 -key src/server/ssl/localhost.key -out src/server/ssl/localhost.crt -config src/server/ssl/localhost.cnf
&& openssl req -new -out src/server/ssl/localhost.csr -config src/server/ssl/localhost.cnf
&& openssl x509 -req -in src/server/ssl/localhost.csr -CA src/server/ssl/localhost.crt -CAkey src/server/ssl/localhost.key -CAcreateserial -out src/server/ssl/ca.crt",

Menggunakan localhost.cnf seperti yang dijelaskan:

[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
C = UK
ST = State
L = Location
O = Organization Name
OU = Organizational Unit 
CN = www.localhost.com
[v3_req]
keyUsage = critical, digitalSignature, keyAgreement
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = www.localhost.com
DNS.2 = localhost.com
DNS.3 = localhost
mumi
sumber