6

Tôi đang tạo Thư viện lớp di động có nghĩa là tôi phải sử dụng System.Net.Http.HttpClient để gọi API web của tôi theo như tôi hiểu . Thách thức là đối với Universal Windows App của tôi, tôi không thể tìm ra cách bỏ qua lỗi được trả về do thực tế máy chủ API có thể có chứng chỉ tự ký. Bất kỳ đề xuất sẽ được đánh giá rất cao.Cách bỏ qua chứng chỉ tự ký với System.Net.Http.HttpClient trong Universal Windows App

CẬP NHẬT: Tôi không thể nhập bất kỳ chứng chỉ nào vì đây sẽ là ứng dụng chạy trên các thiết bị khác nhau trong các tổ chức khác nhau và không thực tế để họ nhập chứng chỉ tự ký vào mọi thiết bị đang chạy ứng dụng.

Trả lời

4

Không phải tùy chọn vì System.Net.ServicePointManager.CertificatePolicy không khả dụng trong UWP. Nếu bạn sử dụng Windows.Web.Http.HttpClient để thay thế, thì bạn có thể ignore self signed certificates.

UPDATE:

Trong một ý nghĩ thứ hai, bạn có thể bỏ qua tự ký giấy chứng nhận lỗi nếu bạn thêm nó vào các chứng chỉ gốc của ứng dụng.

Hai lựa chọn:

  • Install nó với các API:

    IBuffer buffer = await FileIO.ReadBufferAsync(file); 
    Certificate rootCert = new Certificate(buffer); 
    CertificateStore rootStore = CertificateStores.TrustedRootCertificationAuthorities; 
    rootStore.Add(rootCert); 
    
  • Bao gồm nó trong bạn Package.appxmanifest>khai báo>Certificates>Thêm và thiết lập :

      tên
    • Store: gốc
    • Nội dung: đường dẫn đến file giấy chứng nhận

Với bất kỳ của cả hai lựa chọn, bạn sẽ ngừng nhận:

System.Net.WebException : Kết nối cơ bản đã bị đóng: Không thể thiết lập mối quan hệ tin cậy cho kênh bảo mật SSL/TLS. ---> System.Security.Authentication.AuthenticationException: Chứng chỉ từ xa không hợp lệ theo quy trình xác thực.

+0

Xin lỗi, tôi không thể nhập bất kỳ chứng chỉ nào vì đây sẽ là ứng dụng chạy trên nhiều thiết bị khác nhau trong các tổ chức khác nhau và không thực tế để họ nhập chứng chỉ tự ký vào mọi thiết bị chạy ứng dụng. Tôi đã cập nhật câu hỏi để phản ánh phần thông tin này. –

+1

Không chắc tôi hiểu lý do tại sao ứng dụng của bạn không thể thêm chứng chỉ gốc. Nhưng ứng dụng sẽ thêm chứng chỉ vào cửa hàng chứ không phải người dùng, họ sẽ không bao giờ biết. Và chứng chỉ gốc sẽ chỉ hợp lệ cho ứng dụng, không phải cho toàn bộ tài khoản người dùng hoặc hệ thống. Sự bất tiện là bạn cần phải đóng gói chứng chỉ gốc với ứng dụng tại thời gian xây dựng hoặc bạn cần chuyển bằng cách nào đó (có thể sử dụng HTTPS sever khác và hợp lệ) chứng chỉ về thời gian thực thi. Nhưng chắc chắn điều này an toàn hơn là bỏ qua các lỗi SSL. Bỏ qua lỗi SSL có thể giống như không có SSL – kiewic

+0

Đã khắc phục câu hỏi để cho thấy rằng (các) máy chủ API không phải của tôi.Máy chủ API sẽ được lưu trữ tại trang web của từng khách hàng và mỗi khách hàng sẽ có chứng chỉ riêng của họ có thể được tự ký hoặc có thể là một chứng chỉ đáng tin cậy. Đó là lý do tại sao tôi không thể nhập chứng chỉ, –

Các vấn đề liên quan