2011-09-14 34 views
5

Với việc di chuyển SSL sắp tới tại Facebook vào ngày 1 tháng 10, tất cả các ứng dụng sẽ phải hỗ trợ các kết nối qua HTTPS và bạn sẽ cần chứng chỉ SSL.Cách tốt nhất để nâng cấp một ứng dụng đường ray để hỗ trợ Facebook SSL là gì?

  • Có sự cố nào xảy ra khi mọi người nên vá ứng dụng không?
  • Bạn có phải sử dụng Apache và Hành khách, xginx hoặc máy chủ khác không?
  • Có bất kỳ chứng chỉ đáng tin cậy miễn phí nào không?

Trả lời

4

Có chạy xuống bất cứ đâu về cách một người nên vá ứng dụng không?

Không thực sự. Tại sao? Bởi vì tất cả phụ thuộc vào phiên bản đường ray bạn đang chạy.

Đối với Rails 2.x, tôi đã đọc/nghe nói về kỹ thuật bao gồm:

  1. ModRewrite - sử dụng khả năng của máy chủ web để phát hiện và viết lại HTTP thành HTTPS. Kỹ thuật này tổng quát hơn và có thể áp dụng cho toàn bộ công nghệ, không chỉ là đường ray (python, java hoặc thậm chí .net).
  2. Sử dụng gem ssl_requirement - điều này cho phép bạn khai báo một cách rõ ràng các lệnh trong bộ điều khiển của bạn để chuyển hướng đến https nếu giao thức là http (https://github.com/retr0h/ssl_requirement). Mặc dù đơn giản, ứng dụng ruby ​​của bạn sẽ phải xử lý yêu cầu và tôi không chắc chắn về việc làm thế nào để nhận được nhanh chóng.
  3. Sử dụng giá trung gian (rack-ssl, rack-ssl-enforcer gem) - điều này sẽ khắc phục yêu cầu xử lý đường ray, để chuyển hướng được xử lý tốt trước khi nó chạm bất kỳ bộ điều khiển nào. Điều này cũng có thể được cấu hình (bạn có thể so khớp dựa trên đường dẫn vv) và có lẽ tốt hơn so với tùy chọn 2.

Đối với Rails 3.1, nó được đưa vào khung. Bạn chỉ cần thực hiện việc này:

# config/application.rb 
module MyApp 
    class Application < Rails::Application 
    config.force_ssl = true 
    end 
end 

Bạn sẽ phải sử dụng Apache và hành khách?

Không nhất thiết. Có các tùy chọn khác như NGinx và Hành khách. Nhưng nói chung, có bạn có thể sẽ cần một máy chủ web thích hợp ngồi ở phía trước, xử lý phần SSL của yêu cầu.

Thông thường, máy chủ web bắt buộc phải ngồi trước ứng dụng của bạn. Nó cần phải được cấu hình để xử lý lưu lượng SSL, và hướng các yêu cầu đến ứng dụng của bạn (http và https). Ở đây bạn có thể sử dụng Apache hoặc NGinx.

Hành khách ngồi như một "plugin" trong Apache/NGinx để xử lý các yêu cầu thông qua ứng dụng của bạn. Tại thời điểm này, SSL thường không phải là một mối quan tâm (ví dụ: yêu cầu hiện không được mã hóa.). Ứng dụng của bạn phải làm gì, xử lý yêu cầu. Đây là nơi bạn phát hiện nếu giao thức là http hoặc https và hướng dẫn trình duyệt chuyển hướng nếu cần.

Có bất kỳ chứng chỉ đáng tin cậy miễn phí nào không?

Không. Chứng chỉ đáng tin cậy thường được ký bởi Tổ chức phát hành chứng chỉ. Những người này thường phải kiểm tra xem tên miền của bạn và công ty hoặc cá nhân nắm giữ tên miền là chính hãng và có thật. Để làm điều đó, bạn phải trả tiền. Có rất nhiều nhà cung cấp trên mạng có thể cấp cho bạn một chứng chỉ SSL khoảng 100 đô la Mỹ. Một số chi tiết, một số ít hơn.

Certs thường được khóa vào một miền. Và bạn trả tiền nhiều hơn cho các kết hợp tên miền ký tự đại diện (ví dụ: * .myapp.com). Nếu bạn đang theo đuổi chứng chỉ phát triển, bạn có thể tạo chứng chỉ tự ký.

Tôi đã viết một article showing you how to get HTTPS going on your local dev instance. Nhiều bước cũng phổ biến cho sản xuất. Bài viết cho bạn biết cách thiết lập cho POW và NGinx, nhưng việc thiết lập Apache và Passenger không phải là quá khác nhau. Cấu hình Apache khác nhau. Nhưng cài đặt và cài đặt Hành khách phải giống như môi trường http. Chỉ cần đảm bảo rằng máy chủ ảo bảo mật trong cấu hình Apache trỏ đến ứng dụng của bạn.

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