views:

862

answers:

3

Hello you iPhone guys,

I have been using your knowledge that you share on stack overflow through my various Google Searches regarding iPhone development. Thank you for the same.

But now I need your active help. Well I have been trying to create a final build for an application that my company is developing for a third party client. I have submitted ad hoc distribution to this client using my companies iPhone Program Portal ID and they work fine.

Now the client wanted to submit the application to AppStore. Naturally the application should be signed with iPhone Program Portal ID of the client's company.

So the client created a admin team member account for me and requested a certificate and approved it myself. Downloaded it. And installed it in Keychain Access under “login” keychain (which is default keychain) by double clicking on it.

After that I created a App ID. And then I went on to create an AppStore Distribution Provisioning Profile. Here I found out that Some how under Provisioning Profiles I was getting the 'Development' tab but not the 'Distribution' Tab.

So finally the client shared his login credentials for iPhone Program Portal ID using which I created a AppStore Distribution Provisioning Profile. After that I downloaded the provisioning profile and placed it under '/Library/MobileDevice/Provisioning Profiles'

Then under the build properties I tried to assign this provisioning profile as the code signing identity it gave me error:

profile doesn't match any valid certificate/private key pair in default keychain

After this I created downloaded the clients development as well as the distribution certificates and added them to the “login” (which is set as default keychain)

After that I created a new AppID and Provisioning Profile by using the clients acount and tried to sign the code using this new Provisioning Profile. But it still gave me error:

profile doesn't match any valid certificate/private key pair in default keychain

Can anybody please explain me what can be the problem? Is it because the provisioning profile is created using Clients Certificate and since I have only the certificate but not the private key for that certificate it is giving me error?

Or to rephrase the question

Is it necessary that to create an AppStore build the Certificate, the App Id and the Provisioning Profile should be created using the same account and the Keychain on the Mac being used to create the build must contain both the certificate as well as the original Private Key for the certificate?

All the replies are much appreciated.

Regards,

Pritam Barhate.

A: 

I can't begin to tell you how many times I've rebuilt my entire keychain from scratch. Having expired entries broke things, changing machines broke things, you get the idea. I suggest going back to the step by step instructions Apple provides on the page you got the SDK from. Very few people can publish apps -- you'll need to do everything as if you were the group leader.

Epsilon Prime
A: 

You need to regenerate the client's distribution certificate using a .certSigningRequest you create on your own machine (as with requesting any other certificate for the iPhone developer program), then recreate their distribution provisioning profile using that certificate.

Noah Witherspoon
+1  A: 

It sounds like you have imported your client's certificates but NOT their private key. You need the private key as well as the certificate to sign the application. For security reasons the private key is never uploaded to the Apple Portal, so you won't be able to get it from there.

You can check if you have the private key by selecting Certificates on the left in Keychain Access. You should now see a triangle on the left of your client's distribution certificate. Pressing the triangle should expand showing the private key associated with that certificate. If there is no triangle then you don't have the private key.

Dan J
This worked for me. I had to export my private key from my former dev box, and double-click it (import it into Keychain Access) on the new box. I can now build for distribution in XCode.
Glenn Barnett
Thank you for the answer. Sorry for the delayed reply.
Pritam Barhate
@Pritam, If my answer works for you, can you please click on the tick so I get rewarded for it? :-)
Dan J
@Dan Yep that was right I wasn't importing the private key. Sorry I am adding this reply after so long. I got the answer accidentally and then I forgot to come back here. But thanks anyways. Stack Overflow is community is very useful.
Pritam Barhate