Bagaimana saya bisa membuat sertifikat yang ditandatangani sendiri untuk localhost?


134

Saya telah melalui langkah-langkah terperinci dalam Bagaimana Anda menggunakan https / SSL di localhost? tetapi ini mengatur sertifikat yang ditandatangani sendiri untuk nama mesin saya, dan ketika menjelajahinya melalui https: // localhost saya menerima peringatan IE.

Apakah ada cara untuk membuat sertifikat yang ditandatangani sendiri untuk "localhost" untuk menghindari peringatan ini?


Apakah Anda menginstal sertifikat sebagai CA?
vcsjones

Saya mengikuti proses untuk menginstal sertifikat yang ditandatangani sendiri ke IIS di bawah Win7. Tapi itu menciptakan sertifikat untuk "nama perangkat saya", dan saya perlu satu untuk "localhost".
chris

1
Hai! Pertimbangkan menetapkan jawaban Auri sebagai jawaban utama karena makecert sudah tidak digunakan lagi. Tautan ke jawabannya: stackoverflow.com/a/44164653/1461602
Tormod Haugene

Jawaban:


81

Meskipun posting ini ditandai untuk Windows, itu adalah pertanyaan yang relevan pada OS X yang belum saya lihat jawabannya di tempat lain. Berikut adalah langkah-langkah untuk membuat sertifikat yang ditandatangani sendiri untuk localhost di OS X :

# Use 'localhost' for the 'Common name'
openssl req -x509 -sha256 -nodes -newkey rsa:2048 -days 365 -keyout localhost.key -out localhost.crt

# Add the cert to your keychain
open localhost.crt

Dalam Keychain Access, klik dua kali pada sertifikat localhost baru ini. Luaskan panah di sebelah "Percaya" dan pilih "Selalu percaya". Chrome dan Safari sekarang harus mempercayai sertifikat ini. Misalnya, jika Anda ingin menggunakan sertifikat ini dengan node.js:

var options = {
    key: fs.readFileSync('/path/to/localhost.key').toString(),
    cert: fs.readFileSync('/path/to/localhost.crt').toString(),
    ciphers: 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA384',
    honorCipherOrder: true,
    secureProtocol: 'TLSv1_2_method'
};

var server = require('https').createServer(options, app);

2
Perintah pertama,, ssh-keygentidak diperlukan karena perintah openssl juga membuat kunci baru (dan menimpa yang dibuat oleh ssh).
Félix Saparelli

7
Anda juga dapat mengotomatisasi proses sepenuhnya dengan menambahkan -subj '/CN=localhost'ke opensslargumen.
Félix Saparelli

8
Agar OS X memercayainya dari baris perintah alih-alih mengklik, Anda dapat melakukan:sudo security add-trusted-cert -p ssl -d -r trustRoot -k ~/Library/Keychains/login.keychain localhost.crt
philfreo

1
Juga relevan untuk linux. Terima kasih banyak.
Marcel

1
Saya mengikuti semua langkah ini dan saya mendapatkan ERR_SSL_VERSION_OR_CIPHER_MISMATCHdi Chrome 60 dan Safari 10.1.2 juga tidak suka.
styfle

61

Karena pertanyaan ini ditandai dengan IISdan saya tidak dapat menemukan jawaban yang bagus tentang cara mendapatkan sertifikat tepercaya, saya akan memberikan 2 sen saya tentang itu:

Pertama-tama gunakan perintah dari @AuriRahimzadeh di PowerShell sebagai administrator:

New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"

Ini bagus tapi sertifikatnya tidak tepercaya dan akan menghasilkan kesalahan berikut. Itu karena tidak diinstal pada Windows Trusted Root Certification Authorities.

masukkan deskripsi gambar di sini

Pecahkan ini dengan memulai mmc.exe.

Lalu pergi ke:

File -> Tambah atau Hapus Snap-in -> Sertifikat -> Tambah -> Akun komputer -> Komputer lokal. Klik Selesai.

