2010-05-28 5 views
7

Tôi làm cách nào để chỉ định bộ mã hóa để sử dụng trong kết nối SSL?Cách chỉ định mật mã cho kết nối SSL trong .NET?

Tôi biết rằng Mentalis Seclib có tính năng này tuy nhiên họ không duy trì dự án (và có vấn đề trong thư viện đó với hệ điều hành x64) khi họ nói .NET Framework 2.0 đã giới thiệu các tính năng đó, tuy nhiên tôi không thể tìm được cách để làm điều này trong .NET Framework 3.5.

Để cụ thể hơn Tôi muốn kết nối một dịch vụ HTTPS bằng cách sử dụng mật mã NULL, tôi sẽ làm điều tương tự với OpenSSL bằng cách sử dụng lệnh sau:

openssl s_client -connect www.example.com:443 -cipher NULL 

Làm thế nào tôi có thể làm điều này trong NET?

Các đề xuất thư viện được cấp phép thương mại hoặc thương mại thân thiện cũng được chào đón.

Trả lời

6

(câu trả lời trước của tôi đã thiếu thông tin, tôi không để ý lúc đầu tiên mà tài sản tôi đã đề cập đến được read-only.)

Trong NET 4, lớp System.Net.Security.SslStream hỗ trợ một constructor mới, cho phép bạn cung cấp giá trị EncryptionPolicy, có thể là NoEncryption. Điều này cho phép không mã hóa và yêu cầu một mật mã NULL được sử dụng nếu điểm cuối khác có thể xử lý một mật mã NULL.

Thật không may điều này không tồn tại ngay cả trong 3.5.


Không thực sự là một phần của câu hỏi, nhưng tôi giả định (và điều này thực sự dành cho độc giả trong tương lai) rằng bạn tất nhiên biết về rủi ro liên quan, sử dụng SSL với mật mã NULL? Và, những lợi ích bạn bỏ lỡ?

0

Dựa trên các tài liệu, bạn có thể đặt mật mã khi sử dụng SChannel qua palgSupportedAlgs, dwMinimumCipherStrengthdwMaximumCipherStrength thông số của struct SCHANNEL_CRED.

Để bật thuật toán mã hóa NULL, bạn nên đặt dwMinimumCipherStrength thành -1.

CAVEAT: Điều này chỉ dựa trên tài liệu. Tôi không phải là một nhà phát triển .NET, nhưng tôi đã tìm kiếm câu trả lời cho câu hỏi này vì tôi hỗ trợ một dịch vụ có các máy khách .NET.

+0

Bất kỳ ý tưởng nào về cách sử dụng SCHANNEL trong .NET hoặc bất kỳ trình bao bọc .NET nào cho nó? –

+0

Đối với .NET 3.5, tôi thì không. .NET 4 đã giới thiệu một EnvironPolicy enum cho phép bạn cấu hình HttpWebRequest để cho phép hoặc yêu cầu sử dụng các mật mã NULL cho các kết nối HTTPS. Tôi đã gửi thông tin đó cho máy khách .NET của tôi và anh ấy đã xác nhận rằng nó hoạt động. Nếu đó là hữu ích cho bạn, tôi có thể viết lên làm thế nào để sử dụng nó. – Matthieu

+0

Nghe có vẻ thú vị, bạn có quan tâm đến việc chỉ cho tôi một bài viết hoặc ném cho tôi một đoạn mã không? –

0

Trong .NET, bạn có thể sử dụng lớp SSLStream. trong .NET 4.0, như Matthieu đã nói ở trên, nó cho phép bạn chỉ định mật mã.