Không thể kết nối với máy chủ bằng cách sử dụng ServicePointManager hoặc SslStream API sau khi nâng cấp lên Khuôn khổ .NET 4.6

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch thuật của Microsoft và có thể được Cộng đồng Microsoft chỉnh sửa lại thông qua công nghệ CTF thay vì một biên dịch viên chuyên nghiệp. Microsoft cung cấp các bài viết được cả biên dịch viên và phần mềm dịch thuật thực hiện và cộng đồng chỉnh sửa lại để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng nhiều ngôn ngữ Tuy nhiên, bài viết do máy dịch hoặc thậm chí cộng đồng chỉnh sửa sau không phải lúc nào cũng hoàn hảo. Các bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này: 3069494
Triệu chứng
Giả sử rằng bạn đã nâng cấp lên Microsoft Khuôn khổ .NET 4.6 trên máy tính của bạn. Khi bạn sử dụng ứng dụng sử dụng SSL 3.0 với ServicePointManager hoặc SslStream API để kết nối với máy chủ, kết nối không thành công.
Nguyên nhân
Sự cố này xảy ra vì mặc định của giao thức SSL/TLS sử dụng ServicePointManager SslStream đã được thay đổi.

Giá trị cũ: Ssl 3.0 | TLS 1.0 | TLS 1.1

Giá trị mới: Tls 1.0 | TLS 1.1 | TLS 1.2

Cách giải quyết khác
Để khắc phục sự cố này, Cập Nhật máy chủ Tls 1.0, Tls 1.1 hoặc Tls 1.2 do SSL 3.0 đã được thể hiện unsecure và dễ bị tấn công như POODLE.

Lưu ý: Nếu bạn không thể Cập Nhật máy chủ, sử dụng AppContext lớp để loại bỏ tính năng này. Để thực hiện việc này, sử dụng một trong những phương pháp sau:
  • Lập trình: Phải là điều đầu tiên ứng dụng không vìServicePointManagersẽ khởi chạy một lần. Sử dụng mẫu mã sau trong ứng dụng của bạn:
    private const string DisableCachingName = @"TestSwitch.LocalAppContext.DisableCaching";        private const string DontEnableSchUseStrongCryptoName = @"Switch.System.Net.DontEnableSchUseStrongCrypto";        AppContext.SetSwitch(DisableCachingName, true);        AppContext.SetSwitch(DontEnableSchUseStrongCryptoName, true);
  • Bằng cách sử dụng các tập tin AppConfig để sử dụng: thêm dòng sau vào tệp Appconfig:
    <AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchUseStrongCrypto=true"></AppContextSwitchOverrides>


Để biết thêm thông tin về các vấn đề trong Khuôn khổ .NET 4.6, hãy xem Vấn đề đã biết cho Khuôn khổ .NET 4.6.
Thông tin thêm
Để biết thêm thông tin về các sản phẩm Hệ thống thay đổi và ảnh hưởng trong Khuôn khổ .NET 4.6, hãy xem tương hợp về sau ứng dụng trong Khuôn khổ .NET 4.6.

Lưu ý:
  • Cấu hình mới sẽ chỉ áp dụng khi ứng dụng nhắm mục tiêu Khuôn khổ .NET 4.6. Khuôn khổ .NET 4.5.2 và trước đó versionswill không bị ảnh hưởng ngay cả khi chạy trong môi trường Khuôn khổ .NET 4.6.
  • Danh sách bị ảnh hưởng cấp API:
    • HttpClient, HttpWebRequest
    • FtpClient
    • SmtpClient
    • SslStream
  • SCH_USE_STRONG_CRYPTO dấu kiểm hiệu này sẽ tự động được sử dụng trong Khuôn khổ .NET 4.6 và ảnh hưởng đến hành vi bằng cách loại bỏ thuật toán mật mã và hashing không an toàn. Đối với tất cả các nền tảng hệ điều hành trước Windows 10, thuật toánRC4 sẽ bị xoá khỏi sử dụng. Từ cửa sổ 10, các thuật toán không an toàn bổ sung sau sẽ bị xoá:DES, NULL, xuất MD5

Cảnh báo: Bài viết này được dịch tự động

Thuộc tính

ID Bài viết: 3069494 - Xem lại Lần cuối: 07/20/2015 15:56:00 - Bản sửa đổi: 2.0

Microsoft .NET Framework 4.6

  • kbsurveynew kbtshoot kbexpertiseadvanced kbmt KB3069494 KbMtvi
Phản hồi