Tôi đang làm việc trên một dự án thú cưng (cuối cùng, khi được thực hiện) cho phép truyền tệp an toàn (có nhiều hơn thế, nhưng phần còn lại không liên quan đặc biệt). Tôi muốn sử dụng thư viện OpenSSL, vì nó có vẻ là thư viện mã hóa miễn phí hoàn chỉnh nhất (và tôi cần hỗ trợ mã hóa và băm đối xứng cơ bản, ngoài SSL/TLS).SSL/TLS không có chứng chỉ
Tôi đang tìm cách triển khai một sơ đồ bảo mật tương tự cho SSH. Về cơ bản, người dùng sẽ kết nối với máy tính của tôi bằng TLSv1 (SSLv3.1). Tôi muốn kết nối thành công bất kể an ninh. Sau đó, tôi muốn có thể kiểm tra khóa công khai (không phải toàn bộ chứng chỉ) mà người dùng đã sử dụng. Khóa đó sẽ được so sánh với các khóa công cộng đã biết và nếu nó khớp, thì người dùng sẽ được phép truy cập một bộ lệnh nhất định. Nếu không khớp, người dùng sẽ có tùy chọn sử dụng kết nối để đăng ký để có khóa công cộng của họ được thêm vào bộ sưu tập của tôi, nhưng ngoài việc đó sẽ không thể truy cập các dịch vụ của tôi.
Tôi không có bất kỳ nhu cầu cụ thể nào về chứng chỉ tại đây. Nó sẽ đơn giản hơn nhiều nếu tôi chỉ có thể bỏ qua tất cả các chi tiết chứng chỉ và chỉ làm việc với các khóa mã hóa thô. Điều này là do mô hình này tuân theo mô hình web-of-trust, không phải là mô hình phân cấp được sử dụng bởi hầu hết các kết nối SSL/TLS, vì vậy tôi không cần bất kỳ chứng chỉ nào của CA hoặc được ký.
Thật không may, tài liệu của hầu hết OpenSSL là, tốt, không tồn tại. Tất cả các bài viết liên quan mà tôi tìm thấy dường như bị chiếm đóng với việc thiết lập kết nối SSL/TLS "chuẩn", trong đó chứng chỉ của máy chủ được xác minh tất cả các cách lên đến một bộ chứng chỉ gốc. Điều này có thể hữu ích, nhưng thật khó để tôi tìm ra cách để có được các kết nối SSL không truyền thống này và chạy.
Có ai có thể đề xuất bất kỳ bài viết hoặc tài liệu nào có thể giúp tôi tìm ra cách thực hiện điều này không?
(Việc sử dụng OpenSSL không được đặt trong đá và tôi có thể chuyển sang thư viện khác nếu nó cung cấp cách tốt hơn để hoàn thành việc này, cũng như băm [SHA-512] và mã hóa đối xứng [AES]. ' m nhắm vào việc nhắm mục tiêu Linux, nhưng sẽ tốt nếu sản phẩm cuối cùng được chuyển sang Windows để bạn bè của tôi cũng có thể sử dụng nó.)
So sánh khóa công khai với danh sách khóa công khai về cơ bản là sử dụng mật khẩu, sẽ đánh bại toàn bộ PKI-ness của https và ssl. Đề xuất tạo và sử dụng chứng chỉ tự ký là một điều tốt nếu bạn kiểm soát cả phần mềm máy khách và máy chủ (để bạn có thể cấu hình mối quan hệ tin cậy). –
@AdamLiss, không, nó không giống như mật khẩu: người dùng không bao giờ phải gửi khóa riêng, trong khi người dùng sẽ phải gửi mật khẩu. (Và so sánh các chứng chỉ tự ký trong một danh sách khá giống với việc so sánh các khóa công khai của chúng.) – Bruno
Tôi không sử dụng PKI. Ý tưởng là nếu bạn là "người bạn" của tôi (tôi có khóa công khai/cert), thì bạn có thể tải xuống các tệp (mà tôi chỉ định) từ các tệp PLUS trên máy tính mà tôi có thể tải xuống từ bạn bè của tôi. Việc nắm bắt là bạn không thể thấy nơi các tập tin đến từ (có nghĩa là, nếu A và B là bạn bè, và B và C là bạn bè, A có thể tải xuống từ C đến B, nhưng không biết về C ở tất cả) . Ít nhất, đó là ý tưởng trong một nutshell. [OneSwarm] (http://www.oneswarm.org/) đã cho tôi cảm hứng cho dự án này. – Ethan