AWS/Apple 推送证书 -- 私钥设置错误
AWS/Apple Push certificate -- error setting private key
我正在尝试按照 these 说明设置我的 S3 API 以将推送通知发送到我的 iOS 应用程序。
我把证书问题弄得一团糟,所以我希望有人能帮我解决这些问题。
到目前为止,我已经创建了一个 CSR,将其上传到 Apple Dev 门户,并下载了一个 .cer
文件。然后我将 cer
转换为 pem
openssl x509 -in apns-dev.cer -inform DER -out apns-dev.pem
然后我 运行 进入 "Open Keychain Access, select Keys, and then highlight your app private key." 的指令 不知道我的 "app private key" 是什么,我尝试了一些东西:
- 获取应用程序证书文件夹中预先存在的私钥文件(据我所知,不是的RSA私钥,用于生成上述CSR)。
- 将我的默认系统私钥导出为
p12
,然后根据 AWS 说明将其转换为 pem
密钥。
- 尝试在钥匙串访问中直接从我的系统私钥生成新的 CSR
但是,每当我按照 "test" private/public 密钥对 (openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev.pem -key apns-private.pem
) 的说明进行操作时,我都会得到:
error setting private key
41047:error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-59.60.1/src/crypto/x509/x509_cmp.c:406:
我查看了以下问题,但无法使用他们的答案来解决这个问题:
Does the apple push notification distribution certificate signing request need to be the same as that used for the distribution cert to sign the app? - 当我尝试 "expand" Keychain Access 中的证书时,我看到的只是信息。没有私钥信息,不能"Export 2 items"
Apple Push Notification error setting private key(这里的自答和上面的有冲突,好歹我已经没有原来的CSR了)
Unable to load client certificate private key file - 我的私钥文件不为空,我确实输入了正确的密码
知道会发生什么吗?我只是在黑暗中拍摄。
不要使用 Apple 的说明生成 CSR。
生成密钥:
openssl genrsa -out $app.key 2048
生成 CSR:
openssl req -new -key $app.key -out $app.csr
并输入相关数据。
将 CSR 上传到 Apple。下载证书。
将证书转换为 PEM:
openssl x509 -inform DER -in $app.cer -out $app.pem
现在您在 $app.key
中有了密钥,在 $app.pem
中有了 PEM 编码的证书。然后,您可以将两者都安装在将连接到 APNS 的盒子上(根据您使用的软件,它们可能是单独的文件,或者您可以将密钥附加到证书文件)。
我正在尝试按照 these 说明设置我的 S3 API 以将推送通知发送到我的 iOS 应用程序。
我把证书问题弄得一团糟,所以我希望有人能帮我解决这些问题。
到目前为止,我已经创建了一个 CSR,将其上传到 Apple Dev 门户,并下载了一个 .cer
文件。然后我将 cer
转换为 pem
openssl x509 -in apns-dev.cer -inform DER -out apns-dev.pem
然后我 运行 进入 "Open Keychain Access, select Keys, and then highlight your app private key." 的指令 不知道我的 "app private key" 是什么,我尝试了一些东西:
- 获取应用程序证书文件夹中预先存在的私钥文件(据我所知,不是的RSA私钥,用于生成上述CSR)。
- 将我的默认系统私钥导出为
p12
,然后根据 AWS 说明将其转换为pem
密钥。 - 尝试在钥匙串访问中直接从我的系统私钥生成新的 CSR
但是,每当我按照 "test" private/public 密钥对 (openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev.pem -key apns-private.pem
) 的说明进行操作时,我都会得到:
error setting private key
41047:error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-59.60.1/src/crypto/x509/x509_cmp.c:406:
我查看了以下问题,但无法使用他们的答案来解决这个问题:
Does the apple push notification distribution certificate signing request need to be the same as that used for the distribution cert to sign the app? - 当我尝试 "expand" Keychain Access 中的证书时,我看到的只是信息。没有私钥信息,不能"Export 2 items"
Apple Push Notification error setting private key(这里的自答和上面的有冲突,好歹我已经没有原来的CSR了)
Unable to load client certificate private key file - 我的私钥文件不为空,我确实输入了正确的密码
知道会发生什么吗?我只是在黑暗中拍摄。
不要使用 Apple 的说明生成 CSR。
生成密钥:
openssl genrsa -out $app.key 2048
生成 CSR:
openssl req -new -key $app.key -out $app.csr
并输入相关数据。
将 CSR 上传到 Apple。下载证书。
将证书转换为 PEM:
openssl x509 -inform DER -in $app.cer -out $app.pem
现在您在 $app.key
中有了密钥,在 $app.pem
中有了 PEM 编码的证书。然后,您可以将两者都安装在将连接到 APNS 的盒子上(根据您使用的软件,它们可能是单独的文件,或者您可以将密钥附加到证书文件)。