2011-02-19 26 views
11

Tôi đang sử dụng OpenSSL để xác minh chứng chỉ của máy chủ. Vì OpenSSL được vận chuyển mà không có bất kỳ CA gốc tích hợp nào, chúng ta phải phân phối chứng chỉ CA gốc với phần mềm của chúng tôi (chúng tôi liên kết tĩnh OpenSSL). Thông thường, cách để làm điều này là phân phối tệp chứng chỉ ở định dạng PEM và gọi SSL_CTX_load_verify_locations.C++/OpenSSL: Sử dụng CA gốc từ bộ đệm thay vì tệp (SSL_CTX_load_verify_locations)

Tuy nhiên, hàm này có đường dẫn tệp/thư mục và đọc (các) tệp chứng chỉ gốc trực tiếp từ hệ thống tệp. Chúng tôi thực sự muốn có thể mã hóa cứng chứng chỉ vào tệp nhị phân của chúng tôi thay vì lưu nó vào hệ thống tệp.

Nói cách khác, chúng tôi thực sự muốn có một chức năng như SSL_CTX_load_verify_locations lấy X509 * thay vì đường dẫn tệp.

Có điều gì như thế này không? hoặc có cách nào dễ dàng để tự hack với nhau? Chúng tôi dường như không thể tìm thấy nhiều thông tin về điều này.

Cảm ơn bạn rất nhiều vì bất kỳ đề xuất nào!

+0

Điều gì ngăn bạn lưu chứng chỉ gốc được mã hóa cứng trên đĩa trước khi gọi SSL_CTX_load_verify_locations? –

+0

Không có gì ngăn cản nó: tuy nhiên, chúng tôi là một ứng dụng bảo mật và lo lắng về sự can thiệp độc hại. Đặc biệt, nếu dễ định vị và ghi đè lên tệp chứng chỉ gốc của chúng tôi thì bạn có thể cản trở bất kỳ giao dịch SSL nào của chúng tôi. Chúng tôi sẽ đi tuyến đường này nếu cần thiết, nhưng nó sẽ là tuyệt vời để có thể biên dịch các chứng chỉ gốc vào bản thân nhị phân. – DSII

+0

Nó không an toàn hơn để mã hóa CA gốc của bạn được mã hóa cứng hơn giữ nó trong một tệp. –

Trả lời

18

Chức năng SSL_CTX_get_cert_store() thể được sử dụng để có được một xử lý đến các cửa hàng giấy chứng nhận sử dụng để xác minh (X509_STORE *), và X509_STORE_add_cert() chức năng (trong openssl/x509_vfy.h) sau đó có thể được sử dụng để thêm một chứng chỉ trực tiếp với cửa hàng chứng chỉ.

+0

Hoàn hảo! Cảm ơn nhiều; điều này hoạt động tuyệt vời. Chính xác những gì tôi đang tìm kiếm. Cảm ơn! – DSII

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