ฉันออกคำสั่งต่อไปนี้เพื่อสร้างลายเซ็นสำหรับไฟล์ (เคอร์เนล Linux):
openssl req -newkey rsa -keyout codesign.key -out codesign.req
openssl ca -config ca.cnf -extensions codesigning -in codesign.req -out codesign.crt
openssl cms -sign -binary -noattr -in vmlinuz -signer codesign.crt -inkey codesign.key -certfile ca.crt -outform DER -out vmlinuz.sig
ca.cnf
ไฟล์สำหรับโครงสร้างพื้นฐาน CA ส่วนตัวของฉันเองและมีส่วนขยายการใช้คีย์ digitalSignature และเปิดใช้งานส่วนขยายการใช้คีย์นามสกุล codeSigning
รูปแบบ Ca.cnf:
[ca]
default_ca = ca_default
[ca_default]
ใบรับรอง = ca.crt
private_key = ca.key
serial = ca.srl
ฐานข้อมูล = ca.idx
new_certs_dir = / home / apoorv / โปรเจ็กต์ / ลงนาม
default_md = ค่าเริ่มต้น
policy = policy_anything
ถนอม = ใช่
default_days = 90
unique_subject = no
[นโยบาย _ ทุกอย่าง]
countryName = เป็นทางเลือก
stateOrProvinceName = เป็นทางเลือก
localityName = เป็นทางเลือก
OrganizationName = เป็นทางเลือก
enterpriseUnitName = เป็นทางเลือก
commonName = เป็นทางเลือก
emailAddress = เป็นทางเลือก
[ข้าม]
basicConstraints = critical, CA: true
keyUsage = สำคัญ, cRLSign, keyCertSign
[Codeigning]
keyUsage = digitalSignature
ExtendedKeyUsage = codeSigning
คำสั่ง: openssl cms - ยืนยัน -binary -content vmlinuz -inform DER -in vmlinuz.sig -CAfile ca.crt
เอาท์พุท:
การตรวจสอบล้มเหลว 140187569694352: ข้อผิดพลาด: 2E099064: รูทีน CMS: CMS_SIGNERINFO_VERIFY_CERT: ข้อผิดพลาดในการตรวจสอบใบรับรอง: cms_smime.c: 287: ตรวจสอบข้อผิดพลาด: วัตถุประสงค์ของใบรับรองที่ไม่สนับสนุน
คุณช่วยกรุณาป้อนข้อมูลใด ๆ ได้บ้าง ?? ขอบคุณมาก.