목표 : 내 패키지에 서명하고 내 자신의 커널 확장에 서명하십시오. "내 자신"이라는 말은 "내가 작성한 파일이거나 다른 곳에서 가져온 파일, 자신의 소스에서 재 컴파일 한 파일, 컴퓨터에 설치하려는 파일이다.Mavericks/Yosemite에서 kext에 서명 할 수 없습니까?
문제점 : 매버릭스는 내 서명을 Code Signing Failure: code signature is invalid
kext), Yosemite는로드하지 않습니다.
나는 내 자신의 CA와 코드 서명 인증서가 있습니다. 코드에 성공적으로 서명하고 주어진 certs가 서명 한 코드를 허용하는 정책을 설정할 수있었습니다. 설치 및 실행 - 아래 출력에서 볼 수 있듯이 codesign과 spctl을 좋아하지만 kext (커널 확장)에는 적용되지 않는 것 같습니다 - kextutil은 서명이 유효하지 않다 고 주장합니다. 점점 :
$ codesign --verify -vvvv /opt/local/Library/Filesystems/osxfusefs.fs/Support/osxfusefs.kext
/opt/local/Library/Filesystems/osxfusefs.fs/Support/osxfusefs.kext: valid on disk
/opt/local/Library/Filesystems/osxfusefs.fs/Support/osxfusefs.kext: satisfies its Designated Requirement
$ spctl -a -vvv -t exec /opt/local/Library/Filesystems/osxfusefs.fs/Support/osxfusefs.kext
/opt/local/Library/Filesystems/osxfusefs.fs/Support/osxfusefs.kext: accepted
source=XXXXXCode
origin=XXXXXCoder
$ spctl -a -vvv -t install /opt/local/Library/Filesystems/osxfusefs.fs/Support/osxfusefs.kext
/opt/local/Library/Filesystems/osxfusefs.fs/Support/osxfusefs.kext: accepted
source=XXXXXInstall
origin=XXXXXCoder
$ kextutil -tn /opt/local/Library/Filesystems/osxfusefs.fs/Support/osxfusefs.kext
Diagnostics for /opt/local/Library/Filesystems/osxfusefs.fs/Support/osxfusefs.kext:
Code Signing Failure: code signature is invalid
/opt/local/Library/Filesystems/osxfusefs.fs/Support/osxfusefs.kext appears to be loadable (including linkage for on-disk libraries).
이 kext는 경고 메시지와 함께로드되며 요세미티에서는 그렇지 않습니다.
here과 Apple CA CPS Developer ID에서 인증서에 kext-signing 인증서로 지정하는 다음 확장자 ((1.2.840.113635.100.6.1.18)
)가 있어야한다는 것을 알았습니다. 내 것은 그것을 가지고 있지 않습니다. 나는 그것이 그것이 내 문제의 원인이라고 생각하지만 그것을 해결하는 방법을 모른다. 주어진 인증서를 kext 서명 인증서로 지정하는 정책을 만들려면 spctl에 유형 옵션이없는 것 같습니다.
Apple의 연례 "사용료"를 100 달러 지불하지 않으면이 확장 기능을 어떻게 추가합니까 (OpenSSL 기반 솔루션이 적합 할지라도 키 체인 인증서 지원 기능 포함).
인증서로 서명 된 kexts를 수락하는 자신 만의 커널을 컴파일하는 것이 아니라면, Apple에서 하나를 가져와야합니다. 개발자의 ID 인증서는 1 년이 아니라 5 년 후에 만료됩니다. – pmdj
감사합니다. 그러나 이해할 수 있는지 확실하지 않습니다. [개발자 회원 센터] (https://developer.apple.com/membercenter/index.action)는 특정 개발자 프로그램에 등록하지 않는 한 /를 요구할 수 없습니다. [Mac 개발자 프로그램] (https://developer.apple.com/programs/mac/)은 연간 99 달러입니다. 개발자 ID 인증서를 발급하는 데 걸리는 시간을 확인할 방법이 없습니다. 1 년 후에 회원 자격을 취소 (또는 갱신하지 않겠다는 뜻)겠습니까?하지만 개발자 ID 인증서는 4 년 더 유효하지 않습니다. – Mouse
예, 갱신은 자동이 아닙니다. 경험상 개발자 ID 인증서는 발급 후 5 년 후에 만료됩니다. 만료되기 직전에 새 인증서를 요청하면 약 6 년이 걸릴 것입니다. 인증서가 만료되면 서명 된 소프트웨어가 게이트 키퍼 유효성 검사에 실패 할 것으로 예상되므로 게이트 키퍼가 차단하기 몇 달 전에 웹에 소프트웨어를 게시하는 것은 좋지 않을 수 있습니다. 5 년은 소프트웨어에서 오랜 시간입니다. 그때까지는 Mac이 ARM CPU에서 실행될 수 있으며 제 3 자 kexts는 전혀 허용되지 않습니다. ;-) – pmdj