UWP ServicePointManager.ServerCertertValidationCallback


8

Tôi có một ứng dụng Xamarin.Forms thực hiện việc ghim chứng chỉ bằng cách sử dụng lớp và phương thức ServicePointManager.ServerCert veValidationCallback. Trên Android và iOS, điều này hoạt động mà không có vấn đề gì ở chỗ nó sẽ cho phép kết nối với các dịch vụ dự kiến ​​có khóa chứng chỉ đã được ghim và không cho phép kết nối cho những dịch vụ mà tôi không có.

Tuy nhiên, trên UWP, tất cả các kết nối được cho phép bất kể khóa chứng chỉ đã được ghim hay chưa. Tôi đã trả lại sai từ phương thức xác thực chứng chỉ và kết nối vẫn được cho phép. Tôi chắc chắn kiểm tra đang được thực hiện khi tôi đã gỡ lỗi và bước qua phương thức xác thực chứng chỉ.

Điều gì có thể khiến kết nối tiếp tục ngay cả khi tôi trả về sai từ kiểm tra xác thực?

ServicePointManager.ServerCertificateValidationCallback = ValidateServerCertficate;
private static bool ValidateServerCertficate(
   object sender,
   X509Certificate certificate,
   X509Chain chain,
   SslPolicyErrors sslPolicyErrors
)
{
   return false;
}


Cuộc gọi lại không kích hoạt nên không giống như vậy.
Jason

ValidateServerCertficatecuộc gọi trong phía bạn?
Nico Zhu - MSFT

ValidateServerCertert đang được gọi nhưng giá trị trả về không ảnh hưởng đến việc kết nối có được phép hay không
Jason

Câu trả lời:


1

Tôi đã có thể khắc phục điều này bằng cách:

  1. Trong dự án UWP, nhấp đúp vào tệp Gói.appxmanifest
  2. Trong menu Tuyên bố, chọn Chứng chỉ từ danh sách Có sẵn thả xuống
  3. Nhấp vào nút Thêm
  4. Chọn tùy chọn Tin cậy độc quyền

Điều này đặt xml sau vào tệp Gói.appxmanifest:

<Extensions>
   <Extension Category="windows.certificates">
     <Certificates>
       <TrustFlags ExclusiveTrust="true" />
     </Certificates>
   </Extension>
</Extensions>
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.