openssl chứng chỉ CA không hợp lệ


8

Tôi đang thiết lập OpenVPN từ máy chủ đến máy chủ với cơ sở hạ tầng PKI và không thể làm cho nó hoạt động. Tôi nghi ngờ đó là một cái gì đó trong chuỗi chứng chỉ, nhưng tôi không thể giải thích làm thế nào. Tôi có Root CA ngoại tuyến và phân cấp chứng chỉ. Các CA được quản lý bên ngoài bởi một sản phẩm có tên EJBCA. Về mặt hình ảnh, chuỗi trông như thế này (với tên đã thay đổi):

RootCA -> OnlineSubCA -> SubCA1 -> VPNCA

Tôi đã ký chứng chỉ máy chủ và máy khách với CA VPNCA và có chuỗi chứng chỉ trên các hệ thống đó. Trong khi gỡ lỗi OpenVPN, tôi đã thử sử dụng "openssl s_server" và s_client ", khiến tôi tin rằng đó là chuỗi CA. Cụ thể trên máy chủ:

openssl s_server -cert server.cert -key server.key -CAfile chained.pem -verify 5

và trên khách hàng

openssl s_client -cert client.cert -key client.key -CAfile chained.pem -verify 5

máy chủ quay trở lại, trong số những thứ khác:

depth=3 C = CA, O = My Company, CN = OnlineSubCA
verify error:num=24:invalid CA certificate
verify return:1
depth=3 C = CA, O = My Company, CN = OnlineSubCA
verify error:num=26:unsupported certificate purpose
verify return:1
depth=4 C = CA, O = My Company, CN = RootCA, emailAddress = certs@mycompany.com
verify return:1
depth=3 C = CA, O = My Company, CN = OnlineSubCA
verify return:1
depth=2 CN = SubCA1, O = My Company, C = CA
verify return:1
depth=1 CN = VPNCA
verify return:1
depth=0 C = CA, ST = , L = , O = My Company, OU = , CN = client1.mycompany.com, emailAddress = pki@mycompany.com
verify return:1

và tôi hoàn toàn mất mát để giải thích làm thế nào hoặc tại sao lại như vậy. OpenVPN cũng không thành công với một lỗi tương tự, từ máy khách:

VERIFY ERROR: depth=3, error=invalid CA certificate: /C=CA/O=My_Company/CN=OnlineSubCA

Tôi đang chạy OpenVPN 2.2.1 và OpenSSL 1.0.1 trên Ubuntu 12.04. Thời gian đồng bộ trên cả hai.

Tôi không biết làm thế nào để tiếp tục. Bất kỳ ý tưởng / đề xuất sẽ được đánh giá rất cao.

Câu trả lời:


16

Đây là một vấn đề với các phần mở rộng X509v3. Chứng chỉ hiện đại được ký theo cách chỉ ra việc sử dụng được phê duyệt cho loại chứng chỉ đó. Chúng có thể được hiển thị bằng cách dẫn chứng chỉ vào openssl x509 -texthoặc chỉ định đường dẫn tệp với -in.

Trong trường hợp của bạn, các thông báo lỗi này cho biết chứng chỉ bạn chỉ định không phải là chứng chỉ CA. (gợi ý lớn nhất là "mục đích chứng chỉ không được hỗ trợ") Sử dụng lệnh trên, hiển thị thông tin văn bản của chứng chỉ. Một chứng chỉ CA hợp lệ sẽ đọc như vậy:

        X509v3 Basic Constraints:
            CA:TRUE

Một chứng chỉ không phải CA sẽ hiển thị điều này thay vào đó:

        X509v3 Basic Constraints:
            CA:FALSE

Bạn có thể đã nhận được các tập tin của mình lộn xộn, đó là một điều khá dễ dàng khi di chuyển các tập tin xung quanh. openssl x509sẽ chiếu một chiếc kính lúp vào nội dung của các certs thực tế.


Đó thực sự là vấn đề, kiểm tra chứng chỉ thứ 2 cho thấy "CA: FALSE". Nó dường như được thiết lập theo cách đó trong EJBCA, đó là một lỗi, tôi có thể phải tạo lại nó. Cảm ơn Andrew!
Michael Hart

Vui vì nó đã giúp. :)
Andrew B

7
Ngoài ra, bạn sẽ nhận được 26 / mục đích chứng chỉ không được hỗ trợ nếu bạn có "hạn chế" là một ràng buộc cơ bản nhưng chứng chỉ của bạn không được ký / tin cậy bởi một trong những cơ quan hợp pháp (chạy vào thử này sử dụng một CA gốc tự ký)
Zerkz
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.