2010-07-19 25 views
11

Tôi đang sử dụng lệnh này trên mono tôi VMvấn đề Mono với cert và mozroots

sudo mozroots --import --sync 

Nó dường như nhận được cert từ this site.

Sau đó tôi thử kết nối với trang web ssl của mình và tôi nhận được ngoại lệ là chứng chỉ không hợp lệ. Tôi sử dụng firefox và xem cert đã được ban hành vào năm 2010. Tôi đã xem tệp đó và xem lần cuối cùng được cập nhật là 2009-05-21 12:50

Khi sử dụng firefox trên cùng một máy tôi có thể điều hướng đến cùng một url tôi đang cố gắng để kết nối với và tôi nhận được không có vấn đề ssl. (không có cảnh báo cũng không yêu cầu tôi thêm nó vào một ngoại lệ).

Tôi bị nhầm lẫn ở đây. Làm thế nào để tôi cập nhật mono để sử dụng các chứng chỉ mới nhất?

-edit- Tôi đã kiểm tra người đã ký chứng nhận của trang web tôi muốn truy cập và tên của họ là bằng chứng nhận. Tôi tự hỏi tại sao mono nói cert không hợp lệ.


Tôi cố gắng viết này và tôi nhấn yes để 3 cert nó yêu cầu tôi nhập

certmgr -ssl https://www.site.com/users/login --machine 

Tôi chạy ứng dụng của tôi một lần nữa và đã nhận lỗi này. Googling mã lỗi 0xffffffff80092012 i found this.

Có vẻ như một lỗi cố định chưa được áp dụng cho 2.6.4. Hoặc tôi có thể làm điều đó sai. Tôi đặt ServerCertificateValidationCallback thành thứ của riêng mình và trả về true cho ứng dụng này như là một sửa chữa cho mono.

System.Net.WebException: Lỗi nhận dòng phản ứng (Write: Việc xác thực hoặc giải mã đã thất bại.): SendFailure ---> System.IO.IOException: Việc xác thực hoặc giải mã có thất bại. ---> Mono.Security.Protocol.Tls.TlsException: Chứng chỉ không hợp lệ nhận được từ máy chủ . Mã lỗi: 0xffffffff80092012

Trả lời

2
  1. Cài đặt mặc định của Mono không tin tưởng bất cứ ai!
  2. mozroots sẽ tải xuống và nhập chứng chỉ gốc đáng tin cậy từ Mozilla's LXR.
  3. Đọc Mono Security FAQ

EDIT:

  • Hãy thử phiên bản mới nhất của gói Mono từ here
  • Nếu điều đó không làm việc, hoặc cố gắng thân phiên bản SVN here
  • Từ Bug 606002, Gonzalo Paniagua Javier 'đề nghị: "Con đường để đi là thêm ServerCertificateValidationCallback của bạn để ServicePointManager và bỏ qua lỗi với thứ là mã. "
  • Tôi có ít kinh nghiệm trong lĩnh vực này vì vậy tôi đề nghị liên hệ với anh ấy để được hỗ trợ thêm, có thể anh ấy có thể trợ giúp. Anh ấy là email là gonzalo @ gonzalo.tên (his blog)
+0

Tôi chỉnh sửa câu hỏi của mình sau khi thử giải pháp của bạn. –

3

Theo dõi lỗi 606002 - đây là mã để bỏ qua mã lỗi đã nói. Gọi nó một lần trong lần khởi tạo của bạn

  ServicePointManager.ServerCertificateValidationCallback += delegate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors sslPolicyErrors) { 
      if (sslPolicyErrors == SslPolicyErrors.RemoteCertificateChainErrors) { 
       foreach (X509ChainStatus status in chain.ChainStatus) { 
        if (status.Status != X509ChainStatusFlags.RevocationStatusUnknown) { 
         return false; 
        } 
       } 
       return true; 
      } 

      return false; 
     };