บริษัทที่ฉันทำงานต้องการให้ฉันใช้ฟังก์ชัน C บางอย่างเพื่อลงนามในซอฟต์แวร์โดยอัตโนมัติ หลังจากทำการวิจัยแล้ว ฉันพบว่า openSSL นั้นยอดเยี่ยมสำหรับการทำเช่นนั้น
ก่อนที่จะเริ่มใช้งานใน C ฉันต้องการเข้าใจเวิร์กโฟลว์โดยดำเนินการใน CLI ก่อน แต่นั่นทำให้ฉันสับสนเล็กน้อย เพราะฉันไม่แน่ใจว่าที่นี่ควรใช้ใบรับรองที่ไหน
นี่คือขั้นตอนที่ฉันได้ดำเนินการ:
- สร้างคีย์ส่วนตัว
$openssl genrsa -ออก privat.pem 2048
- แยกรหัสสาธารณะออกจากรหัสส่วนตัว
$ openssl rsa -in privat.pem -outform PEM -pubout -out public.pem
- ลงชื่อไฟล์ตัวอย่างด้วยคีย์ส่วนตัว
$ openssl dgst -sha256 - ลงชื่อ privat.pem - ออก sign.sha256 file.txt
- ตรวจสอบลายเซ็นด้วยรหัสสาธารณะ
$ openssl dgst -sha256 - ตรวจสอบ public.pem -signature sign.sha256 file.txt
ยืนยันตกลง
ตอนนี้ฉันจะใช้ใบรับรองใดเพื่อพิสูจน์ว่าซอฟต์แวร์มาจากบริษัท
นอกจากนี้ ซอฟต์แวร์ยังจัดส่งเป็นคอนเทนเนอร์แอปพลิเคชันสำหรับเดเบียน ซึ่งเราสร้างส่วนหัวของแอปพลิเคชันของเราเองด้วยข้อมูลเมตา เช่น เช็คซัม เป็นต้น ฉันจะต้องใส่ลายเซ็นในส่วนหัวนี้ด้วย เป็นความคิดที่ดีไหมที่จะเก็บเอาต์พุตของ sign.sha256 ไว้ที่นั่น อาจจะอยู่ใน Base64?