aps_developer_identity.cer для p12 без необходимости экспорта из цепочки для ключей? - PullRequest
19 голосов
/ 21 сентября 2009

У меня сбрасывается нагрузка сертификатов «aps_developer_identity.cer», экспортированных с портала iPhone Developer. Все они были созданы с использованием одного и того же запроса на подпись сертификата и (таким образом) одного и того же закрытого ключа. Если я экспортирую только закрытый ключ из цепочки ключей Apple, можно ли взять закрытый ключ и файл «aps_developer_identity.cer» и использовать openssl для создания объединенного сертификата p12 / pkcs # 12, который я могу использовать на своем сервере (Windows) .

Просто чтобы прояснить, я знаю, как получить объединенный p12 из цепочки для ключей, экспортировав и закрытый ключ, и сертификат вместе, но я хочу удалить все лишние щелчки мышью и вводить, если смогу.

Ответы [ 3 ]

38 голосов
/ 22 сентября 2009

Мне удалось разобраться с этим, просто нужно обернуть его в скрипт оболочки, и это хорошо. Я предполагаю, что вы загрузили и переименовали свой сертификат «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 месяцев соответственно. Это очень скучная и подверженная ошибкам работа ...

4 голосов
/ 24 мая 2012

Потрясающая работа здесь. Спасибо за реальную помощь, ребята. Я опустил свой сценарий оболочки ниже, который может помочь другим. У меня есть несколько ключей, и мне нужен сценарий. Этот скрипт выведет статические имена для выходных файлов (хотя это было бы просто изменить).

Надеюсь, это поможет кому-то еще.

пример использования (при условии имени скрипта):

$ . 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
0 голосов
/ 22 августа 2012

Вы можете сделать сертификат p12 / pkcs # 12 прямо в связке ключей. Нет необходимости выполнять какие-либо команды.

1. Дважды нажмите на файл сертификата разработчика / производства, загруженный с сайта Apple. (Он будет добавлен в связку ключей)

2.Я предполагаю, что у вас есть файл .p12, полученный при экспорте секретного ключа

3. Перейти на вкладку Мои сертификаты в связке ключей.

просто нажмите на свой сертификат dev / prod для APN.it должен показать закрытый ключ, связанный с ним

4.Правый щелчок и экспорт сертификата в формате .p12

это окончательный файл .p12 !!

...