Là một phần của quá trình triển khai khởi động an toàn linux của chúng tôi bằng cách sử dụng dm-verity và kiểm tra chữ ký băm gốc, tôi cần ký một tệp bằng lệnh openssl sau (ví dụ):
openssl smime -sign -nocerts -noattr -binary -in unsigned.txt -inkey private.key -signer cert.pem -outform der -out sign.txt
Điều này tạo ra tệp PKCS#7 mà sau đó nhân linux có thể xử lý thành công.
Nhưng để sản xuất, chúng tôi không sử dụng openssl nhưng PrimeKey Signserver (dựa trên bouncycastle) với người ký CMS. Ở đây, tôi không thể định cấu hình trình ký CMS để tạo PKCS#7 đang hoạt động cho đến nay. Vấn đề là sự khác biệt trong digest_enc_algorithm như trong hình bên dưới (Trái: signserver, phải: openssl).
Vấn đề là, rằng các kernel sẽ không hỗ trợ OID đó. Chỉ cần thêm sha256WithRsaEncryption vào công tắc sẽ khắc phục sự cố, nhưng tôi không chắc liệu đây có phải là giải pháp hợp lệ hay không.
Một "cách khắc phục" khác mà tôi tìm thấy chỉ đơn giản là thay thế OID của tệp PKCS#7 đã ký, điều này cũng đặt ra một số câu hỏi cho tôi?!
Bây giờ câu hỏi của tôi:
- Có sự khác biệt thực sự giữa rsaEncryption và sha256WithRsaEncryption trong bối cảnh đó không?
- Tại sao có thể thay đổi tệp PKCS#7 và mọi thứ đều hoạt động tốt?
- Nó có phải là một sửa chữa hợp lệ để thêm OID trong trường hợp chuyển đổi trong kernel không? (ít nhất là từ góc độ tiền điện tử)
Cảm ơn sự hỗ trợ của bạn!
CẬP NHẬT: Tìm thấy vấn đề này trên hồ sơ tồn đọng của PrimeKey signserver.