Trong thực tế, thông báo "Nhà phát triển không xác định ..." là kết quả của sự kết hợp của cả hai tác vụ: kiểm tra thuộc tính com.apple.quarantine và tài nguyên ký mã (trong * / Nội dung / _CodeSignature / CodeResource) trong khi trạng thái ký thực tế là chỉ được xác định bởi * / CodeResource .
Bạn có thể có được thuộc tính mở rộng bằng cách nhập:
$ xattr -p com.apple.quarantine /Applications/*.app
Thông tin ký mã được truy cập bằng cách nhập:
$ codesign -dvvv /Applications/*.app
Thí dụ:
$ codesign -dvvvv /Applications/Google\ Chrome.app/
Executable=/Applications/Google Chrome.app/Contents/MacOS/Google Chrome
Identifier=com.google.Chrome
Format=app bundle with Mach-O thin (x86_64)
CodeDirectory v=20200 size=273 flags=0x800(restrict) hashes=3+3 location=embedded
OSPlatform=36
OSSDKVersion=658432
OSVersionMin=657664
Hash type=sha256 size=32
CandidateCDHash sha1=bc8e3dffe7d9d5242e09ea80a220ed365d46fdf2
CandidateCDHash sha256=d7ae6211906bb17d593ce9c215d190a81f37e658
Hash choices=sha1,sha256
Page size=4096
CDHash=d7ae6211906bb17d593ce9c215d190a81f37e658
Signature size=8949
Authority=Developer ID Application: Google, Inc. (EQHXZ8M8AV)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Timestamp=20. Mar 2018 at 07:23:20
Info.plist entries=36
TeamIdentifier=EQHXZ8M8AV
Sealed Resources version=2 rules=7 files=203
Internal requirements count=1 size=240
Phần quan trọng nhất là chuỗi chứng chỉ (và chuỗi tin cậy):
Authority=Developer ID Application: Google, Inc. (EQHXZ8M8AV)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Ở đây có ba cơ quan khác nhau có thể nhìn thấy:
- Chứng chỉ gốc: Apple Root CA
- Chứng chỉ nhà phát triển trung cấp của Apple: Cơ quan chứng nhận ID nhà phát triển
- Chứng chỉ dành cho nhà phát triển: Google, Inc. (EQHXZ8M8AV)
Điều này có nghĩa là ứng dụng được ký với chứng chỉ dành cho nhà phát triển, được xuất bản và ký bởi cơ quan phát triển trung gian của Apple, chính nó được xuất bản và ký bởi Root CA.
Chuỗi này đủ điều kiện Google (hoặc chính xác hơn: nhóm / đơn vị Google, Inc. (EQHXZ8M8AV)) là nhà phát triển được Apple xác định.
Bạn cũng có thể tự mã hóa ứng dụng hoặc với chứng chỉ mã hóa từ một cơ quan trung gian / gốc khác nhưng điều này sẽ không vượt qua Gatekeeper.
Bây giờ có bốn hoán vị có thể giả sử Gatekeeper được bật (nhưng không xem xét tự ký / ký người ngoài hành tinh):
- Không có thuộc tính com.apple.quarantine / không có chứng chỉ Nhà phát triển của Apple (Ví dụ: thùng bia đã cài đặt Apache CouchDB )
- Không có thuộc tính com.apple.quarantine / chứng chỉ Nhà phát triển của Apple (Ví dụ: thùng bia đã cài đặt Google Chrome )
- Thuộc tính com.apple.quarantine / không có chứng chỉ Nhà phát triển của Apple (Ví dụ: Apache CouchDB được cài đặt bằng cách tải xuống zip từ trang web và sao chép ứng dụng đã giải nén vào / Ứng dụng / )
- Thuộc tính com.apple.quarantine / chứng chỉ Nhà phát triển của Apple (Ví dụ: Google Chrome được cài đặt bằng cách tải xuống dmg từ trang web và sao chép ứng dụng bên trong vào / Ứng dụng / )
Trong hai trường hợp đầu tiên, ứng dụng sẽ đơn giản khởi chạy. Trong trường hợp thứ ba, bạn sẽ nhận được thông báo Nhà phát triển chưa xác định . Bạn có thể giải quyết điều này bằng cách xóa thuộc tính mở rộng xattr -d com.apple.quarantine *
(= trường hợp 1). Trong trường hợp thứ tư, bạn sẽ nhận được "* đã được tải xuống từ Internet, bạn có chắc chắn muốn mở nó không?"