Thiết lập: ứng dụng khách .NET (4.6) kết nối với dịch vụ SOAP từ xa qua HTTPS. Dịch vụ từ xa có thể được định cấu hình để yêu cầu chứng chỉ ứng dụng khách hay không.
Những gì tôi đang tìm kiếm như một câu trả lời là bất kỳ lời giải thích khả thi nào về lý do tại sao kịch bản # 2 không thành công ... 3 kịch bản sau đây đều được kiểm tra bằng cách sử dụng chính xác cùng một cơ sở mã, chỉ thay đổi các chứng chỉ liên quan và chứng chỉ ứng dụng khách có được yêu cầu hay không dịch vụ.
Kịch bản #1 - không yêu cầu chứng chỉ ứng dụng khách
Kịch bản #2 - yêu cầu chứng chỉ ứng dụng khách, chứng chỉ A đã sử dụng
- chứng chỉ A được cài đặt trong Windows ở phía máy khách (cửa hàng máy tính cục bộ)
- chứng chỉ hợp lệ, 2048 bit, không phải ký tự đại diện, được sử dụng thành công để xác thực máy chủ trong một dịch vụ không liên quan khác, do Cơ quan cấp chứng chỉ bảo mật GoDaddy - G2 cấp
- chứng chỉ được chia sẻ với bên từ xa dường như biết họ đang làm gì
- khi khách hàng cố gắng yêu cầu, bắt tay không thành công. Về phía máy khách, ngoại lệ .NET là "Yêu cầu đã bị hủy bỏ: Không thể tạo kênh bảo mật SSL/TLS.". Về phía máy chủ, lỗi là "máy khách không xuất trình được chứng chỉ".
Kịch bản #3 - yêu cầu chứng chỉ ứng dụng khách, chứng chỉ B đã sử dụng
- mọi thứ hoàn toàn giống với #2 ngoại trừ chứng chỉ ứng dụng khách khác được sử dụng (B)
- chứng chỉ hợp lệ, 2048 bit, ký tự đại diện, được sử dụng thành công để xác thực máy chủ trong một dịch vụ không liên quan khác, do GeoTrust RSA CA 2018 cấp
- máy khách kết nối OK
Những gì chúng ta có thể thấy từ nhật ký là trong cả hai kịch bản #2 và #3, máy khách và máy chủ thương lượng để sử dụng TLS 1.2.
Sau khi chạy nhiều lần ở trên, kiểm tra mọi thứ, kết luận duy nhất của tôi là chứng chỉ A bằng cách nào đó không tương thích với thiết lập - ứng dụng khách .NET quyết định không xuất trình hoặc dịch vụ không thể chấp nhận. Nhưng những gì có thể khác/thiếu?