Trong ứng dụng khách C# Windows của tôi, tôi có một POST gửi đến "bà mẹ". Tôi muốn các dữ liệu trong các đệ trình được bảo đảm, tất nhiên, vì vậy tôi trả tiền cho HostGator cấp cho tôi một chứng chỉ SSL.Sử dụng System.Net.WebClient với chứng chỉ HTTPS
tôi lưu ra file .CER, và tôi đang xây dựng theo yêu cầu như vậy:
//wrapper for WebClient object to use certificate file
class SecureWebClient : WebClient
{
protected override WebRequest GetWebRequest(Uri address)
{
HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address);
string certPath = @"e:\mycertificate.cer";
X509Certificate myCert = X509Certificate.CreateFromCertFile(certPath);
request.ClientCertificates.Add(myCert);
return request;
}
}
//request
private static SecureWebClient client = new SecureWebClient();
private static NameValueCollection = new NameValueCollection();
nvc.Add(POST_ACTION, ACTION_CODE_LOGIN);
nvc.Add(POST_EMAIL, email);
nvc.Add(POST_PASSWORD, password);
sResponse = System.Text.Encoding.ASCII.GetString(client.UploadValues(BASE_URL + ACTION_PAGE, nvc));
nó ném một System.Net.WebException:
Kết nối tiềm ẩn đã được đóng cửa: Đã xảy ra lỗi không mong muốn khi gửi.
Các InnerException là một System.IO.IOException:
Các handshake thất bại do một định dạng gói tin bất ngờ.
Bất kỳ thông tin chi tiết nào về những gì tôi đang làm sai?
Bạn có muốn chứng chỉ SSL trên máy khách hoặc máy chủ không? – SLaks
Để làm rõ: bạn có muốn mã hóa thông tin liên lạc (bạn cần chứng chỉ trên máy chủ) không? Hoặc bạn có muốn xác thực máy khách (bạn cần chứng chỉ ứng dụng khách) không? Để cụ thể, bạn sẽ cần một khóa riêng (một tệp .PFX, có lẽ) ở đầu có liên quan. –
Tôi không hoàn toàn thành thạo trong các cách bảo mật. Tôi có thể truy cập trang web lưu trữ trong trình duyệt bằng giao thức HTTPS. Tôi muốn đăng dữ liệu lên cùng một máy chủ/trang web với mã hóa. Vì vậy, @SLaks - Tôi không chắc chắn, về mặt kỹ thuật nói, những gì tôi muốn. Tôi chỉ biết trong giáo dân những gì tôi cần như mô tả ở trên. –