Saya harus memecahkan teka-teki melalui sertifikat yang ditandatangani sendiri di Windows dengan menggabungkan potongan-potongan dari jawaban yang diberikan dan sumber daya lebih lanjut. Ini panduan saya sendiri (dan semoga selesai). Semoga ini akan menghindarkan Anda dari kurva belajar saya yang menyakitkan. Ini juga berisi info tentang topik terkait yang akan muncul cepat atau lambat saat Anda membuat sertifikat Anda sendiri.
Buat sertifikat yang ditandatangani sendiri di Windows 10 dan yang lebih lama
Jangan gunakan makecert.exe. Ini sudah tidak digunakan lagi oleh Microsoft.
Cara modern menggunakan perintah Powershell.
Windows 10:
Buka Powershell dengan hak istimewa Administrator:
New-SelfSignedCertificate -DnsName "*.dev.local", "dev.local", "localhost" -CertStoreLocation cert:\LocalMachine\My -FriendlyName "Dev Cert *.dev.local, dev.local, localhost" -NotAfter (Get-Date).AddYears(15)
Windows 8, Windows Server 2012 R2:
Di Powershell pada sistem ini, parameter -FriendlyName dan -NotAfter tidak ada. Hapus saja dari baris perintah di atas.
Buka Powershell dengan hak istimewa Administrator:
New-SelfSignedCertificate -DnsName "*.dev.local", "dev.local", "localhost" -CertStoreLocation cert:\LocalMachine\My
Alternatifnya adalah menggunakan metode untuk versi Windows yang lebih lama di bawah ini, yang memungkinkan Anda menggunakan semua fitur Win 10 untuk pembuatan sertifikat ...
Versi Windows yang lebih lama:
Rekomendasi saya untuk versi Windows yang lebih lama adalah membuat sertifikat pada mesin Win 10, mengekspornya ke file .PFX menggunakan contoh mmc (lihat "Percayai sertifikat" di bawah) dan impor ke penyimpanan sertifikat pada mesin target dengan OS Windows lama. Untuk mengimpor sertifikat, JANGAN klik kanan. Meskipun ada item "Impor sertifikat" dalam menu konteks, gagal semua uji coba saya untuk menggunakannya di Win Server 2008. Alih-alih membuka contoh mmc lain di mesin target, arahkan ke "Sertifikat (Komputer Lokal) / Pribadi / Sertifikat" , klik kanan di panel tengah dan pilih Semua tugas → Impor.
Sertifikat yang dihasilkan
Kedua perintah di atas membuat sertifikat untuk domain localhost
dan *.dev.local
.
Versi Win10 juga memiliki waktu hidup 15 tahun dan nama tampilan yang dapat dibaca "Dev Cert * .dev.local, dev.local, localhost".
Pembaruan: Jika Anda memberikan beberapa entri nama host di parameter-DnsName
(seperti yang ditunjukkan di atas), entri pertama ini akan menjadi Subjek domain (Nama Umum AKA). Daftar lengkap semua entri nama host akan disimpan di bidang Nama Alternatif Subjek (SAN) sertifikat. (Terima kasih kepada @BenSewards karena telah menunjukkannya.)
Setelah pembuatan, sertifikat akan segera tersedia di semua pengikatan HTTPS IIS (petunjuk di bawah).
Percayai sertifikatnya
Sertifikat baru bukan bagian dari rantai kepercayaan dan karenanya tidak dianggap dapat dipercaya oleh browser mana pun. Untuk mengubahnya, kami akan menyalin sertifikat ke penyimpanan sertifikat untuk CA Root Terpercaya di komputer Anda:
Buka mmc.exe, File → Add / Remove Snap-In → pilih "Certificates" di kolom kiri → Add → pilih "Computer Account" → Next → "Local Computer ..." → Finish → OK
Di kolom kiri pilih "Sertifikat (Komputer Lokal) / Pribadi / Sertifikat".
Temukan sertifikat yang baru dibuat (di Win 10 kolom "Nama ramah" dapat membantu).
Pilih sertifikat ini dan tekan Ctrl-C untuk menyalinnya ke clipboard.
Di kolom kiri pilih "Certificates (Local Computer) / Trusted Root CAs / Certificates".
Tekan Ctrl-V untuk menempelkan sertifikat Anda ke penyimpanan ini.
Sertifikat akan muncul dalam daftar Trusted Root Authorities dan sekarang dianggap dapat dipercaya.
Gunakan di IIS
Sekarang Anda dapat pergi ke IIS Manager, pilih binding dari situs web lokal → Tambah → https → masukkan nama host formulir myname.dev.local
(sertifikat Anda hanya berlaku untuk *.dev.local
) dan pilih sertifikat baru → OK.
Tambahkan ke host
Tambahkan juga nama host Anda ke C: \ Windows \ System32 \ drivers \ etc \ hosts:
127.0.0.1 myname.dev.local
Senang
Sekarang Chrome dan IE harus memperlakukan sertifikat sebagai dapat dipercaya dan memuat situs web Anda saat Anda membuka https://myname.dev.local
.
Firefox memiliki penyimpanan sertifikatnya sendiri. Untuk menambahkan sertifikat Anda di sini, Anda harus membuka situs web Anda di FF dan menambahkannya ke pengecualian saat FF memperingatkan Anda tentang sertifikat tersebut.
Untuk browser Edge mungkin ada lebih banyak tindakan yang diperlukan (lihat lebih jauh di bawah).
Uji sertifikatnya
Untuk menguji sertifikat Anda, Firefox adalah pilihan terbaik Anda. (Percayalah, saya sendiri adalah penggemar Chrome, tetapi FF lebih baik dalam hal ini.)
Berikut alasannya:
- Firefox menggunakan cache SSL-nya sendiri, yang dihapus saat shift-reload. Jadi setiap perubahan pada sertifikat situs web lokal Anda akan segera tercermin dalam peringatan FF, sementara browser lain mungkin memerlukan restart atau pembersihan manual dari cache Windows SSL.
- Juga FF memberi Anda beberapa petunjuk berharga untuk memeriksa validitas sertifikat Anda: Klik Advanced ketika FF menunjukkan peringatan sertifikatnya. FF akan menampilkan blok teks singkat dengan satu atau lebih kemungkinan peringatan di garis tengah blok teks:
Sertifikat tidak dipercaya karena ditandatangani sendiri.
Peringatan ini benar! Seperti disebutkan di atas, Firefox tidak menggunakan penyimpanan sertifikat Windows dan hanya akan mempercayai sertifikat ini, jika Anda menambahkan pengecualian untuk itu. Tombol untuk melakukan ini tepat di bawah peringatan.
Sertifikat tidak valid untuk nama ...
Peringatan ini menunjukkan, bahwa Anda melakukan sesuatu yang salah. Domain (karakter pengganti) sertifikat Anda tidak cocok dengan domain situs web Anda. Masalahnya harus diselesaikan dengan mengubah (sub-) domain situs web Anda atau dengan menerbitkan sertifikat baru yang cocok. Sebenarnya Anda dapat menambahkan pengecualian di FF meskipun sertifikat tidak cocok, tetapi Anda tidak akan pernah mendapatkan simbol gembok hijau di Chrome dengan kombinasi seperti itu.
Firefox dapat menampilkan banyak peringatan sertifikat bagus dan mudah dipahami lainnya di tempat ini, seperti sertifikat kedaluwarsa, sertifikat dengan algoritme penandatanganan yang kedaluwarsa, dll. Saya tidak menemukan browser lain yang memberi saya tingkat umpan balik untuk mengatasi masalah.
Pola (sub-) domain mana yang harus saya pilih untuk dikembangkan?
Dalam perintah New-SelfSignedCertificate di atas, kami menggunakan domain wildcard *.dev.local
.
Anda mungkin berpikir: Mengapa tidak digunakan *.local
?
Alasan sederhana: Ini ilegal sebagai domain wildcard.
Sertifikat karakter pengganti harus berisi setidaknya nama domain tingkat kedua.
Jadi, bentuk domain *.local
bagus untuk mengembangkan situs web HTTP. Tetapi tidak terlalu banyak untuk HTTPS, karena Anda akan dipaksa untuk menerbitkan sertifikat baru yang cocok untuk setiap proyek baru yang Anda mulai.
Catatan penting:
- Domain host yang valid HANYA boleh berisi huruf a sampai z, angka, tanda hubung, dan titik. Tidak boleh ada garis bawah! Beberapa browser sangat pilih-pilih tentang detail ini dan dapat menyulitkan Anda ketika mereka dengan keras kepala menolak untuk mencocokkan domain
motör_head.dev.local
Anda dengan pola wildcard Anda *.dev.local
. Mereka akan mematuhi saat Anda beralih ke motoer-head.dev.local
.
- Karakter pengganti dalam sertifikat hanya akan cocok dengan SATU label (= bagian di antara dua titik) dalam domain, tidak lebih.
*.dev.local
cocok myname.dev.local
tapi TIDAK other.myname.dev.local
!
- Karakter bebas multi level (
*.*.dev.local
) TIDAK dimungkinkan dalam sertifikat. Jadi other.myname.dev.local
hanya bisa dicakup oleh wildcard berupa *.myname.dev.local
. Akibatnya, yang terbaik adalah tidak menggunakan bagian domain tingkat keempat. Masukkan semua variasi Anda ke bagian tingkat ketiga. Dengan cara ini Anda akan mendapatkan satu sertifikat untuk semua situs dev Anda.
Masalah dengan Edge
Ini bukan tentang sertifikat yang ditandatangani sendiri, tetapi masih terkait dengan keseluruhan proses:
Setelah mengikuti langkah-langkah di atas, Edge mungkin tidak menampilkan konten apa pun saat Anda membuka myname.dev.local
.
Alasannya adalah fitur karakteristik dari manajemen jaringan Windows 10 untuk Aplikasi Modern, yang disebut "Isolasi Jaringan".
Untuk mengatasi masalah itu, buka prompt perintah dengan hak istimewa Administrator dan masukkan perintah berikut sekali:
CheckNetIsolation LoopbackExempt -a -n=Microsoft.MicrosoftEdge_8wekyb3d8bbwe
Info lebih lanjut tentang Edge dan Isolasi Jaringan dapat ditemukan di sini:
https://blogs.msdn.microsoft.com/msgulfcommunity/2015/07/01/how-to-debug-localhost-on-microsoft-edge/
makecert.exe
berada di jalur saya. Untuk sertifikat yang menurut saya akan lebih aman dan digunakan-a SHA512 -len 8192
- butuh waktu lama untuk membuatnya. Dan seperti yang saya duga, itu tidak berdampak pada tingkat enkripsi yang digunakan IIS. Secara default IIS menggunakan 128-bit, Anda harus melakukan hal - hal kebijakan grup untuk mengubahnya. Catatan lebih lanjut bagi pembaca lain: jangan ubah angka ajaib setelahnya-eku
, angka itu wajib.