2012-09-29 62 views
4

我正在編寫一個shell腳本,使用p12證書從manifest.json自動生成Apple Passbook簽名文件。這是我做的:無法生成Apple Passbook簽名

openssl pkcs12 -passin pass:"mypass" -in "mycert.p12" -clcerts -nokeys -out certificate.pem 
openssl pkcs12 -passin pass:"mypass" -in "mycert.p12" -nocerts -out key.pem 
openssl smime -passin pass:"mypass" -binary -sign -signer certificate.pem -inkey key.pem -in manifest.json -out signature -outform DER 

前兩個函數工作正常。至少同時創建了certificate.pem和key.pem。簽名文件也被創建,但由於某種原因它是空的(0字節),儘管manifest.json不是空的,以及證書和密鑰。這怎麼可能發生,我該如何解決?

+0

運行這些命令時,你從openssl得到什麼信息? – Nathan

+0

我沒有收到任何錯誤消息。只是生成的文件是空的。我已經發布了下面的解決方案。 –

回答

9

我已經解決了這個問題。顯然,我也需要WWDR.pem證書才能做到這一點。這是它的工作原理:

openssl pkcs12 -passin pass:"somepass" -in "mycert.p12" -clcerts -nokeys -out certificate.pem 
openssl pkcs12 -passin pass:"somepass" -in "mycert.p12" -nocerts -out key.pem -passout pass:"somepass" 
openssl smime -binary -sign -certfile WWDR.pem -signer certificate.pem -inkey key.pem -in manifest.json -out signature -outform DER -passin pass:"somepass"