임시 코드 서명
직접 컴파일하고 코드 서명 이 필요한 타사 응용 프로그램 및 바이너리의 경우 임시 코드 서명을 사용하십시오 .
- 서명없이 응용 프로그램이 실행되지 않는다고 가정합니다.
- 응용 프로그램이 배포되지 않을 것이라고 가정합니다.
- 서명이 유효한지 신경 쓰지 않는다고 가정합니다.
임시 서명은 안정적인 보안 이점을 제공하지 않습니다. 응용 프로그램이 변경되었는지 확인하고 자격과 같은 보안 제한을 응용 프로그램에 적용하는 데 사용할 수 있습니다.
임시 서명은의 유효성을 검사 codesign
하지만 유효 하지는 않습니다 spctl
. 이것은 서명되는 바이너리에 따라 중요하거나 중요하지 않을 수 있습니다. 응용 프로그램 및 실행 파일의 경우 spctl
로컬로 생성 된 이진 파일에서 실행되지 않으므로 문제 가되지 않습니다.
왜 코드 서명인가?
정제 된 질문과 관련하여 :
기여자가 기여자가 항상 자신의 코드에 서명 할 수 있거나 기억할 수있는 것은 아니기 때문에, 특히 많은 기여자가있는 오픈 소스 프로젝트에 작은 기여를하는 경우에는 필자가 서명하지 않은 소스 코드를 처리하는 방법.
대부분 자체 컴파일 된 응용 프로그램의 경우 코드 서명이 필요하지 않습니다. 이것은 애플리케이션의 코드를 신뢰한다고 가정합니다. macOS의 경우 Finder에서 신뢰할 수없는 응용 프로그램을 열 수 있습니다. Apple의 미확인 개발자가 응용 프로그램 열기를 참조하십시오 .
코드 나 개발자를 신뢰하지 않으면 응용 프로그램을 컴파일하거나 실행하지 마십시오.
당신의 책임
소스 코드 제공자는 사전 빌드 된 코드 서명 바이너리를 제공 할 책임이나 의무가 없습니다. 자체 컴파일 된 모든 코드 서명은 선택과 책임입니다.
두 경우 모두 최종 바이너리 만 서명됩니다. 원본 소스 코드와 리소스는 서명되지 않았습니다.
소스 코드에 서명하지 않았습니다
소스 코드 자체는 macOS에 대해 의미있는 방식으로 코드 서명 될 수 없습니다. 소스 파일과 코드는 다른 파일과 마찬가지로 디지털 서명이 가능하지만 결과 응용 프로그램이나 바이너리가 macOS에서 처리되는 방식에는 영향을 미치지 않습니다.
Mac 응용 프로그램을 임시 코드 서명하는 방법
임시 서명을 사용하여 macOS에서 응용 프로그램을 공동 디자인하려면 identity -s
플래그를 -
다음 과 같이 설정하십시오 .
codesign --force -s - </path/to/application>
codesign
명령 의 다른 모든 규칙, 요구 사항 및 순열은 동일하게 유지됩니다.
이 플래그 --force
는 여기에서 기존 서명을 덮어 쓰는 데 사용됩니다.
프레임 워크 및 임베디드 서비스와 같은 서브 리소스에 서명 --deep
하기 위해 codesign
명령에 플래그 를 추가해야 할 수도 있습니다.