Buka Personalfolder dan Anda akan melihat localhostsertifikat Anda :

masukkan deskripsi gambar di sini

Salin sertifikat ke dalam Trusted Root Certification Authorities - Certificatesfolder.

Langkah terakhir adalah membuka Internet Information Services (IIS) Manageratau sederhana inetmgr.exe. Dari sana pergi ke situs Anda, pilih Bindings...dan Add...atau Edit.... Atur httpsdan pilih sertifikat Anda dari drop down.

masukkan deskripsi gambar di sini

Sertifikat Anda sekarang dipercaya:

masukkan deskripsi gambar di sini


9
Ini harus menjadi jawaban yang diterima! Berhasil! Jika Anda mengacau dengan localhost dan sertifikat tepercaya. Pastikan untuk menghapus semua sertifikat localhost lama (melalui konsol mmc dan IIS (server terkelola teratas)
Tuan Jinn

Terima kasih! Ada begitu banyak jawaban SO dan posting blog tentang topik ini, tetapi sangat sedikit pembicaraan tentang masalah kepercayaan sertifikat. Kiat: Mungkin Anda harus menjelaskan mengapa Anda tidak menggunakan port SSL standar 443? Saya kira itu karena port ini sering diambil oleh beberapa proses lain.
HoffZ

Jawaban yang sangat bagus, dan bekerja dengan baik pada IIS pada tahun 2020. Terima kasih banyak!
alessandrocb

Juga berfungsi untuk alias dalam file host
Zef

52

Anda dapat menggunakan PowerShell untuk menghasilkan sertifikat yang ditandatangani sendiri dengan cmdlet sertifikat yang ditandatangani sendiri:

New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"

Catatan: makecert.exe sudah usang.

Referensi Cmdlet: https://technet.microsoft.com/itpro/powershell/windows/pkiclient/new-selfsignedcertificate


Ini harus menjadi jawaban pada 2017.
Tormod Haugene

1
Bagi mereka yang mengikuti dan tidak tahu bagaimana cara menginstal sertifikat yang dihasilkan, ikuti langkah-langkah dalam video ini, itu berhasil untuk saya! youtube.com/watch?v=y4uKPUFmSZ0
Eric Brown - Cal

6
di mana file kunci dan crt disimpan?
woojoo666

1
@ woojoo666 dengan -KeyLocationtanda Anda dapat menentukan lokasi.
hamid

46

Setelah menghabiskan banyak waktu untuk masalah ini, saya menemukan setiap kali saya mengikuti saran menggunakan IIS untuk membuat sertifikat yang ditandatangani sendiri, saya menemukan bahwa Diterbitkan ke dan Diterbitkan oleh tidak benar. SelfSSL.exe adalah kunci untuk menyelesaikan masalah ini. Situs web berikut tidak hanya menyediakan pendekatan langkah demi langkah untuk membuat sertifikat yang ditandatangani sendiri, tetapi juga menyelesaikan Masalah yang Dikeluarkan dan Dikeluarkan oleh masalah. Ini adalah solusi terbaik yang saya temukan untuk membuat sertifikat yang ditandatangani sendiri. Jika Anda lebih suka melihat tutorial yang sama dalam bentuk video klik di sini .

Contoh penggunaan SelfSSL akan terlihat seperti berikut:

SelfSSL /N:CN=YourWebsite.com / V: 1000 / S: 2

SelfSSL /? akan memberikan daftar parameter dengan penjelasan.


Artikel oleh RobBagby.com bekerja dengan sempurna untuk saya. Bagus temukan Henry.
cymorg

MEGA! Video itu memiliki kualitas buruk tetapi memiliki semua yang dibutuhkan.
tonco

2
Tautan ke situs robbagby sudah mati. Lihat jawaban saya untuk 2 tutorial youtube berkualitas tinggi oleh CodeCowboyOrg
Moses Machua

Jawaban yang diedit untuk tautan ke arsip artikel Wayback di robbagby.com.
Prometheus

23

Jika Anda mencoba untuk membuat sertifikat yang ditandatangani sendiri yang memungkinkan Anda pergi, http://localhost/mysite maka di sini adalah cara untuk membuatnya

makecert -r -n "CN=localhost" -b 01/01/2000 -e 01/01/2099 -eku 1.3.6.1.5.5.7.3.1 -sv localhost.pvk localhost.cer
cert2spc localhost.cer localhost.spc
pvk2pfx -pvk localhost.pvk -spc localhost.spc -pfx localhost.pfx

Dari http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/32bc5a61-1f7b-4545-a514-a11652f11200


2
kemana sertifikat saya pergi: o tidak dalam C: \ Windows \ system32
EaterOfCode

2
By the way, alat makecert.exe digunakan melalui prompt Visual Studio Command untuk pembaca masa depan. Anda juga bisa menggunakan Perangkat Kit Sumber Daya Layanan Informasi Internet (IIS) dan menginstal SelfSSL 1.0. microsoft.com/downloads/en/…
atconway

3
Meskipun jawaban cepat itu bagus, mereka tidak selalu membantu. "Sertifikat tidak dapat digunakan sebagai sertifikat server SSL" adalah kesalahan yang saya lihat di IIS7. Op juga menyebutkan peringatan browser & bukan "Bagaimana cara membuat sertifikat"?
cmroanirgo

Anda dapat menghilangkan parameter cert2spc langkah karena pvk2pfx -spc menerima .spc dan
.cer

1
@EaterOfCode Mine berada di C: \ Windows \ SysWOW64
Bay Sola

10

Saya akan merekomendasikan alat Pluralsight untuk membuat sertifikat yang ditandatangani sendiri: http://blog.pluralsight.com/selfcert-create-a-self-signed-certificate-interactively-gui-atau-programmatically-in-net

Jadikan sertifikat Anda sebagai .pfx dan impor ke IIS. Dan menambahkannya sebagai otoritas sertifikat root tepercaya.


1
Setelah berkeliaran dengan mencoba semua jenis "keajaiban" PowerShell dan hal-hal lain yang tidak berfungsi - alat Pluralsight menghasilkan skrip yang berfungsi untuk saya dalam 30 detik rata, dan itu termasuk waktu yang dibutuhkan untuk makan pizza (+ unduh dan ekstrak alat ini, maksud saya). Karena saya masih menjalankan Windows 7 pada laptop lama ini - ini adalah solusi sempurna bagi saya, terima kasih!
Ade

1

Iya dan tidak. Sertifikat yang ditandatangani sendiri menghasilkan pesan peringatan itu karena sertifikat itu tidak ditandatangani oleh Otoritas Sertifikat tepercaya. Ada beberapa opsi yang dapat Anda pertimbangkan untuk menghapus peringatan ini di mesin lokal Anda. Lihat jawaban berperingkat tertinggi untuk pertanyaan ini untuk detail:

Apa yang harus saya lakukan untuk mendapatkan Internet Explorer 8 untuk menerima sertifikat yang ditandatangani sendiri?

Semoga ini membantu!


EDIT:

Maaf, pada awalnya saya tidak menyadari bahwa Anda dibatasi ke localhost. Anda dapat mencoba mengikuti arahan pada tautan di bawah ini untuk "Menghasilkan Sertifikat yang Ditandatangani Sendiri dengan Nama Umum yang Benar."

http://www.sslshopper.com/article-how-to-create-a-self-signed-certificate-in-iis-7.html


Tidak, pesan peringatan ada di sana karena URL ( localhost ) tidak cocok dengan nama sertifikat, yang dikeluarkan dengan nama mesin. Jika saya beralih ke nama file saya maka saya tidak mendapatkan kesalahan. Sayangnya, saya harus menggunakan localhost dan bukan nama mesin karena alasan yang tidak mempengaruhi pertanyaan.
chris


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.