2012-06-15 29 views
11

Có thể sử dụng TLSv.1.2 hoặc TLSv1.1 với Ruby không?Có thể bật TLS v1.2 trong Ruby không? Nếu vậy, làm thế nào?

tôi đã biên soạn một phiên bản Frankenstein của Ruby sử dụng OpenSSL 1.0.1c (mới nhất có sẵn) và chỉ khác biệt được là SSLv2 nay là một lựa chọn dưới OpenSSL::SSL::SSLContext::METHODS

Có thể để thêm vào danh sách đó TLSv1.2 ?

+0

Điều kiện tiên quyết liên quan là OpenSSL 1.0.0 trở lên. OpenSSL 0.9.8 không * không * cung cấp các giao thức hoặc bộ mã hóa. – jww

Trả lời

25

Có, chúng tôi đã thêm TLS 1.1 & 1.2 hỗ trợ recently. Đó là dễ dàng như việc thiết lập ssl_version trên SSLContext của bạn:

ctx = OpenSSL::SSL::SSLContext.new 
ctx.ssl_version = :TLSv1_2 

Bạn vẫn có thể tiếp tục sử dụng chung chung hơn :SSLv23 cho khả năng tương tác tối đa. Nó sẽ có hiệu lực là giao thức mới nhất được hỗ trợ bởi peer sẽ được sử dụng cho kết nối. Nếu đồng đẳng của bạn hiểu TLS 1.2, thì nó sẽ được sử dụng. Nhưng trái ngược với mẫu trên, nếu ngang hàng không nói 1.2, thì việc triển khai sẽ tự động quay trở lại phiên bản tốt nhất/mới nhất mà peer thực hiện hiểu - trong ví dụ trên, kết nối sẽ bị từ chối bởi nếu nó không nhận ra 1.2.

Để biết thêm chi tiết, cũng có một cái nhìn tại OpenSSL's own docs về đề tài này, bạn có thể chuyển những gì đang được nói về TLSv1_method để TLSv1_1_method và TLSv1_2_method (đại diện trong Ruby như :TLSv1, :TLSv1_1:TLSv1_2 tương ứng).

Nếu OpenSSL cơ bản của bạn hỗ trợ TLS 1.2 (> = 1.0.1), bạn nên sử dụng. Tuy nhiên, điều này đòi hỏi một Ruby xây dựng từ thân cây hiện nay. Nhưng nếu chúng tôi không nhận được phản hồi tiêu cực trong thời gian chờ đợi, nó có thể là nó sẽ được trả lại cho bản phát hành 1.9.3 tiếp theo.

+0

Tôi rất muốn có mục này, có điều gì tôi có thể làm để giúp đỡ không? – lcarpenter

+0

Trừ khi sẽ có khiếu nại trong tương lai gần, tôi khá tự tin rằng điều này sẽ được trả lại cho bản phát hành 1.9.3 tiếp theo. Nếu bạn muốn tiến hành quá trình này, bạn có thể mở một vé trên http://bugs.ruby-lang.org/projects/ruby-193, gán cho tôi và cho tôi biết backport r35549 và r35567 :) – emboss

+0

@ emboss là bao giờ này backported đến 1.9.3? –

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