Adakah yang tahu cara mengonfigurasi IIS Express agar memerlukan sertifikat klien untuk akses? Saya mencoba men-debug aplikasi ASP.NET yang bermasalah yang menggunakan sertifikat klien untuk otentikasi.
Adakah yang tahu cara mengonfigurasi IIS Express agar memerlukan sertifikat klien untuk akses? Saya mencoba men-debug aplikasi ASP.NET yang bermasalah yang menggunakan sertifikat klien untuk otentikasi.
Jawaban:
Gunakan alat IIS Manager dan ikuti dokumentasi Microsoft. Otentikasi Pemetaan Sertifikat Klien IIS <iisClientCertificateMappingAuthentication> .
Konfigurasi sampel:
<location path="Default Web Site">
<system.webServer>
<security>
<authentication>
<windowsAuthentication enabled="false" />
<anonymousAuthentication enabled="false" />
<digestAuthentication enabled="false" />
<basicAuthentication enabled="false" />
<iisClientCertificateMappingAuthentication enabled="true"
manyToOneCertificateMappingsEnabled="true">
<manyToOneMappings>
<add name="Contoso Employees"
enabled="true"
permissionMode="Allow"
userName="Username"
password="[enc:AesProvider:57686f6120447564652c2049495320526f636b73:enc]">
<rules>
<add certificateField="Subject"
certificateSubField="O"
matchCriteria="Contoso"
compareCaseSensitive="true" />
</rules>
</add>
</manyToOneMappings>
</iisClientCertificateMappingAuthentication>
</authentication>
<access sslFlags="Ssl, SslNegotiateCert" />
</security>
</system.webServer>
</location>
Ini adalah instruksi yang diberikan oleh Jason Shavers di blog-nya. (Tapi halaman itu tidak ada lagi.) Scott Hanselman juga berbicara tentang mengaktifkan SSL di http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx . Tetapi ia tidak merujuk pada pembuatan situs yang membutuhkan sertifikat klien.
Ini adalah instruksi yang saya ikuti:
Ubah applicationhost.config (Ada dua dari ini di MyDocuments \ IISExpress \ config dan yang lainnya di file program \ IIS Express \ AppServer secara default yang di bawah profil Anda digunakan ketika Anda menjalankan proyek di IISExpress di VS 2012 Yang lain dapat dijalankan menggunakan baris perintah yang saya lakukan pada mesin uji lokal.)
<access sslFlags = "Tidak Ada" /> ke <akses sslFlags = "SslNegotiateCert" />
Dan elemennya
<iisClientCertificateMappingAuthentication enabled = "false"> </ iisClientCertificateMappingAuthentication>
untuk
<iisClientCertificateMappingAuthentication enabled = "true"> </ iisClientCertificateMappingAuthentication>
Dua langkah selanjutnya harus dilakukan di Visual Studio Secara default ketika proyek baru dibuat di VS 2012 maka dibuat sebagai proyek IIS Express. Proyek lama yang ditransfer ke VS2012 mungkin harus benar-benar mengubah pengaturan itu.
Pada halaman Properti proyek pada tab Web, ubah Gunakan Server Pengembang Visual Studio untuk Menggunakan Server web IIS Lokal. (Seharusnya ada kotak centang berwarna abu-abu yang mengatakan Gunakan IIS Express jika Anda tidak memiliki instalasi IIS reguler pada mesin Anda (yang tidak dapat dilakukan pada mesin NMCI ini.) Seharusnya ada URL proyek yang mengatakan sesuatu seperti http: // Localhost: 62714 / (yang seharusnya merupakan port yang sama yang ditetapkan sebagai "port spesifik" di bawah pengaturan Visual Studio Development Server (jika diatur)
Kemudian pilih Proyek pada explorer solusi dan pergi ke tab properti. (Kadang-kadang ini harus dilakukan beberapa kali sebelum properti muncul.) Ini akan memiliki tiga properti, SSL Aktifkan yang defaultnya salah, URL SSL yang kosong dengan proyek baru dan URL yang disetel ke URL dalam " URL proyek "pada tab properti.
Ubah properti yang diaktifkan SSL menjadi true, dan URL SSL baru akan dibuat.
Pada file applicationhost.config di bawah elemen "" entri baru dibuat ketika proyek pertama kali dijalankan sebelum Anda mengaktifkan SSL. Ini akan terlihat seperti ini:
<site name="WebApplication1" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="c:\users\edward.joell\documents\visual studio 2012\Projects\WebApplication1\WebApplication1" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:61313:localhost" />
</bindings>
</site>
Saat Anda mengaktifkan SSL di proyek Anda, seharusnya akan terlihat seperti ini:
<site name="WebApplication1" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="c:\users\edward.joell\documents\visual studio 2012\Projects\WebApplication1\WebApplication1" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:61313:localhost" />
<binding protocol="https" bindingInformation="*:44313:localhost" />
</bindings>
</site>
(semua port 443xx dicadangkan untuk proyek SSL).
Saya menemukan blog yang menjelaskan cara mengkonfigurasi permintaan sertifikat klien untuk IIS Express (saya menggunakan Visual Studio 2017, IISExpress 10.0). Rupanya lokasiapplicationhost.config
file berubah di Visual Studio 2015 dan lebih tinggi.
Inilah garis besar dari apa yang dikatakannya:
SSL Enabled
ke True
(perhatikan bahwa SSL URL
properti akan terisi)https://localhost:44300
applicationhost.config
: Pada 2015 atau 2017, file tersebut berada di [solution directory]\.vs\config\
- dalam versi yang lebih lama ditemukan%UserProfile%\Documents\IISExpress\config\
<access sslFlags="Ssl, SslNegotiateCert, SslRequireCert" />
dan<iisClientCertificateMappingAuthentication enabled="true"></iisClientCertificateMappingAuthentication>
Request.ClientCertificate
properti, dan harus diminta saat Anda membuka halaman di browser.