Tôi có Windows 2008 Server với IIS 7 sử dụng .NET C# Application để gửi yêu cầu tới PayPal để xử lý thanh toán. Một vài tháng trước, tôi đã cài đặt một Chứng chỉ đã được Verisign mua. Sau khi cài đặt, tôi đã có thể chạy mã WebClient của mình để tạo kết nối SSL thành công và xử lý thanh toán qua API PayPal NVP (Tên cặp giá trị).Lỗi SSL - Nhận ngoại lệ SSL/TLS khi sử dụng HttpWebRequest với chứng chỉ ứng dụng khách
Gần đây, tôi đã gặp lỗi trong Giao dịch SSL. Các lỗi cụ thể như sau:
Không thể tạo SSL/TLS secure channel
Tôi đã kiểm tra tất cả mọi thứ tôi có thể nghĩ ra, và đọc nhiều bài viết trên StackOverflow và những nơi khác trên mạng.
Tài nguyên tốt nhất tôi thấy được điều này:
Yêu cầu đã bị hủy bỏ: Không thể tạo SSL/TLS secure channel
Lookup lỗi trong bài viết này http://support.microsoft.com/kb/915599 Nghị quyết J. Nó cũng có thể là bạn không cung cấp chứng chỉ ứng dụng khách. Có nhiều khả năng đây là vấn đề với TLS hoặc SSL3 đang được sử dụng và máy chủ không hiểu nó.
Và đây là một danh sách của tất cả các nguồn lực khác tôi đã cố gắng đọc và implimenting giải pháp của họ:
Liên kếtkhác nhau tôi đã thử:
http://support.microsoft.com/kb/901183
Could not create SSL/TLS secure channel - Could the problem be a proxy server?
The request was aborted: Could not create SSL/TLS secure channel
http://forums.iis.net/t/1156690.aspx
Tôi đã thử các giải pháp sau:
- Cài đặt lại giấy chứng nhận, và đặt nó vào các cửa hàng khác nhau (cá nhân, LocalComputer)
Cho code ServiceManager này:
ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
khai thác gỗ Enabled để đạt được các chi tiết rườm rà hơn
- Nhiều giải pháp khác được liệt kê trong các liên kết ở trên
Điều gây phiền toái là điều này đã hoạt động tốt cách đây vài tháng và giờ tôi nhận được lỗi này. Lúc đầu, tôi nghĩ rằng các cert hết hạn, nhưng nó có vẻ là tốt.
Nó có thể là một Gói dịch vụ hoặc Hotfix cho Windows Server đã tạo ra một thiết lập hoặc kịch bản mới phá vỡ SSL. Tôi nghĩ rằng việc cài đặt lại cert sẽ giải quyết điều đó.
Điều quan trọng cần lưu ý là khi tôi cài đặt lại, tôi chỉ cần thêm nó vào các cửa hàng khác nhau (Nhấp đúp vào chứng nhận và cài đặt). Tôi không tạo "Yêu cầu chứng chỉ". Kể từ khi nó đã được cài đặt và bị ràng buộc vào cổng SSL của ứng dụng IIS của tôi, nó sẽ là ok.
Đây là mã mà tạo ra các yêu cầu web:
public static Hashtable DoWebReq(string strNVP, string strNVPSandboxServer)
{
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
string _strNVP = strNVP;
//Create web request and web response objects, make sure you using the correct server (sandbox/live)
var wrWebRequest = (HttpWebRequest)WebRequest.Create(strNVPSandboxServer);
wrWebRequest.Method = "POST"; // POST
var requestWriter = new StreamWriter(wrWebRequest.GetRequestStream());
requestWriter.Write(_strNVP);
requestWriter.Close();
// Get the response.
var hwrWebResponse = (HttpWebResponse)wrWebRequest.GetResponse();
var responseReader = new StreamReader(wrWebRequest.GetResponse().GetResponseStream());
//and read the response
string responseData = responseReader.ReadToEnd();
responseReader.Close();
string result = System.Web.HttpContext.Current.Server.UrlDecode(responseData);
string[] arrResult = result.Split('&');
Hashtable htResponse = new Hashtable();
string[] responseItemArray;
foreach (string responseItem in arrResult)
{
responseItemArray = responseItem.Split('=');
htResponse.Add(responseItemArray[0], responseItemArray[1]);
}
return htResponse;
}
Dưới đây là một bộ sưu tập các ảnh chụp màn hình để hiển thị các thành phần khác nhau của máy SSL:
Đây là SSL Cài đặt ràng buộc trong IIS:
Dưới đây là tổng quan về các cài đặt Certs:
Đây là lỗi tôi nhận được:
Certs cài đặt:
Giấy chứng nhận chi tiết
Lời khuyên nào về sửa chữa lỗi này sẽ là nhất đánh giá cao. Một số khả năng tôi đã xem xét nhưng không giải quyết là:
- Yêu cầu có thể mất quá nhiều thời gian? Có vẻ như đủ nhanh ... nhưng tôi đã đọc điều này có thể là một vấn đề.
- Trong Internet Explorer, tôi thấy "Thanh SSL" màu xanh lục cho biết trang web này được xác minh là an toàn. Điều này cho tôi biết Cert được cài đặt đúng, điều này có đúng không?
- Có thử nghiệm đơn giản nào tôi có thể thực hiện với yêu cầu HTTP của một số loại để giúp thu hẹp nguồn gốc của sự cố không?
- Điều này có liên quan gì đến PayPal không? Là nó có thể paypal là từ chối yêu cầu do thông tin đăng nhập vào cuối của họ?
- Việc triển khai ICertificatePolicy Interface có giúp ích gì trong việc gỡ lỗi vấn đề không? Tôi hy vọng tôi có thể sửa chữa nó.
Tôi nghĩ rằng SSL sẽ hoạt động được hay không, nó không mang/phụ thuộc vào PayPal chút nào ... nhưng tôi có thể sai.
Tôi cảm thấy mình có thể sử dụng URL cặp giá trị tên được lớp WebClient xây dựng và gửi qua đường ống qua IE và nhận phản hồi.
Không chắc chắn nếu bạn vẫn cần nó - câu hỏi của bạn rất rộng rãi:) (đó là tốt, chỉ cần khó đọc nhanh qua nó), hy vọng tôi đã nhận nó đúng. Dù sao, tôi không có 'câu trả lời' nhưng điều này có thể giúp - bạn có thể muốn gỡ lỗi bằng cách sử dụng xác thực gọi lại - bạn cũng có thể xác thực theo cách thủ công (trả về true) xem có hoạt động không (không phải là giải pháp chỉ để kiểm tra, xem những gì xảy ra) - đây là mã "ServicePointManager.ServerCertificateValidationCallback + = new System.Net.Security.RemoteCertificateValidationCallback ((s, ce, ch, ssl) => true);" - và tra cứu "Sử dụng chứng chỉ tự ký với .NET" trên SO. – NSGaga
Giới thiệu về câu hỏi chi tiết nhất mà tôi đã đọc trên SO, +1 –