Lưu ý: Đây thực sự không phải là một câu hỏi vì tôi đã tìm thấy câu trả lời nhưng vì tôi không tìm thấy nó dễ dàng ở đây nên tôi sẽ đăng nó để nó có thể mang lại lợi ích cho người khác.
Câu hỏi: Làm thế nào để đọc tệp PEM được nối với nhau như tệp được sử dụng bởi lệnh apache / mod_ssl SSLCACertertFile ?
Trả lời (bản gốc) ( nguồn ):
cat $file|awk 'split_after==1{n++;split_after=0} /-----END CERTIFICATE-----/ {split_after=1} {print > "cert" n ".pem"}'
Điều này có thể để lại một tập tin trống nếu có một dòng trống ở cuối, chẳng hạn như với openssl pkcs7 -outform PEM -in my-chain-file -print_certs
. Để ngăn chặn điều đó, hãy kiểm tra độ dài của dòng trước khi in:
cat $file|awk 'split_after==1{n++;split_after=0}
/-----END CERTIFICATE-----/ {split_after=1}
{if(length($0) > 0) print > "cert" n ".pem"}'
Trả lời 29/03/2016 :
Theo câu trả lời @slugchewer , csplit
có thể là một tùy chọn rõ ràng hơn với:
csplit -f cert- $file '/-----BEGIN CERTIFICATE-----/' '{*}'
openssl
lấy một chứng chỉ để phân tích.