Cara mengkonfigurasi IIS Express untuk meminta sertifikat klien

8

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.

Marko
sumber
1
Menutup? Sebagian besar pengaturan IIS Express dikonfigurasikan dalam Visual Studio dan debugging suatu program pasti terkait dengan pemrograman ...
Marko
Lalu pertanyaan seperti "bagaimana cara menginstal Visual Studio?" akan menjadi yang biasa? :)
onof
2
Saya tidak ingin berdebat di sini, tetapi FYI IIS Express sebagian besar digunakan untuk debugging aplikasi ASP.NET karena menawarkan fungsionalitas yang tidak didukung oleh server pengembangan ASP.NET. Pertanyaan saya terkait dengan debugging. Tetapi untuk men-debug saya perlu mengkonfigurasi terlebih dahulu. Saya pikir ini lebih memungkinkan bahwa ini sudah dilakukan oleh beberapa pengembang dan bukan oleh administrator sistem karena mereka akan menggunakan IIS yang sebenarnya.
Marko
Saya tidak tahu bagaimana secara program membutuhkan sertifikat klien untuk akses. Namun, di sini ada sumber daya yang saya temukan bantuannya. Semoga ini bisa membantu
rahuL
Artikel ini melakukan persis seperti yang Anda inginkan dengan langkah-langkah terperinci, (saya tidak akan menyalin / menempel di sini), buka dcdevs.blogspot.com/2017/06/... HTH!
dotnetftw

Jawaban:

5

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>
Mufasa
sumber
Bukan jawaban yang benar-benar relevan.
Azimuth
1

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.)

  1. Ubah elemen

<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.

  1. 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)

  2. 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.

  1. Salin URL SSL itu dan kembali ke halaman properti proyek dan rekatkan di sana sebagai URL Proyek baru. Saya menekan "Buat Direktori Virtual" pada titik ini meskipun beberapa blog mengatakan bahwa tidak perlu bahwa Anda hanya perlu menyimpan proyek dan menjalankannya dalam debug.

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).

pengguna1161391
sumber
0

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:

  1. Pasang sertifikat (perhatikan bahwa kunci pribadi hanya diperlukan dari sisi klien) pada mesin pengembangan (harus terlihat dalam daftar sertifikat peramban dalam pengaturannya)
  2. Menggunakan Visual Studio, buat aplikasi web baru
  3. Aktifkan SSL untuk proyek Anda : Lihat properti proyek (F4) -> SSL Enabledke True(perhatikan bahwa SSL URLproperti akan terisi)
  4. Atur proyek Anda untuk memulai dalam mode SSL : Buka Properti Proyek (Alt + Enter), pilih tab Web dan ubah Url Proyek ke yang dari langkah 3. Misalnyahttps://localhost:44300
  5. Temukan file konfigurasi IIS Express applicationhost.config : Pada 2015 atau 2017, file tersebut berada di [solution directory]\.vs\config\- dalam versi yang lebih lama ditemukan%UserProfile%\Documents\IISExpress\config\
  6. Ubah file applicationhost.config : Setel<access sslFlags="Ssl, SslNegotiateCert, SslRequireCert" /> dan<iisClientCertificateMappingAuthentication enabled="true"></iisClientCertificateMappingAuthentication>
  7. Sertifikat sekarang tersedia dari kode di Request.ClientCertificateproperti, dan harus diminta saat Anda membuka halaman di browser.
Aske B.
sumber