2015-09-04 20 views
9

Chương trình của tôi sử dụng chứng chỉ SHA-1 để kết nối SSL. Chứng chỉ SHA-2 đã được một số dịch vụ web (Gmail) sử dụng rộng rãi hiện nay. Điều này gây ra việc chặn kết nối đến máy chủ SMTP trong quá trình thiết lập thông báo qua email.Làm thế nào để chuyển đổi giữa sử dụng SHA-2 thay vì SHA-1?

Để gửi email Tôi sử dụng SmtpClient như thế này

using (var smtpClient = new SmtpClient(serverSettings.SmtpServerName, (int)serverSettings.SmtpPort)) 
{ 
    smtpClient.EnableSsl = serverSettings.SmtpUseSsl; 
    smtpClient.UseDefaultCredentials = false; 

    if (!string.IsNullOrEmpty(serverSettings.UserName) || !string.IsNullOrEmpty(serverSettings.EncryptedPassword)) 
    { 
      smtpClient.Credentials = new NetworkCredential(serverSettings.UserName, serverSettings.EncryptedPassword); 
    } 
       ... 
     smtpClient.Send(message); 
} 

tôi không thể gửi email bằng cách sử dụng đoạn mã này và tôi không muốn cho phép "các ứng dụng kém an toàn" trong tài khoản gmail của tôi.

Làm cách nào để triển khai hoặc chuyển sang chứng chỉ SHA-2 cho thông báo qua email?

+0

Tôi nghĩ bạn cần cập nhật sha trên máy chủ mà bạn đang lưu trữ mã của mình. Gần đây amazon cũng nâng cấp từ sha-1 lên sha-256. Tôi đã kiểm tra tài liệu của amazon nhưng tôi e rằng họ không có mã mẫu để làm điều đó cho C# để thử nghiệm nếu ứng dụng/máy chủ của bạn hỗ trợ sha-256 hay không. Có thể bạn có thể liên hệ với các nhà chức trách máy chủ. – razorranjan

Trả lời

9

SHA-1 so với SHA-2 hoàn toàn không liên quan đến sự cố bạn gặp phải. "Ứng dụng kém an toàn hơn" được xem xét cho google ứng dụng không sử dụng OAuth 2.0 để xác thực (sẽ cho phép xác thực 2 yếu tố) nhưng thay vào đó chỉ là một mật khẩu đơn giản. Xem New Security Measures Will Affect Older (non-OAuth 2.0) Applications để biết thêm thông tin.

Để sử dụng OAuth 2.0 với C# thấy SMTP and OAuth 2

+0

Câu trả lời hay. Tôi sẽ thêm rằng lý do duy nhất "các ứng dụng kém an toàn" kém an toàn hơn là vì bạn đang cung cấp ứng dụng bằng mật khẩu của mình. Việc xác thực thực tế và truyền mật khẩu vẫn an toàn. Do đó, việc bật "ứng dụng kém an toàn" trong gmail không tự mở bạn để tấn công trừ khi bạn cung cấp tên người dùng và mật khẩu cho kẻ tấn công. – DWCP

3

Mặc dù, SHA1 là nhiều khả năng chịu hơn MD5 để tấn công va chạm, nhưng nó ngày càng yếu mỗi năm. Do đó, google khuyến khích di chuyển từ SHA-1 sang SHA-2/SHA-3.

Tôi nghĩ trước tiên bạn phải có được một giấy chứng nhận SHA-2, và sau đó sử dụng mẫu mã sau đây để thiết lập nó cho SmtpClient:

string certificate = "Certificate.cer"; 

X509Certificate cert = new X509Certificate2(certificate); 

MailMessage message = new MailMessage(from, to); 

SmtpClient client = new SmtpClient(server); 

client.ClientCertificates.Add(cert); 

client.Send(message); 

Và cũng nhận thấy MSDN SmtpClient.ClientCertificates remarks:

Các cache Khung Các phiên SSL khi chúng được tạo và cố gắng sử dụng lại phiên được lưu trong bộ nhớ cache cho một yêu cầu mới, nếu có thể. Khi cố gắng sử dụng lại phiên SSL, Framework sử dụng phần tử đầu tiên của ClientCertificates (nếu có), hoặc cố gắng sử dụng lại một phiên ẩn danh nếu ClientCertificates trống.

+0

Tôi có thể tìm chứng chỉ bảo mật mới ở đâu? – Anatoly

+0

Từ "tổ chức phát hành chứng chỉ", google, bạn sẽ tìm thấy một số – Hamed

Các vấn đề liên quan