Làm cách nào để trích xuất tất cả các đối tượng của cacertfile bằng dòng lệnh openssl?


8

Có một lệnh openssl để trích xuất tất cả các đối tượng certifacte của một cacertfile (một tệp chứa một số chứng chỉ như /etc/ssl/certs/ca-certert.crt)?

Tôi đã thử openssl x509 -in /etc/ssl/certs/ca-certificates.crt -noout -subjectnhưng nó chỉ cho tôi chủ đề của chứng chỉ đầu tiên.

Câu trả lời:


5

Thật không may, tôi không tin OpenSSL có thể làm điều đó. OpenSSL giả định một chứng chỉ cho mỗi tệp cho các hành động x509.

Theo trang web này, bạn phải chia chúng thành các tệp riêng lẻ. Anh ta thậm chí còn cung cấp một kịch bản perl sẽ phân chia nó cho bạn. Sau đó, bạn có thể lặp qua các tệp hoặc sửa đổi tập lệnh perl để trích xuất chủ đề trực tiếp.


1

Đặt filebiến để trỏ đến tệp của bạn, sửa đổi lệnh openssl và bạn tốt để đi:

file="your file name"; first=""; for i in $(grep -n CERT "${file}" | cut -f 1 -d:)
do
    if [ -z "$first" ]
    then
        first=$i
        continue
    fi
    sed -n "$first,${i}p" "${file}" | openssl x509 -noout -subject
    first=""
done

Câu trả lời này có thể được cải thiện bằng cách thêm một mô tả về cách các lệnh hoạt động. Và BTW, bạn không cần niềng răng xoăn ${file}.
G-Man nói 'Phục hồi Monica'

tập lệnh này hoạt động chính xác như mong đợi, nó lấy từng phần chứng chỉ ra khỏi tệp (chuỗi) và hiển thị các dòng chủ đề
user906361

0

Để in tất cả các đối tượng trong tệp CA:

openssl crl2pkcs7 -nocrl -certfile ca-certificates.crt | openssl pkcs7 -print_certs -text -noout | grep 'Subject:'

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.