การลงโฆษณาแบบ Ad-Hoc
สำหรับการใช้งานของบุคคลที่สามและไบนารีที่คุณรวบรวมตัวเองและที่จำเป็นต้องมีการลงนามรหัสใช้เฉพาะกิจลายเซ็นรหัส
- ฉันสมมติว่าแอปพลิเคชันจะไม่ทำงานหากไม่มีลายเซ็น
- ฉันสมมติว่าแอปพลิเคชันจะไม่ถูกแจกจ่าย
- ฉันสมมติว่าคุณไม่สนใจเกี่ยวกับตัวตนของลายเซ็นที่ถูกต้อง
ลายเซ็นเฉพาะกิจไม่ได้ให้ประโยชน์ด้านความปลอดภัยที่เชื่อถือได้ สามารถใช้เพื่อพิจารณาว่าแอปพลิเคชันมีการเปลี่ยนแปลงหรือไม่และสามารถใช้เพื่อใช้ข้อ จำกัด ด้านความปลอดภัยเช่นการให้สิทธิ์กับแอปพลิเคชัน
ลายเซ็นเฉพาะกิจจะทำการตรวจสอบแต่ไม่codesign
spctl
สิ่งนี้อาจจะหรืออาจไม่สำคัญขึ้นอยู่กับไบนารีที่กำลังเซ็นชื่อ สำหรับแอปพลิเคชันและไฟล์ที่เรียกใช้งานสิ่งนี้ไม่น่าเป็นเรื่องสำคัญเนื่องจากspctl
ไม่ได้ทำงานบนไบนารีที่สร้างขึ้นในเครื่อง
ทำไมต้องเซ็นรหัส
เกี่ยวกับคำถามกลั่น:
ฉันควรจัดการซอร์สโค้ดที่ไม่ได้ลงนามที่ฉันรวบรวมเองได้อย่างไรเนื่องจากฉันไม่คาดหวังว่าผู้กระทำความผิดจะสามารถลงนามหรือจำรหัสผ่านของพวกเขาได้โดยเฉพาะอย่างยิ่งเมื่อมันมีส่วนร่วมเพียงเล็กน้อยในโครงการโอเพ่นซอร์ส
สำหรับแอปพลิเคชันที่รวบรวมด้วยตนเองส่วนใหญ่ไม่จำเป็นต้องมีการเซ็นชื่อรหัส สิ่งนี้จะถือว่าคุณเชื่อถือรหัสของแอปพลิเคชัน บน MacOS คุณสามารถเปิดการใช้งานที่ไม่น่าเชื่อถือจาก Finder ดูแอปเปิ้ลเปิดแอปจากนักพัฒนาที่ไม่ปรากฏชื่อ
หากคุณไม่เชื่อถือรหัสหรือนักพัฒนาอย่ารวบรวมหรือเรียกใช้แอปพลิเคชัน
ความรับผิดชอบของคุณ
ผู้ให้บริการของซอร์สโค้ดไม่มีความรับผิดชอบหรือภาระผูกพันในการจัดเตรียมไบนารีที่ลงนามโค้ดไว้ล่วงหน้า การรวบรวมด้วยตนเองการเซ็นรหัสทั้งหมดเป็นตัวเลือกและความรับผิดชอบของคุณ
ในทั้งสองกรณีจะมีการลงชื่อเฉพาะไบนารีสุดท้ายเท่านั้น รหัสต้นฉบับและทรัพยากรไม่ได้ลงนาม
รหัสที่มาไม่ได้ลงนาม
ซอร์สโค้ดเองไม่สามารถลงชื่อในโค้ดอย่างมีความหมายสำหรับ macOS ไฟล์และรหัสต้นฉบับสามารถเซ็นชื่อแบบดิจิทัลได้เช่นเดียวกับไฟล์อื่น ๆ แต่สิ่งนี้ไม่ส่งผลกระทบต่อวิธีที่แอปพลิเคชันหรือไบนารีที่ได้รับการปฏิบัติโดย macOS
วิธี Ad-Hoc Code ลงนามใน Mac Application
ในการกำหนดรหัสแอปพลิเคชันบน macOS ด้วยลายเซ็น ad-hoc ให้ตั้งค่า-s
สถานะidentity เป็น-
:
codesign --force -s - </path/to/application>
กฎข้อกำหนดและการเปลี่ยนลำดับอื่น ๆ ทั้งหมดcodesign
ยังคงเหมือนเดิม
การตั้งค่าสถานะ--force
ใช้ที่นี่เพื่อเขียนทับลายเซ็นที่มีอยู่
คุณอาจต้องเพิ่มการ--deep
ตั้งค่าสถานะลงในcodesign
คำสั่งเพื่อลงนามทรัพยากรย่อยเช่นกรอบงานและบริการแบบฝัง