2016-12-20 10 views
0

this 스레드 지침을 따라했고 Sierra에서 코드 서명 문제를 해결할 수있었습니다. 문제는 잠시 후에 우리는 새로운 기계에 Sierra를 설치했고 이제는 더 이상 작동하지 않는다는 것입니다.시에라에서 codesign : 보안 설정 키 파티션 목록이 작동하지 않습니다.

우리의 응용 프로그램은 서명이 발생하는 프로세스를 분기하는 노드 응용 프로그램입니다. 이상한 점은 터미널 (SSH 세션에서)에서 fork 된 스크립트를 실행하면 잘 작동하지만 프로세스를 포크하는 응용 프로그램을 시작하면 작동하지 않고 코드 객체가 "code not signed"로 실패한다는 것입니다 모든".

이 동일한 응용 프로그램은 El Capitan에서 업데이트 된 Sierra가있는 다른 시스템의 SSH에서도 잘 작동합니다. 두 제품 모두 Sierra, Xcode, codesign 등의 동일한 버전을 사용하기 때문에 두 시스템의 차이점을 알 수는 없지만 실제로 영향을 미쳐야합니다.

이 이상한 동작에 영향을 줄 수있는 사항이 있습니까? 내가 시도 할 수있는 건 없니?

감사합니다.

참고 : 다음 콘솔에서

security set-key-partition-list -S apple-tool:,apple: -s -k 'password' 'keychain' 

:

실행

codesign -vfs '$IDENTITY' '${PRODUCT}' --keychain 'keychain' 

잘 작동하지만, 노드 응용 프로그램 내에서 실행 할 때, 항상 실패합니다.

답변

1

같은 상황에있는 모든 사람들을 위해 나는 마침내 많은 디버깅을 한 후 마침내 문제가 노드 서비스 관리를 위해 PM2를 사용하고 있다는 사실과 관련이 있다는 조사를했습니다.

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>Label</key> 
    <string>io.keymetrics.PM2</string> 
    <key>UserName</key> 
    <string>myusername</string> 
    <key>ProgramArguments</key> 
    <array> 
     <string>/bin/sh</string> 
     <string>-c</string> 
     <string>/usr/local/lib/node_modules/pm2/bin/pm2 resurrect</string> 
    </array> 
    <key>RunAtLoad</key> 
    <true/> 
    <key>OnDemand</key> 
    <false/> 
    <key>LaunchOnlyOnce</key> 
    <true/> 
    <key>EnvironmentVariables</key> 
    <dict> 
    <key>PATH</key> 
    <string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/Cellar/[email protected]/5.12.0/bin</string> 
    <key>PM2_HOME</key> 
    <string>/Users/myusername/.pm2</string> 
    </dict> 
    <key>StandardErrorPath</key> 
    <string>/tmp/io.keymetrics.PM2.err</string> 
    <key>StandardOutPath</key> 
    <string>/tmp/io.keymetrics.PM2.out</string> 
</dict> 
</plist> 

그러나 프로세스를 우리가 SessionCreate가 키 추가하는 데 필요한 열쇠 고리에 액세스 할 수 있도록 : 기본적으로 PM2 실행 데몬 PLIST는 지금

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>Label</key> 
    <string>io.keymetrics.PM2</string> 
    <key>UserName</key> 
    <string>myusername</string> 
    <key>SessionCreate</key> 
    <key>ProgramArguments</key> 
    <array> 
     <string>/bin/sh</string> 
     <string>-c</string> 
     <string>/usr/local/lib/node_modules/pm2/bin/pm2 resurrect</string> 
    </array> 
    <key>RunAtLoad</key> 
    <true/> 
    <key>OnDemand</key> 
    <false/> 
    <key>LaunchOnlyOnce</key> 
    <true/> 
    <key>EnvironmentVariables</key> 
    <dict> 
    <key>PATH</key> 
    <string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/Cellar/[email protected]/5.12.0/bin</string> 
    <key>PM2_HOME</key> 
    <string>/Users/myusername/.pm2</string> 
    </dict> 
    <key>StandardErrorPath</key> 
    <string>/tmp/io.keymetrics.PM2.err</string> 
    <key>StandardOutPath</key> 
    <string>/tmp/io.keymetrics.PM2.out</string> 
</dict> 
</plist> 

는 그냥 PM2 서비스를 다시 시작하고 그것은 작동합니다. 어떤 이유로 그 매개 변수는 이미 오래된 기계에 추가되었습니다.

덕분에 해결책을 이끌어 준 this 답과 그의 저자 joensson에게 감사드립니다.