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.
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.
Câu trả lời:
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>
Đâ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ộ.)
<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 đó.
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)
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.
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).
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.config
tệ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:
SSL Enabled
đến True
(thông báo thuộc SSL URL
tính được điền)https://localhost:44300
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\
<access sslFlags="Ssl, SslNegotiateCert, SslRequireCert" />
và<iisClientCertificateMappingAuthentication enabled="true"></iisClientCertificateMappingAuthentication>
Request.ClientCertificate
tính và sẽ được nhắc khi bạn mở trang của mình trong trình duyệt.