22

iPhoneDeveloperポータルからエクスポートされた「aps_developer_identity.cer」証明書が大量にありますこれらはすべて、同じ証明書署名要求と(したがって)同じ秘密鍵を使用して作成されました。Apple Key Chainから秘密鍵だけをエクスポートする場合、秘密鍵と「aps_developer_identity.cer」を取得し、opensslを使用して、(Windows)サーバーで使用できるマージされたp12 / pkcs#12証明書を作成することができます。 。

明確にするために、秘密鍵と証明書の両方を一緒にエクスポートすることによって、キーチェーンからマージされたp12を取得する方法を知っていますが、可能であれば、余分なマウスクリックと入力をすべて削除したいと思います。

4

3 に答える 3

39

私はなんとかこれを解決することができました、それはシェルスクリプトでラップする必要があります、そしてそれは行くのが良いです。'apple_developer_identity.cer'証明書をダウンロードして名前を変更し、ここでは' test.cer'を使用し、キーチェーンから開発者キー(以下の例では'private_dev_key.p12')もエクスポートしたと想定しています。

#convert *.cer (der format) to pem
openssl x509 -in test.cer -inform DER -out test.pem -outform PEM

#convert p12 private key to pem (requires the input of a minimum 4 char password)
openssl pkcs12 -nocerts -out private_dev_key.pem -in private_dev_key.p12

# if you want remove password from the private key
openssl rsa -out private_key_noenc.pem -in private_key.pem

#take the certificate and the key (with or without password) and create a PKCS#12 format file
openssl pkcs12 -export -in test.pem -inkey private_key_noenc.pem -certfile _CertificateSigningRequest.certSigningRequest  -name "test" -out test.p12

注:マウスを数回クリックしてファイル名を入力するだけで何ができるかを実現するために、これが少し長いと思われる場合は、通知を有効にするアプリが20個ある場合を考えてみてください。各アプリには開発証明書と本番証明書があり、それぞれ4か月と12か月で有効期限が切れます。それは非常に退屈でエラーが発生しやすい仕事です...

于 2009-09-22T10:58:40.033 に答える
4

ここで素晴らしい仕事。本当に助けてくれてありがとう。私は他の人を助けるかもしれない私のシェルスクリプトを以下に落としました。私には対処すべきいくつかの鍵があり、スクリプトも必要でした。このスクリプトは、出力ファイルの静的な名前を出力します(ただし、変更は簡単です)。

それが他の誰かに役立つことを願っています。

使用例(スクリプト名を想定):

$ . thisScript request_file.cer priv_key.p12 aps_dev.cer

スクリプト:

if [ $# -ne 3 ]
then
echo "Error in $0 - Invalid Argument Count"
echo "Syntax: $0 request_cer_file p12_file app_cer_file output_filename"
echo "  - request_cer_file      is the request file you sent to apple"
echo "  - p12_file          is found in your keychain (it's the private key)"
echo "  - app_cer_file          is found on App ID screen from Apple"
else

reqFile=$1
p12File=$2
cerFile=$3

certPEM='apn_cert.pem'
pKeyPEM='apn_pkey.pem'
pKeyNoEncPEM='apn_pkey_noenc.pem'
p12FileOut='apn_cert_key.p12'

# remove old
rm $certPEM
rm $pKeyPEM
rm $pKeyNoEncPEM
rm $p12FileOut

#convert *.cer (der format) to pem
openssl x509 -in $cerFile -inform DER -out $certPEM -outform PEM

#convert p12 private key to pem (requires the input of a minimum 4 char password)
openssl pkcs12 -nocerts -out $pKeyPEM -in $p12File

# if you want remove password from the private key
openssl rsa -out $pKeyNoEncPEM -in $pKeyPEM

#take the certificate and the key (with or without password) and create a PKCS#12 format file
openssl pkcs12 -export -in $certPEM -inkey $pKeyNoEncPEM -certfile $reqFile  -name "apn_identity" -out $p12FileOut

#
#   
#   If all things worked then the following should work as a test
#   openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apn_cert.pem -key apn_pkey_noenc.pem 
#
#
echo "Looks like everything was successful"
echo "Test command:"
echo "openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apn_cert.pem -key apn_pkey_noenc.pem"
echo
fi
于 2012-05-24T16:33:45.723 に答える
-4

キーチェーンで直接p12/pkcs#12証明書を作成できます。コマンドを実行する必要はありません。

1.アップル開発サイトからダウンロードした開発者/本番証明書ファイルをダブルクリックします(キーチェーンに追加されます)

2.秘密鍵のエクスポートから取得した.p12ファイルがあると仮定します

3.キーチェーンの下の[マイ証明書]タブに移動します。

APNのdev/prod証明書をクリックするだけで、それに関連付けられた秘密鍵が表示されます。

4.右クリックして証明書を.p12形式でエクスポートします

それが最終的な.p12ファイルです!!

于 2012-08-22T12:09:56.240 に答える