Ký mã Ad-Hoc
Đối với các ứng dụng và nhị phân của bên thứ ba mà bạn tự biên dịch và yêu cầu ký mã, hãy sử dụng chữ ký mã ad hoc .
- Tôi giả sử ứng dụng sẽ không chạy nếu không có chữ ký;
- Tôi giả sử ứng dụng sẽ không được phân phối;
- Tôi cho rằng bạn không quan tâm đến danh tính của chữ ký là hợp lệ.
Một chữ ký đặc biệt không cung cấp lợi ích bảo mật đáng tin cậy. Nó có thể được sử dụng để xác định xem ứng dụng đã được thay đổi hay chưa và nó có thể được sử dụng để áp dụng các hạn chế bảo mật, chẳng hạn như quyền lợi, cho ứng dụng.
Một chữ ký đặc biệt sẽ xác nhận chống lại codesign
nhưng không spctl
. Điều này có thể hoặc không quan trọng tùy thuộc vào nhị phân được ký. Đối với các ứng dụng và tệp thực thi, điều này dường như không quan trọng vì spctl
không chạy trên các tệp nhị phân được tạo cục bộ.
Tại sao ký mã?
Về câu hỏi tinh tế:
Làm thế nào tôi nên xử lý mã nguồn không dấu mà tôi tự biên dịch, vì tôi không mong muốn những người đóng góp luôn có thể, hoặc nhớ, ký mã của họ, đặc biệt là khi đóng góp nhỏ cho các dự án nguồn mở có nhiều người đóng góp.
Đối với hầu hết các ứng dụng tự biên dịch, không cần ký mã. Điều này giả định rằng bạn tin tưởng mã của ứng dụng. Trên macOS, bạn có thể mở các ứng dụng không đáng tin cậy từ Finder, xem phần Mở ứng dụng của Apple từ một nhà phát triển không xác định .
Nếu bạn không tin tưởng mã hoặc nhà phát triển, không biên dịch hoặc chạy ứng dụng.
Trách nhiệm của bạn
Nhà cung cấp mã nguồn không có trách nhiệm hoặc nghĩa vụ cung cấp mã nhị phân được xây dựng trước. Được tự biên soạn, tất cả ký mã là sự lựa chọn và trách nhiệm của bạn.
Apple yêu cầu gửi đến Cửa hàng ứng dụng của họ để được ký mã.
Apple yêu cầu các nhà phát triển bên ngoài Cửa hàng ứng dụng của họ ký mã, nhưng chưa được yêu cầu.
Trong cả hai trường hợp, chỉ có các nhị phân cuối cùng được ký. Mã nguồn ban đầu và tài nguyên không được ký.
Mã nguồn không được ký
Bản thân mã nguồn không thể là mã được ký theo cách có ý nghĩa đối với macOS. Các tệp nguồn và mã có thể được ký bằng kỹ thuật số, như bất kỳ tệp nào khác có thể, nhưng điều này không ảnh hưởng đến cách ứng dụng hoặc nhị phân kết quả được xử lý bởi macOS.
Cách mã Ad-Hoc Đăng ký ứng dụng Mac
Để mã hóa ứng dụng trên macOS bằng chữ ký đặc biệt, hãy đặt -s
cờ nhận dạng thành -
:
codesign --force -s - </path/to/application>
Tất cả các quy tắc, yêu cầu và hoán vị khác của codesign
lệnh vẫn giữ nguyên.
Cờ --force
được sử dụng ở đây để ghi đè bất kỳ chữ ký hiện có.
Bạn có thể cần thêm --deep
cờ vào codesign
lệnh để ký các tài nguyên phụ như khung và dịch vụ nhúng.