Tôi có một tải kho của chứng chỉ 'aps_developer_identity.cer' được xuất từ cổng Nhà phát triển iPhone. Tất cả chúng đều được tạo ra bằng cách sử dụng cùng một Yêu cầu ký chứng chỉ và (do đó) cùng một khóa riêng. Nếu tôi chỉ xuất khóa riêng tư từ chuỗi khóa Apple thì có thể lấy khóa riêng và 'aps_developer_identity.cer' và sử dụng openssl để tạo chứng chỉ p12/pkcs # 12 đã hợp nhất mà tôi có thể sử dụng trên máy chủ (Windows) của mình . Chỉ cần rõ ràng, tôi biết cách lấy p12 hợp nhất từ Chuỗi khóa bằng cách xuất cả khóa cá nhân và chứng chỉ cùng nhau, nhưng tôi muốn xóa tất cả nhấp chuột và nhập thừa nếu tôi có thể.aps_developer_identity.cer đến p12 mà không phải xuất từ Chuỗi khóa?
Trả lời
Tôi đã quản lý để làm việc này, nó chỉ cần gói trong một kịch bản trình bao và nó là tốt để đi. Tôi giả sử bạn đã tải xuống và đổi tên chứng chỉ 'apple_developer_identity.cer' của mình, ở đây tôi sử dụng 'test.cer' và bạn cũng đã xuất khóa nhà phát triển của mình từ keychain, trong ví dụ bên dưới có tên '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
LƯU Ý: Nếu bạn nghĩ rằng tất cả điều này một chút hơi dài để đạt được những gì có thể được thực hiện với một vài cú click chuột và gõ tên của một tập tin, sau đó xem xét trường hợp bạn có 20 Apps mà bạn muốn bật thông báo. Mỗi ứng dụng có chứng chỉ phát triển và sản xuất, sẽ hết hạn sau 4 tháng và 12 tháng. Đó là một công việc rất nhàm chán và dễ bị lỗi ...
"_CertificateSigningRequest.certSigningRequest" xuất phát từ đâu?Tôi nhớ có tập tin này một lần ngay từ đầu khi tạo ra một chứng chỉ dev O_o –
Có hướng dẫn chi tiết về cách tạo CSR tại đây: http://jainmarket.blogspot.com/2009/11/generate-apple-push-notification .html Tôi đã thêm dấu gạch dưới để khai thác vì tôi giữ trong cùng một thư mục với tất cả các chứng chỉ khác của tôi và cách đó là thư mục đầu tiên trong danh sách ... – withakay
Vấn đề _CertificateSigningRequest.certSigningRequest hoàn toàn không rõ ràng và cần được giải thích. Liên kết không giải thích về điều này. Tôi biết làm thế nào để sản xuất một với keychain nhưng liên tục nhận được lỗi "Không có chứng chỉ phù hợp với khóa riêng" khi tôi sử dụng nó trong kịch bản trên ... tại sao? chính xác những gì certSigningRequest đang được đề cập đến ở trên? – Zigglzworth
Làm việc tuyệt vời ở đây. Cảm ơn những người giúp đỡ thực sự. Tôi đã bỏ tập lệnh shell bên dưới để có thể giúp người khác. Tôi có một số chìa khóa để giải quyết và cũng muốn có một kịch bản. Kịch bản lệnh này sẽ xuất các tên tĩnh cho các tệp đầu ra (mặc dù điều đó sẽ đơn giản để thay đổi).
Tôi hy vọng nó sẽ giúp người khác.
ví dụ sử dụng (giả sử tên script):
$ . thisScript request_file.cer priv_key.p12 aps_dev.cer
Kịch bản:
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
Cảm ơn bạn. Điều này cực kỳ hữu ích. –
Bạn có thể làm p12/PKCS # 12 giấy chứng nhận trực tiếp trong keychain. Không cần thực hiện bất kỳ lệnh nào.
nhấp chuột 1.double trong hồ sơ cert nhà phát triển/sản xuất của bạn được tải về từ trang web của apple dev. (Nó sẽ được bổ sung trong keychain)
2.I giả sử bạn có đuôi .p12 tập tin mà bạn nhận được từ xuất khẩu khóa riêng
3. chuyển đến tab Chứng chỉ của tôi dưới hình thức khóa.
chỉ cần nhấp vào dev/Giấy chứng nhận sản của bạn cho APN.it sẽ hiển thị khóa bí mật liên kết với nó
4.Right bấm và giấy chứng nhận xuất khẩu ở đuôi .p12 định dạng
thats thức đuôi .p12 tập tin !!
Tôi không nghĩ rằng bạn đã đọc câu hỏi trước khi đăng câu trả lời này. OP nêu rõ rằng họ KHÔNG muốn sử dụng Keychain. – Jonathan
- 1. Trích xuất nhiều khóa từ một tệp .p12 bằng cách sử dụng OpenSSL ruby
- 2. Kết thúc chuỗi Java: BLOCKED thread mà không phải "đang chờ khóa ..."
- 3. Làm cách nào để trích xuất chuỗi con từ chuỗi cho đến khi gặp phải không gian thứ hai?
- 4. Đọc từ mongodb mà không cần khóa
- 5. Chứng chỉ phát triển xuất khẩu dưới dạng p12
- 6. Xuất khóa riêng tư từ X509Đối tượng chứng nhận
- 7. Ruby 1.9.2 xuất chuỗi CSV mà không cần tạo tệp
- 8. từ khóa mới mà không cần tên lớp trong C#
- 9. Chuyển dict bằng từ khóa không phải chuỗi để hoạt động trong kwargs
- 10. Phần mềm trích xuất từ khóa
- 11. Tạo khóa từ chuỗi?
- 12. Từ bit thô đến jpeg mà không cần phải viết vào một tệp
- 13. Xuất sắc NHibernate ExportSchema mà không cần chuỗi kết nối
- 14. Trích xuất URL từ chuỗi
- 15. SunToolkit.awtLock: không mã mà phải mất một khóa như vậy cần phải được gọi vào EDT
- 16. Từ PDf đến chuỗi
- 17. Tìm nhóm trong unordered_map từ băm mà không cần khóa
- 18. khởi Lazy mà không đồng bộ hoặc từ khóa volatile
- 19. Tôi cần phải auto_increment một trường trong MySQL mà không phải là khóa chính
- 20. Chuỗi kết nối SQLExpress vĩnh viễn này đến từ đâu (không phải web.config)?
- 21. Các điểm chuỗi xuất phát từ đâu?
- 22. Có phải 'đang sử dụng' từ khóa C# không?
- 23. Có phải là một từ khóa Java không?
- 24. Có phải là từ khóa dành riêng không?
- 25. Tại sao từ khóa mới không cần thiết cho Chuỗi
- 26. c giá trị # chiết xuất từ cặp khóa-giá trị trong chuỗi
- 27. Lập trình trích xuất từ khóa từ tên miền
- 28. Python đến MATLAB: xuất danh sách chuỗi bằng scipy.io
- 29. chuỗi xuất khẩu với openssl_pkcs12_export trong PHP
- 30. Có thể thực hiện đối sánh chuỗi một phần trên khóa chuỗi từ điển không?
"Tất cả đều được tạo bằng cách sử dụng cùng một Yêu cầu ký chứng chỉ" - Tại sao? Trong trường hợp đó, tất cả chúng sẽ được đặt tên cùng tên chung, mục đích của điều này là gì? – NoBugs