[英]Can't create IOS_DISTRIBUTION certificate using AppStore Connect API. Error 409/ENTITY_ERROR.ATTRIBUTE.INVALID/Invalid Certificate
我正在尝试使用AppStore Connect API创建证书。 For that I created valid (I used it to fetch certificates list using GET method, it works) JWT token: eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiIsImtpZCI6IkZZREszQlVIOE0ifQ.eyJpc3MiOiIwNWNiN2M3Yy00Y2RkLTRlYjMtYWRiZC1kNzkwYWEyYTBhNjEiLCJleHAiOjE1ODc3OTg1MjMuMjI3ODIyLCJhdWQiOiJhcHBzdG9yZWNvbm5lY3QtdjEifQ.Vs1xpLL2xF_WtQNXg3m1XySG-mdSsR2fQalhDgFy5NkIhtRWtWfxkyxMOTe3la-zqWAKjZ7iiCGf8Fkm5_cl2Q
漂亮的印刷 JSON Http 主体是:
{
"data":{
"attributes":{
"certificateType":"IOS_DISTRIBUTION",
"csrContent":"'$(cat private.csr | base64)'"
},
"type":"certificates"
}
}
其中由Keychain Access生成的private.csr
文件包含:
-----BEGIN CERTIFICATE REQUEST-----
MIIClDCCAXwCAQAwTzEnMCUGCSqGSIb3DQEJARYYaWdvci5rb3Rrb3ZldHNAZHVt
bXkuY29tMRcwFQYDVQQDDA5JZ29yIEtvdGtvdmV0czELMAkGA1UEBhMCQlkwggEi
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDnON+o9OZCRAF0oJqnjt7RBDJj
ZDJjj04iH/UvqEaJ/T8iq7iWZFQBpnLD11vcProtA+v4rNI/H5N4R+BPJclmvbPE
BGOSvyQHXf92blCzL9e9Lqk6GVTvdh+7YDlJV+dTqceP0evQleybWn7bp/lnRKtb
o5NWOfDKv5dgUXEFi5e0Hy9FMem5AlKGN7NObSypi7mBqscpRpg70ZLrODZxg8Ee
E/R8ZHWesuIvMBp+m4J6O2+gMRTOVb+jA+577StbkZM4lxDhYB1XEy3nmXkCJXqi
C/mgxmfNnCBK4s9OYJnEVu703aPYm9c9qI4eHdQzyEE0WqRits2CDckWGIBFAgMB
AAGgADANBgkqhkiG9w0BAQsFAAOCAQEAtLXvHejf2zPlMhJeWU6BBnsc2z2P6ZWS
92GZCMpTLX/apN8IjzxZWG+x5hW4ub6YL3SWTgz7l4OJzyIzV4t5xupcRwGessOt
XvBvDEshd9k7LkueNtoXO6buJEKa5sDEZ+31BxUKGgqRXBTxsVxvTJSQTF1quutN
j8AQzWBRRp1HkTRS89iBS1G7eY9NR1Abvp2Omr8RRdvqsOm5i1aJ7HvOc4SxlnyL
PZFGYQFKCX1wT6la8RYPbq96hAAwAKDvCf2pqT9iYwJOOPRHvpLuA8N9TlQGjEtJ
O+QUtQJ4PFTRTGhHxNEDXdGRH2JMSQD1ral4PiYy/YCfNZiyrtMDgg==
-----END CERTIFICATE REQUEST-----
接下来我执行curl
请求:
curl -v -X POST -H 'Content-Type: application/json' -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiIsImtpZCI6IkZZREszQlVIOE0ifQ.eyJpc3MiOiIwNWNiN2M3Yy00Y2RkLTRlYjMtYWRiZC1kNzkwYWEyYTBhNjEiLCJleHAiOjE1ODc3OTg1MjMuMjI3ODIyLCJhdWQiOiJhcHBzdG9yZWNvbm5lY3QtdjEifQ.Vs1xpLL2xF_WtQNXg3m1XySG-mdSsR2fQalhDgFy5NkIhtRWtWfxkyxMOTe3la-zqWAKjZ7iiCGf8Fkm5_cl2Q' -d '{"data":{"attributes":{"certificateType":"IOS_DISTRIBUTION","csrContent":"'$(cat private.csr | base64)'"},"type":"certificates"}}' https://api.appstoreconnect.apple.com/v1/certificates
但服务器响应错误:
< HTTP/1.1 100 Continue * We are completely uploaded and fine < HTTP/1.1 409 Conflict < Server: daiquiri/3.0.0 < Date: Sat, 25 Apr 2020 07:20:08 GMT < Content-Type: */* < Content-Length: 254 < Connection: keep-alive < Cache-Control: no-store, no-cache, must-revalidate < Pragma: no-cache < X-XSS-Protection: 1; mode=block < X-Frame-Options: ALLOW-FROM https://devcms.apple.com SAMEORIGIN < Strict-Transport-Security: max-age=31536000; includeSubDomains < X-Request-ID: QRCVNTSDFD6UA4O62U7ZZM67ZM < X-Rate-Limit: user-hour-lim:3600;user-hour-rem:3598; < x-daiquiri-instance: daiquiri:38493002:pv50p00it-hyhk10063901:7987:20E24 < { "errors": [ { "id": "7470a152-5d89-4d85-8e6e-987754c519c3", "status": "409", "code": "ENTITY_ERROR.ATTRIBUTE.INVALID", "title": "An attribute in the provided entity has invalid value", "detail": "Invalid Certificate" } ] * Connection #0 to host api.appstoreconnect.apple.com left intact
我已经不知道出了什么问题。 我检查了我的帐户中的 iOS 分发证书没有限制。
几天后,我发现了问题。 那是我 base64 编码的 CSR 文件。 不需要,这个文件已经包含了BASE64之间的数据
-----BEGIN CERTIFICATE REQUEST-----
...
BASE64 ENCODED DATA
...
-----END CERTIFICATE REQUEST-----
所以正确的身体是
{
"data":{
"attributes":{
"certificateType":"IOS_DISTRIBUTION",
"csrContent":"'$(cat private.csr)'"
},
"type":"certificates"
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.