Làm cách nào để tạo tệp .pem sẽ được lưu trữ trong máy chủ lưu trữ cho dữ liệu tải trọng APN?
Làm cách nào để tạo tệp .pem sẽ được lưu trữ trong máy chủ lưu trữ cho dữ liệu tải trọng APN?
Câu trả lời:
Đây là những gì tôi đã làm, Từ: blog.boxedice.com và "Dự án nâng cao iPhone" chương 10 củaJoe Pezzillo.
Với aps_developer_identity.cer trong móc khóa:
apns-dev-cert.p12
tập tin ở một nơi nào đó bạn có thể truy cập nó. Không cần nhập mật khẩu.Lệnh tiếp theo tạo chứng chỉ trong Terminal của Mac cho định dạng PEM (Chứng chỉ bảo mật thư nâng cao bảo mật):
openssl pkcs12 -in apns-dev-cert.p12 -out apns-dev-cert.pem -nodes -clcerts
Trên máy chủ đặt quyền cho tập tin của khóa không được mã hóa này bằng cách sử dụng chmod 400.
Giai đoạn phát triển:
Bước 1: Tạo Chứng chỉ .pem từ Chứng chỉ .p12
openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12
Bước 2: Tạo khóa .pem từ khóa .p12
openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12
Bước 3 (Tùy chọn): Nếu bạn muốn xóa cụm từ được hỏi trong bước thứ hai
openssl rsa -in apns-dev-key.pem -out apns-dev-key-noenc.pem
Bước 4: Bây giờ chúng ta phải hợp nhất Khóa .pem và Chứng chỉ .pem để nhận Phát triển .pem cần thiết cho Thông báo đẩy trong Giai đoạn phát triển ứng dụng.
Nếu bước thứ 3 được thực hiện, hãy chạy:
cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem
Nếu bước 3 không được thực hiện, hãy chạy:
cat apns-dev-cert.pem apns-dev-key.pem > apns-dev.pem
Bước 5: Kiểm tra tính hợp lệ của chứng chỉ và kết nối với APNS
Nếu bước thứ 3 được thực hiện, hãy chạy:
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key-noenc.pem
Nếu bước 3 không được thực hiện, hãy chạy:
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key.pem
Giai đoạn sản xuất:
Bước 1: Tạo Chứng chỉ .pem từ Chứng chỉ .p12
openssl pkcs12 -clcerts -nokeys -out apns-pro-cert.pem -in apns-pro-cert.p12
Bước 2: Tạo khóa .pem từ khóa .p12
openssl pkcs12 -nocerts -out apns-pro-key.pem -in apns-pro-key.p12
Bước 3 (Tùy chọn): Nếu bạn muốn xóa cụm từ được hỏi trong bước thứ hai
openssl rsa -in apns-pro-key.pem -out apns-pro-key-noenc.pem
Bước 4: Bây giờ chúng ta phải hợp nhất Khóa .pem và Chứng chỉ .pem để có được .pem sản xuất cần thiết cho Thông báo đẩy trong Giai đoạn sản xuất ứng dụng.
Nếu bước thứ 3 được thực hiện, hãy chạy:
cat apns-pro-cert.pem apns-pro-key-noenc.pem > apns-pro.pem
Nếu bước 3 không được thực hiện, hãy chạy:
cat apns-pro-cert.pem apns-pro-key.pem > apns-pro.pem
Bước 5: Kiểm tra tính hợp lệ của chứng chỉ và kết nối với APNS.
Nếu bước thứ 3 được thực hiện, hãy chạy:
openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key-noenc.pem
Nếu bước 3 không được thực hiện, hãy chạy:
openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key.pem
Các bước:
Điều này cung cấp cho bạn ba tệp:
PushChatKey.p12
)aps_development.cer
Chuyển đến thư mục mà bạn đã tải xuống các tệp, trong trường hợp của tôi là Desktop:
$ cd ~/Desktop/
Chuyển đổi tệp .cer thành tệp .pem:
$ openssl x509 -in aps_development.cer -inform der -out PushChatCert.pem
Chuyển đổi tệp .p12 của khóa riêng thành tệp .pem:
$ openssl pkcs12 -nocerts -out PushChatKey.pem -in PushChatKey.p12
Nhập mật khẩu nhập:
MAC verified OK
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
Trước tiên bạn cần nhập cụm mật khẩu cho tệp .p12 để openssl có thể đọc được. Sau đó, bạn cần nhập cụm mật khẩu mới sẽ được sử dụng để mã hóa tệp PEM. Một lần nữa cho hướng dẫn này, tôi đã sử dụng cụm từ Pushchat, làm mật khẩu PEM. Bạn nên chọn một cái gì đó an toàn hơn. Lưu ý: nếu bạn không nhập cụm mật khẩu PEM, openssl sẽ không đưa ra thông báo lỗi nhưng tệp .pem được tạo sẽ không có khóa riêng trong đó.
Cuối cùng, kết hợp chứng chỉ và khóa thành một tệp .pem:
$ cat PushChatCert.pem PushChatKey.pem > ck.pem
Khởi chạy ứng dụng Terminal và nhập lệnh sau sau dấu nhắc
openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes
- >> Hướng dẫn riêng của Apple << - là bộ hướng dẫn làm việc duy nhất tôi gặp. Nó thẳng tiến và tôi có thể xác nhận nó hoạt động tuyệt vời trên cả máy chủ php linux và máy chủ php php.
Bạn có thể tìm thấy quy trình tạo pem 5 bước của họ ngay ở cuối trang.
Bạn có thể có một cái nhìn ở đây. Tôi có quy trình chi tiết được mô tả bằng hình ảnh, ngay từ khi tạo chứng chỉ, khóa ứng dụng đến hồ sơ cung cấp, cuối cùng là pem. http://docs.moengage.com/docs/apns-certert-pem-file
LƯU Ý: Bạn phải có vai trò Đại lý nhóm hoặc Quản trị viên trong App Store Connect để thực hiện bất kỳ tác vụ nào trong số này. Nếu bạn không tham gia Nhóm trong App Store Kết nối, điều này có thể không ảnh hưởng đến bạn.
Gửi thông báo đẩy đến một ứng dụng iOS yêu cầu tạo các khóa hiệu quả. Trước đây, đây là một quy trình rườm rà sử dụng các khóa và chứng chỉ SSL. Mỗi chứng chỉ SSL được dành riêng cho một ứng dụng iOS. Năm 2016, Apple đã giới thiệu một cơ chế khóa xác thực mới đáng tin cậy hơn và dễ sử dụng hơn. Các khóa xác thực mới linh hoạt hơn, đơn giản để duy trì và áp dụng cho nhiều hơn trên ứng dụng iOS.
Mặc dù đã nhiều năm kể từ khi khóa xác thực được giới thiệu, không phải dịch vụ nào cũng hỗ trợ chúng. FireBase và Amazon Pinpoint hỗ trợ các khóa xác thực. Amazon SNS, Urban Airship, Twilio và LeanPlum thì không. Nhiều gói phần mềm nguồn mở chưa hỗ trợ các khóa xác thực.
Để tạo chứng chỉ SSL cần thiết và xuất dưới dạng tệp PEM chứa khóa công khai và khóa riêng:
Nếu bạn đã có chứng chỉ SSL được thiết lập cho ứng dụng trong trang web của Trung tâm nhà phát triển Apple, bạn có thể bỏ qua trước để Chuyển đổi chứng chỉ sang định dạng PEM. Hãy nhớ rằng bạn sẽ chạy vào các vấn đề nếu bạn không còn có chìa khóa riêng được tạo ra trên máy Mac đã tạo ra yêu cầu ký đã được tải lên Apple.
Đọc tiếp để xem làm thế nào để tránh mất dấu khóa riêng tư đó.
Xcode không kiểm soát chứng chỉ hoặc khóa cho thông báo đẩy. Để tạo khóa và bật thông báo đẩy cho ứng dụng, bạn phải truy cập trang web của Trung tâm nhà phát triển Apple. Phần Chứng chỉ, Số nhận dạng & Cấu hình trong tài khoản của bạn kiểm soát ID ứng dụng và chứng chỉ.
Để truy cập các chứng chỉ và hồ sơ, bạn phải có tư cách thành viên Chương trình Nhà phát triển Apple phải trả tiền hoặc là thành viên của Nhóm.
Các ứng dụng sử dụng thông báo đẩy không thể sử dụng ID ứng dụng ký tự đại diện hoặc hồ sơ cung cấp. Mỗi ứng dụng yêu cầu bạn thiết lập bản ghi ID ứng dụng trong cổng thông tin của Trung tâm nhà phát triển Apple để bật thông báo đẩy.
Tạo chứng chỉ SSL cho thông báo đẩy là một quá trình của một số nhiệm vụ. Mỗi nhiệm vụ có một vài bước. Tất cả những điều này là cần thiết để xuất các khóa ở định dạng P12 hoặc PEM. Xem lại các bước trước khi tiến hành.
Để tạo chứng chỉ, bạn sẽ cần tạo Yêu cầu ký chứng chỉ (CSR) trên máy Mac và tải lên Apple.
Sau này nếu bạn cần xuất chứng chỉ này dưới dạng tệp pkcs12 (còn gọi là p12), bạn sẽ cần sử dụng móc khóa từ cùng một máy Mac . Khi yêu cầu ký được tạo Keychain Access sẽ tạo một bộ khóa trong móc khóa mặc định. Các khóa này là cần thiết để làm việc với chứng chỉ Apple sẽ tạo từ yêu cầu ký.
Đó là một thực hành tốt để có một móc khóa riêng dành riêng cho thông tin đăng nhập được sử dụng để phát triển. Nếu bạn làm điều này, hãy đảm bảo rằng móc khóa này được đặt thành mặc định trước khi sử dụng Trợ lý chứng chỉ.
Khi tạo Yêu cầu ký chứng chỉ, Trợ lý chứng chỉ sẽ tạo hai khóa mã hóa trong móc khóa mặc định. Điều quan trọng là làm cho móc khóa phát triển trở thành mặc định để các phím nằm trong móc khóa bên phải.
Tạo yêu cầu ký kết tạo ra một cặp khóa. Trước khi yêu cầu ký được tải lên, hãy xác minh rằng móc khóa phát triển có các phím. Tên của họ sẽ giống với Tên chung được sử dụng trong yêu cầu ký.
Khi Yêu cầu ký xác nhận được tạo, hãy tải nó lên Trung tâm nhà phát triển của Apple. Apple sẽ tạo chứng chỉ thông báo đẩy từ yêu cầu ký.
Giờ đây, móc khóa phát triển của bạn sẽ hiển thị chứng chỉ đẩy với khóa riêng bên dưới Chứng chỉ của tôi trong Quyền truy cập Keychain:
Tại thời điểm này, móc khóa phát triển nên được sao lưu. Nhiều đội giữ chứng chỉ đẩy của họ trên các ổ USB an toàn, cam kết kiểm soát phiên bản nội bộ hoặc sử dụng giải pháp sao lưu như Time Machine. Khóa phát triển có thể được chia sẻ giữa các thành viên nhóm khác nhau vì nó không chứa bất kỳ thông tin đăng nhập mã cá nhân nào.
Các tập tin Keychain được đặt trong
~/Library/Keychains
.
Một số dịch vụ đẩy của bên thứ ba yêu cầu chứng chỉ ở định dạng Thư tăng cường bảo mật (PEM), trong khi các dịch vụ khác yêu cầu Tiêu chuẩn mã hóa khóa công khai số 12 (PKCS12 hoặc P12). Chứng chỉ được tải xuống từ Apple có thể được sử dụng để xuất chứng chỉ theo các định dạng này - nhưng chỉ khi bạn đã giữ khóa riêng.
Tôi sẽ đề nghị một giải pháp đơn giản hơn nhiều. Chỉ cần sử dụng Certifire .
Certifire là một ứng dụng macOS tạo Chứng chỉ Thông báo Đẩy của Apple chỉ bằng một cú nhấp chuột trong vài giây.
Dưới đây là các bước:
1. Tải ứng dụng.
2. Đăng nhập bằng thông tin đăng nhập tài khoản nhà phát triển Apple của bạn.
3. Chọn ID ứng dụng
4. Nhấp vào nút "Tạo"
5. Bạn đã hoàn tất!
Bạn sẽ nhận được chứng chỉ APN ở định dạng .pem cũng như định dạng .p12. Thậm chí, bạn cũng sẽ nhận được kết hợp .pem và .p12 nữa (key + cert)!
Nhiều hơn nữa, bạn sẽ nhận được các phiên bản không có mật khẩu của tất cả các chứng chỉ này!
Đây là cách tôi đã làm trên Windows 7, sau khi cài đặt OpenSSL (liên kết đến trình cài đặt Win32, chọn phiên bản mới nhất chứ không phải phiên bản nhẹ).
Với phương pháp này, bạn chỉ cần .cer
tệp được tải xuống từ Apple.
c:\OpenSSL-Win32\bin\openssl.exe x509 -in aps_development.cer -inform DER -out developer_identity.pem -outform PEM
điều này sẽ tạo một tập tin mà sau đó bạn cũng cần thêm khóa riêng của mình.
----- BEGIN PRIVATE KEY -----
MIIEuwIBADANBgkqhk .... vv
MIIEuwIBADANBgkqhk .... vv
MIIEuwIBADANBgkqhk .... vv
MIIEuwIBADANBgkqhk .... vv
----- END PRIVATE KEY -----
----- BEGIN CHỨNG NHẬN -----
AwIBAgwIBADAwIBADA .... vv
AwIBAgwIBADAwIBADA .... vv
AwIBAgwIBADAwIBADA .... vv
----- KẾT THÚC CHỨNG NHẬN -----
Đó là nó.
Có một cách dễ nhất để tạo tệp .Pem nếu bạn đã truy xuất tệp p12 trong quyền truy cập chuỗi khóa của mình.
Mở terminal và nhập lệnh dưới đây:
Đối với Devlopment openssl pkcs12 -in apns-div-cert.p12 -out apns-div-cert.pem -nodes -clcerts
Đối với sản xuất openssl pkcs12 -in apns-dist-cert.p12 -out apns-dist-cert.pem -nodes -clcerts
Đổi tên tệp P12 của bạn với tên này: apns-div-cert.p12 nếu không thay vì tên này, bạn cần nhập tên tệp của mình. Cảm ơn!!
Tôi không bao giờ nhớ openssl
lệnh cần thiết để tạo .pem
tệp, vì vậy tôi đã tạo tập lệnh bash này để đơn giản hóa quy trình:
#!/bin/bash
if [ $# -eq 2 ]
then
echo "Signing $1..."
if ! openssl pkcs12 -in $1 -out $2 -nodes -clcerts; then
echo "Error signing certificate."
else
echo "Certificate created successfully: $2"
fi
else
if [ $# -gt 2 ]
then
echo "Too many arguments"
echo "Syntax: $0 <input.p12> <output.pem>"
else
echo "Missing arguments"
echo "Syntax: $0 <input.p12> <output.pem>"
fi
fi
Đặt tên cho nó, ví dụ, signpem.sh
và lưu nó vào thư mục người dùng của bạn ( /Users/<username>
?). Sau khi tạo tệp, hãy thực hiện chmod +x signpem.sh
để làm cho nó có thể thực thi được và sau đó bạn có thể chạy:
~/signpem myCertificate.p12 myCertificate.pem
Và myCertificate.pem
sẽ được tạo ra.