Có hai (có thể là ba!) Thành phần này. Một là keychain phải được mở khóa. Thứ hai, có một danh sách điều khiển truy cập bên trong keychain cho biết các quyền nào được cấp cho các ứng dụng trong trạng thái mở khóa. Vì vậy, ngay cả khi bạn đã mở khoá thành công, nếu khả năng truy cập khóa cá nhân và ký với nó không được cấp cho /usr/bin/codesign
thì bạn vẫn sẽ nhận được thông báo này. Cuối cùng, nếu bạn đang sử dụng Mac OS Sierra, ID phân vùng mặc định được gán cho các khóa không chính xác để tương thích với mã nhị phân codesign
.
Giải pháp là như sau:
1) Nếu bạn có quyền truy cập vào các Keychain Access GUI, sau đó bạn có thể tự cấp mọi chương trình hoặc/usr/bin/codesign truy cập bằng cách nhấp chuột phải vào khóa riêng của bạn, chọn tab "Kiểm soát truy cập" và sau đó chọn radio "Cho phép tất cả ứng dụng truy cập mục này" hoặc danh sách "Luôn cho phép truy cập bằng các ứng dụng này".
2) Nếu bạn gặp phải lỗi này, rất có thể bạn đang cố gắng chạy codesign
cho người dùng không đăng nhập. Trong trường hợp này, bạn rõ ràng không có quyền truy cập vào giao diện "Keychain Access". Đối với những trường hợp này, bạn xác minh sign
uỷ quyền thiếu cho các ứng dụng <null>
, mà dường như có nghĩa là tất cả các ứng dụng, hoặc cụ thể /usr/bin/codesign
bằng cách sử dụng:
security dump-keychain -i login.keychain
Tuy nhiên, bạn không thể thêm hoặc sửa đổi các thuộc tính kiểm soát truy cập trong chế độ tương tác đối với một số lý do - - chỉ xóa!Bạn thực sự phải xóa khóa theo cách thủ công và thêm lại khóa đó vào móc khóa chỉ định cờ -T
.
security import login.keychain -P "<password>" -T /usr/bin/codesign
đâu -T
định
-T Specify an application which may access the imported key (multiple -T options are allowed)
3) Nếu bạn đang ở trên Mac OS Sierra, sửa đổi ID phân vùng để bao gồm các phân vùng apple
. Có lẽ, đây là không gian tên được gán cho codesign
vì nó được phân phối bởi Apple.
security set-key-partition-list -S apple-tool:,apple: -k "<password>" login.keychain
LƯU Ý: Các phân vùng apple-tool
được chèn bằng các công cụ security
, vì vậy lệnh trên bảo phân vùng đó. Để biết thêm thông tin về khía cạnh này, hãy xem: http://www.openradar.me/28524119
Bạn có thể dán vào lệnh bạn đang sử dụng để khởi chạy thiết bị đầu cuối không? –
Thiết bị đầu cuối đầu tiên được khởi chạy mở Terminal.app Thứ hai với màn hình –
Sự cố có thể được giải quyết bằng sudo không? – adam