Bagaimana cara memulihkan Sertifikat SSL IIS Express yang hilang?

138

Setelah menyiapkan HTTPS di IIS Express, menurut artikel seperti ini dan ini , saya tidak dapat memuat situs IIS Express menggunakan HTTPS. Di Chrome , saya hanya mendapatkan:

Halaman web ini tidak tersedia (dengan kode kesalahan "ERR_CONNECTION_RESET")

... dan di IE saya hanya mendapatkan:

Internet Explorer tidak dapat menampilkan halaman web

... saat saya mengikuti petunjuk di artikel tersebut.

Tampaknya ini ada hubungannya dengan fakta bahwa "IIS Express Development Certificate" yang diinstal IIS Express secara otomatis telah dihapus. Bagaimana cara agar sertifikat ini diinstal ulang?

Chris Simmons
sumber
2
Juga terjadi pada saya mencoba menjalankan IISExpress pada port 443 (atau sebenarnya pada port mana pun di luar kisaran 44300-44399)
Gerardo Grignoli
Catatan: jawaban yang diterima untuk pertanyaan ini berlaku bahkan di mana sertifikat localhost IIS Express ada dan tampaknya baik-baik saja.
haymansfield
Untuk Visual Studio 2017 lihat stackoverflow.com/questions/44142037/…
RickAndMSFT

Jawaban:

195

Setelah masuk ke Tambah / Hapus Program dan memilih opsi "Perbaikan" di IIS Express, sertifikat telah diinstal ulang dan sekarang saya dapat meluncurkan situs IIS Express menggunakan HTTPS.

Perbaiki IIS Express

Sertifikat kembali:

Sertifikat Pengembangan IIS Express

Dan sekarang saya dapat meluncurkan situs IIS Express menggunakan HTTPS:

Keberhasilan!

Chris Simmons
sumber
1
Bekerja untuk saya juga, tetapi dalam kasus saya, sertifikatnya ada di sana. Tidak yakin mengapa, tapi itu menghasilkan kesalahan yang sama. Jadi saya telah menghapus sertifikat, dan 'memperbaiki' menginstal ulang ini kembali, dan voila. Terima kasih banyak.
Darius
41
Catatan untuk pengguna Windows 10: Perbaikan hanya ada di Panel Kontrol, bukan di aplikasi Tambah Hapus program. Ide brilian msft.
Chris Weber
1
Cara yang lebih cepat adalah dengan meluncurkan Jexus Manager dan menghasilkan sertifikat baru lalu mengikat ke situs Anda. jexusmanager.com Tentu saja ini belum memperbaiki pengikatan sertifikat yang rusak dan saya akan melihat bagaimana membuatnya menjadi fitur sekali klik.
Lex Li
Perbaikan bekerja tetapi saya harus menghapus semua sertifikat yang ada menggunakan MMC. Masalah yang saya hadapi adalah saya tidak menghapusnya sebagai admin dari localMachine. Pastikan Anda menjalankan MMC dengan izin yang lebih tinggi!
ranieuwe
6
Catatan untuk pengguna VS2019: "Perbaikan" tidak akan berfungsi karena Penginstal Visual Studio tidak meletakkan berkas MSI di mana Panel Kontrol mengharapkannya. Namun, ada _package.json file di direktori yang sama, dan berisi URL file MSI. Anda dapat menjalankannya secara manual atau menyalinnya ke tempat yang diharapkan Panel Kontrol.
Chris R. Donnelly
165

Untuk Visual Studio 2015, IIS Express 10, Windows 10, opsi ini tidak berfungsi untuk saya. IIS Express 10 tidak memiliki opsi perbaikan.

Saya berhasil menyelesaikan masalah menggunakan IisExpressAdminCmd.exeperintah yang tersedia di C:\Program Files (x86)\IIS Express.

Dari prompt perintah yang ditinggikan:

cd C:\Program Files (x86)\IIS Express
IisExpressAdminCmd.exe setupsslUrl -url:urlToYourSite -UseSelfSigned

Mengganti urlToYourSite dengan url Anda.

misalnya

cd C:\Program Files (x86)\IIS Express
IisExpressAdminCmd.exe setupsslUrl -url:https://localhost:44387/ -UseSelfSigned

Setelah itu saya menutup IIS Express dan memulai ulang situs saya dari Visual Studio dan diminta untuk secara otomatis mempercayai sertifikat yang ditandatangani sendiri.

Semoga membantu.

Bernie White
sumber
3
Ini berhasil saat saya mencoba menjalankan IISExpress pada port 443. +1
Gerardo Grignoli
Solusi ini bekerja sangat baik untuk saya. Windows 10, Visual Studio 2015, IIS Express 10.
Glenn
1
Jika seseorang di sini mengalami masalah dalam mendapatkan port tertentu yang digunakan oleh IIS Express, Anda mungkin ingin memeriksa apakah seseorang memiliki situs yang terdaftar di IIS menggunakan port tersebut. Itu adalah hariku hari ini.
Chris Marisic
2
Di Windows 10, IIS Express memiliki opsi perbaikan. Anda harus melalui Control Panel. Jawaban yang diterima berhasil untuk saya.
joerage
1
Jika Anda bosan menggunakan baris perintah, Anda dapat menggunakan Jexus Manager untuk melakukan hal yang sama, blog.lextudio.com/…
Lex Li
40

