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?

chris
sumber
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);
Ben Flynn
sumber
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

Ogglas
sumber
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

Auri Rahimzadeh
sumber
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.

app.developer.henry
sumber
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

David Burela
sumber
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.

cederlof
sumber
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

Phil Klein
sumber
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
1

Anda bisa mencoba mkcert.

macos: buatan install mkcert

clark yu
sumber
0

Jika Anda menggunakan Visual Studio, ada cara mudah untuk menyiapkan dan mengaktifkan SSL menggunakan IIS Express yang dijelaskan di sini

Amir Chatrbahr
sumber