2008-09-25 46 views
7

Tôi thiết lập nhà cung cấp id mở của riêng mình trên máy chủ cá nhân của mình và thêm chuyển hướng đến https trong tệp cấu hình apache của tôi. Khi không sử dụng kết nối an toàn (khi tôi tắt chuyển hướng), tôi có thể đăng nhập tốt, nhưng với chuyển hướng tôi không thể đăng nhập bằng thông báo lỗi này:OpenID Over SSL với chứng chỉ tự ký

Kết nối cơ bản đã bị đóng: Không thể thiết lập mối quan hệ tin cậy cho kênh bảo mật SSL/TLS.

Tôi đoán rằng điều này là do tôi đang sử dụng chứng chỉ tự ký.

Có ai có thể xác nhận nếu chứng chỉ tự ký là vấn đề không? Nếu không ai có bất kỳ ý tưởng gì vấn đề là gì?

Trả lời

8

Lợi ích chính của việc sử dụng SSL cho URL OpenID của bạn là nó mang lại cho bên dựa cơ chế để khám phá xem DNS có bị giả mạo hay không. Không thể cho bên phụ thuộc biết được liệu URL OpenID có chứng chỉ tự ký đã bị xâm phạm hay chưa.

Có những lợi ích khác mà bạn nhận được từ việc sử dụng SSL trên URL điểm cuối của nhà cung cấp của bạn (dễ thiết lập liên kết hơn, không nghe trộm dữ liệu tiện ích mở rộng) mà vẫn giữ nguyên nếu bạn sử dụng chứng chỉ tự ký, nhưng tôi sẽ xem xét là thứ yếu.

+0

Nếu tôi không thể sử dụng chứng chỉ tự ký thì tôi buộc phải sử dụng kết nối http trong trường hợp này tôi mất quyền lợi chính và phụ. Tôi không muốn URL được xác minh và gửi mật khẩu được mã hóa để không xác minh URL và gửi mật khẩu thuần văn bản. –

+0

Bạn có thể sử dụng https cho giao diện người dùng mà không thay đổi OpenID hoặc điểm cuối. Ví dụ, theo dõi lưu lượng myOpenID sử dụng khi xác thực số nhận dạng http. Nó chuyển tiếp trình duyệt từ điểm cuối http đến trang https. – keturn

+0

Um, nó * là * những gì bạn cần? Này, RP * không nên * làm việc với https cho các chứng chỉ tự ký nói chung. Bất kể thủ thuật nào bạn chơi với các chuyển hướng, bạn không nhận được sự bảo mật của việc sử dụng SSL trừ khi bạn có một chứng chỉ được ký bởi một người nào đó mà ủy thác RP tin tưởng. –

2

Nghe có vẻ như vậy. Máy khách của máy chủ OpenID của bạn không tin cậy vào cơ quan chứng nhận gốc.

+0

Điều đó có ý nghĩa vì tôi đã tự tạo chứng chỉ. Tôi không cảm thấy cần phải chi trả 200 đô la một năm chỉ vì vậy một hộp cảnh báo không thường xuyên không bật lên. Đặc biệt là vì tôi là người duy nhất kết nối với máy. –

3

(Tuyên bố từ chối trách nhiệm: Tôi mới dùng OpenID, vì vậy tôi có thể sai ở đây.) Giao tiếp giữa Người tiêu dùng ID mở (ví dụ: StackOverflow) và Nhà cung cấp ID mở (máy chủ của bạn) không yêu cầu HTTPS - sẽ hoạt động tốt và an toàn trên HTTP thuần túy. Những gì bạn cần làm là định cấu hình máy chủ của mình để chuyển sang HTTPS chỉ khi nó hiển thị cho bạn trang đăng nhập của bạn. Trong trường hợp đó, chỉ trình duyệt của bạn cần phải tự quan tâm đến chứng chỉ tự ký. Bạn có thể nhập chứng chỉ vào PC của mình và mọi thứ sẽ an toàn như với chứng chỉ do Verisign cấp.

5

OpenID được thiết kế theo cách chuyển hướng minh bạch. Miễn là các cặp khóa/giá trị cần thiết được duy trì ở mỗi chuyển hướng, bằng GET hoặc POST, mọi thứ sẽ hoạt động chính xác.

Giải pháp dễ nhất để đạt được khả năng tương thích với người tiêu dùng không làm việc với chứng chỉ tự ký là sử dụng điểm cuối không được mã hóa chuyển hướng các thông báo checkid_immediatecheckid_setup tới một thư được mã hóa.

Làm điều này trong mã máy chủ của bạn dễ dàng hơn so với chuyển hướng máy chủ web vì trước đây có thể dễ dàng xử lý các yêu cầu POST hơn, đồng thời cũng giữ mã với nhau. Hơn nữa, bạn có thể sử dụng cùng một điểm kết thúc để xử lý tất cả các hoạt động OpenID, bất kể nó có nên được phân phối qua SSL hay không, miễn là kiểm tra thích hợp được thực hiện.

Ví dụ, trong PHP, chuyển hướng có thể đơn giản như:

// Redirect OpenID authentication requests to https:// of same URL 
// Assuming valid OpenID operation over GET 
if (!isset($_SERVER['HTTPS']) && 
     ($_GET['openid_mode'] == 'checkid_immediate' || 
     $_GET['openid_mode'] == 'checkid_setup')) 
    http_redirect("https://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}"); 

Là giá trị openid.return_to được tạo ra với một đồng bằng HTTP điểm cuối, như xa như người tiêu dùng được quan tâm, nó chỉ là xử lý một máy chủ không được mã hóa. Giả sử OpenID 2.0 hoạt động đúng với phiên và nonces, bất kỳ thông tin nào được truyền giữa người tiêu dùng và máy chủ của bạn không được tiết lộ thông tin có thể khai thác được. Các hoạt động giữa trình duyệt của bạn và máy chủ OpenID, có thể khai thác được (lấy cắp mật khẩu hoặc cướp cookie phiên) được thực hiện qua kênh được mã hóa.

Ngoài việc lưu giữ những người nghe lén, việc thực hiện các hoạt động xác thực qua SSL cho phép bạn sử dụng cờ cookie secure HTTP. Điều này cho biết thêm một lớp bảo vệ cho hoạt động checkid_immediate, nếu bạn muốn cho phép nó.

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