Cách cấu hình IIS Express để yêu cầu chứng chỉ ứng dụng khách


8

Có ai biết cách cấu hình IIS Express để yêu cầu chứng chỉ ứng dụng khách để truy cập không? Tôi đang cố gắng gỡ lỗi một ứng dụng ASP.NET có vấn đề sử dụng chứng chỉ ứng dụng khách để xác thực.


1
Đóng? Hầu hết các cài đặt IIS Express được định cấu hình trong Visual Studio và gỡ lỗi chương trình chắc chắn có liên quan đến lập trình ...
Marko

Sau đó, một câu hỏi như "làm thế nào để cài đặt Visual Studio?" sẽ là một thường xuyên? :)
vào

2
Tôi không muốn tranh luận ở đây, nhưng FYI IIS Express chủ yếu được sử dụng để gỡ lỗi các ứng dụng ASP.NET vì nó cung cấp chức năng mà máy chủ phát triển ASP.NET không hỗ trợ. Câu hỏi của tôi liên quan đến gỡ lỗi. Nhưng để gỡ lỗi tôi cần cấu hình nó trước. Tôi nghĩ có nhiều khả năng rằng điều này đã được thực hiện bởi một số nhà phát triển chứ không phải bởi quản trị viên hệ thống vì họ sẽ sử dụng IIS thực sự.
Marko

Tôi không biết làm thế nào để lập trình yêu cầu chứng chỉ ứng dụng khách để truy cập. Tuy nhiên, đây là một tài nguyên tôi tìm thấy sự giúp đỡ từ. Hy vọng điều này sẽ giúp
rahuL

Bài viết này thực hiện chính xác những gì bạn muốn với các bước chi tiết, (Tôi sẽ không sao chép / dán vào đây), truy cập dcdevs.blogspot.com/2017/06/ HTH!
dotnetftw

Câu trả lời:


5

Sử dụng công cụ Trình quản lý IIS và làm theo tài liệu Microsoft Xác thực ánh xạ chứng chỉ máy khách IIS <iisClientCert veMapMappingAuthentication> .

Cấu hình mẫu:

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

Không thực sự là một câu trả lời có liên quan.
Azimuth

1

Đây là những hướng dẫn được đưa ra bởi Jason Shavers trong blog của mình. (Nhưng trang đó không còn tồn tại.) Scott Hanselman cũng nói về việc bật SSL tại http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx . Nhưng không có lúc nào ông đề cập đến việc làm cho trang web yêu cầu chứng chỉ ứng dụng khách.

Đây là những hướng dẫn tôi làm theo:

Thay đổi applicationationhost.config (Có hai trong số này tại MyDocument \ IISExpress \ config và cái còn lại ở tệp chương trình \ IIS Express \ AppServer theo mặc định, cái trong hồ sơ của bạn được sử dụng khi bạn chạy một dự án trên IISExpress trong VS 2012. được chạy bằng dòng lệnh, đó là những gì tôi đã làm trên máy kiểm tra cục bộ.)

  1. Thay đổi thành phần

<access sslFlags = "Không" /> đến <access sslFlags = "SslNegotiateCert" />

Và yếu tố

<iisClientCertertMapMappingAuthentication enable = "false"> </ iisClientCert veMapMappingAuthentication>

đến

<iisClientCert veMapMappingAuthentication enable = "true"> </ iisClientCert veMapMappingAuthentication>

Hai bước tiếp theo phải được thực hiện trong Visual Studio Theo mặc định khi một dự án mới được tạo trong VS 2012 thì nó được tạo như một dự án IIS Express. Một dự án cũ hơn được chuyển sang VS2012 có thể phải thực sự thay đổi cài đặt đó.

  1. Trên trang thuộc tính Project trên tab Web, thay đổi Sử dụng Visual Studio Developer Server để sử dụng máy chủ web IIS cục bộ. (Nên có một màu xám hộp kiểm nói Sử dụng IIS Express nếu bạn không có IIS thường xuyên cài đặt trên máy bạn (mà không thể được thực hiện bằng các máy NMCI) Nên có một URL dự án nói điều gì đó như thế nào. Http: // Localhost: 62714 / (phải là cùng một cổng được đặt là "cổng cụ thể" trong cài đặt Máy chủ phát triển Visual Studio (nếu được đặt)

  2. Sau đó chọn Project trên trình khám phá giải pháp và chuyển đến tab thuộc tính. (Đôi khi điều này phải được thực hiện một vài lần trước khi các thuộc tính xuất hiện.) Điều này sẽ có ba thuộc tính, SSL Kích hoạt mặc định thành sai, URL SSL trống với dự án mới và URL được đặt thành URL trong " URL dự án "trên tab thuộc tính.

Thay đổi thuộc tính hỗ trợ SSL thành true và URL SSL mới sẽ được tạo.

  1. Sao chép URL SSL đó và quay lại trang thuộc tính dự án và dán URL đó vào đó dưới dạng URL dự án mới. Tôi nhấn "Tạo thư mục ảo" vào thời điểm này mặc dù một số blog nói rằng không cần thiết rằng bạn chỉ cần lưu dự án và chạy nó trong gỡ lỗi.

Trên tệp applicationationhost.config trong phần tử "", một mục nhập mới được tạo khi dự án được chạy lần đầu tiên trước khi bạn bật SSL. Nó sẽ trông giống thế này:

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

Khi bạn bật SSL trên dự án của mình, nó sẽ giống như thế này:

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

(tất cả các cổng 443xx được dành riêng cho các dự án SSL).


0

Tôi tìm thấy một blog chi tiết cách định cấu hình yêu cầu chứng chỉ ứng dụng khách cho IIS Express (Tôi đã sử dụng Visual Studio 2017, IISExpress 10.0). Rõ ràng vị trí của các applicationhost.configtệp đã thay đổi trong Visual Studio 2015 trở lên.

Đây là một phác thảo về những gì nó nói:

  1. Cài đặt chứng chỉ (lưu ý khóa riêng chỉ cần thiết từ phía máy khách) trên máy phát triển (nó sẽ hiển thị trong danh sách chứng chỉ của trình duyệt trong cài đặt của chúng)
  2. Sử dụng Visual Studio, tạo một ứng dụng web mới
  3. Kích hoạt SSL cho dự án của bạn : Xem các thuộc tính của dự án (F4) -> SSL Enabledđến True(thông báo thuộc SSL URLtính được điền)
  4. Đặt dự án của bạn để bắt đầu ở chế độ SSL : Chuyển đến Thuộc tính dự án (Alt + Enter), chọn tab Web và sửa đổi Url dự án thành một từ bước 3. Ví dụ:https://localhost:44300
  5. Định vị tệp cấu hình IIS Express applicationhost.config : Trong năm 2015 hoặc 2017, tệp được đặt trong [solution directory]\.vs\config\- trong các phiên bản trước đó, nó được tìm thấy trong%UserProfile%\Documents\IISExpress\config\
  6. Sửa đổi tệp applicationationhost.config : Đặt <access sslFlags="Ssl, SslNegotiateCert, SslRequireCert" /><iisClientCertificateMappingAuthentication enabled="true"></iisClientCertificateMappingAuthentication>
  7. Chứng chỉ hiện có sẵn từ mã trong thuộc Request.ClientCertificatetính và sẽ được nhắc khi bạn mở trang của mình trong trình duyệt.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.