Terkadang kesalahan ini terjadi karena sertifikat berbeda yang dipasang untuk localhost. Jika demikian, tidak perlu memulihkan sertifikat IIS Express. Sebaliknya, Anda dapat melakukan hal berikut ini untuk memberi tahu IIS Express untuk menggunakan sertifikat yang sudah ada:

  1. Buka snap-in Certificates MMC seperti yang dijelaskan di sini
  2. Temukan sertifikat localhost Anda misalnya di bawah Personal ... Certicates dan dapatkan cap jempolnya:
    1. Munculkan dialog properti untuk sertifikat localhost dan temukan properti Thumbprint
    2. Tempel nilai cap jempol ke Notepad (atau apa pun) dan hapus spasi dan karakter khusus apa pun di awal
  3. Temukan nilai port proyek IIS Express Anda:
    1. Buka properti proyek di Visual Studio dan temukan nilai "SSL URL", misalnya " https: // localhost: 44300 / MyApp ".
    2. Dalam contoh ini 44300 adalah nomor porta. Jika milik Anda berbeda, ubah nilai itu di perintah selanjutnya.
  4. Gunakan perintah berikut di prompt perintah administratif (bukan Powershell):

netsh http delete sslcert ipport=0.0.0.0:44300

netsh http add sslcert ipport=0.0.0.0:44300 certhash=your_cert_hash_with_no_spaces appid= {123a1111-2222-3333-4444-bbbbcccdddee}

Panduan dalam perintah di atas dapat diganti dengan yang Anda buat. Itu tidak sesuai dengan nilai IIS Express yang ada.

Untuk referensi lebih lanjut lihat Menangani Kegagalan Pengikatan URL di IIS Express .

meledak
sumber
2
Cara yang lebih visual adalah dengan menggunakan Jexus Manager, blog.lextudio.com/… maka Anda tidak perlu mengingat detailnya seperti hash sertifikat.
Lex Li
jika Anda mendapatkan "Parameter salah." error - gunakan appid ini terlebih dahulu lalu certhash. Contoh: netsh http add sslcert ipport = 0.0.0.0: 44300 appid = {C21B9F4D-2A5D-4160-81C8-FBCC3EFC335E} certhash = your_cert_hash_with_no_spaces
gmsi
37

Perhatikan juga bahwa agar IIS Express dapat bekerja dengan SSL, porta yang digunakan harus dalam kisaran 44300 hingga 44399 ( http://www.iis.net/learn/extensions/using-iis-express/running-iis-express- tanpa hak akses administratif ).

Jadi, jika Anda menggunakan IIS Express di Visual Studio, pastikan port yang dipilih dalam kisaran yang diperlukan: vs pengaturan untuk iis express

Shiraz
sumber
3
Saya dapat menggunakan port di luar jangkauan ini setelah menggunakan perintah dalam jawaban Bernie White tanpa masalah. Windows 10 / Visual Studio Community 2015 / .Net Core 1.0.1 / IIS Express 10.0
Ryan Thomas
1
Terima kasih! Ini memecahkan masalah saya. Aneh bahwa Visual Studio tidak memperingatkan tentang itu.
Erwin Mayer
4
44300-44399 hanyalah kisaran port default dengan sertifikat yang dipetakan. Anda dapat dengan mudah membuat pemetaan sertifikat serupa dengan menelepon netsh, atau cukup gunakan Jexus Manager, blog.lextudio.com/…
Lex Li
12

Dengan Chrome 58 baru, jawaban di bawah ini tidak akan membantu. Saya baru saja menghabiskan 1 jam untuk mencopot / memasang ulang sertifikat dan mencoba mencari tahu di mana masalahnya.

Rupanya Chrome 58 akan menolak sertifikat karena "missing_subjectAltName"

Solusinya adalah frasa sandi "badidea" atau jika Anda perlu membuka munculan untuk login, Anda harus menggunakan:

chrome: // flags / # allow-insecure-localhost

Sumbernya dan upvote adalah milik: https://stackoverflow.com/a/38926117/2089232 :)

milanio
sumber
1
Juga lihat blog.lextudio.com/…
Lex Li
2

Saya ingin menambahkan ini, karena ini konyol tetapi mungkin itu akan membantu seseorang. Perlu diingat bahwa saya belum pernah membuka properti proyek saya sebelumnya, jadi saya tidak tahu bagaimana ini terjadi (saya tidak mengubahnya sendiri atau memiliki kesempatan untuk), tetapi di Project> Properties> Web url SSL saya terdaftar sebagai URL biasa saya tetapi sebagai http, bukan https (sebelumnya telah https karena berfungsi sebelumnya). Saya melalui semua langkah yang tercantum di halaman ini, menghapus VS, lalu IIS, dan akhirnya melihat kesalahan yang seharusnya https: // mySSLURL (tetapi tidak memiliki s di https). Setelah saya mengubah http ke https semuanya bekerja kembali.

RoboYak
sumber
0

Anda dapat menginstal ulang IIS Express 10.0 (atau versi apa pun yang Anda perlukan) untuk memperbaiki sertifikat yang hilang. Unduh dari Microsoft di sini

TetraDev
sumber
0

Saya baru saja mengalami masalah ini setelah memperbarui VS 2017 saya ke versi terbaru dan membuat proyek MVC / WebAPI (.Net) baru (dari template). Saya dapat memperbaikinya dengan menyesuaikan nomor port saya agar berada dalam kisaran yang benar

Rentang Port Default Chorme untuk DEV SSL

Yang dapat saya temukan di sini: https://www.pluralsight.com/guides/visual-studio-2017-resolving-ssl-tls-connections-problems-with-iis-express

Semoga ini membantu!

Edd
sumber