69

I've consulted many sources out there and still can't figure this out.

http://code.google.com/p/apns-php/wiki/CertificateCreation

Basically after I download the Development Push SSL Certificate from the iOS Provisioning Portal > App IDS (with Enable for Apple Push Notification service selected) and I double click the certificate (filename aps_development.cer) to open it, the Keychain opens. I then select "login" and "Certificates" on the left panels. On the right panel I see "Apple Development IOS Push Services:..." and all instructions I've consulted so far have told me to "expand" this option by clicking the arrow next to the name to reveal the private key, but there is no expand option for this certificate. Can anyone help me find this private key? Did I download the wrong certificate?

Thanks

Kara
  • 6,115
  • 16
  • 50
  • 57
Ken Yu
  • 721
  • 1
  • 6
  • 6

16 Answers16

46

I noticed that the expand icon is actually visible when clicking on 'My Certificates' in the left menu (Keychain).

wspruijt
  • 1,037
  • 11
  • 15
42

My problem was that, for some reason the various certs were being added to the 'System' keychain instead of the 'login' one.

By selecting 'login' and then adding them with the little '+' (next to the i) they've been added to the right place.

nbsp
  • 2,291
  • 1
  • 15
  • 12
36

What I faced, when I was creating CSR file, I was putting Common Name with a space. And the certificates created by this CSR file were not showing expand arrow in the Keychain Access

After I made a new CDR File with a short common name and recreated certificates, it installed well and has a private key.

enter image description here

Vaibhav Saran
  • 12,848
  • 3
  • 65
  • 75
18

on the machine you are trying to access this cert, do you have the key with which you signed the Certificate Signing Request (based on which apple created that certificate for you)?

You should ask the person who created that certificate. Thats probably the only way you can get the private key.

Nitin Alabur
  • 5,812
  • 1
  • 34
  • 52
  • When I signed the CSR, I got a certificate "iPhone Developer:[name]" with a private key "iOS Developer:[name]" along with it. Is this the private key that I should use for my apns-dev-key? – Ken Yu Jan 30 '13 at 22:36
  • 1
    It worked when I removed the existing Development Push SSL Certificate and created a new one with my own certificate generated from CSR, but there has to be a way around this for other team members to be able to access the private key when they download the certificate, right? – Ken Yu Jan 30 '13 at 22:58
  • 2
    Yes. and that way, is to export (right click on the certificate in keychain and export) the cert-key pair (or just the key) to your team members. That way, when your team members double click the certificate-key pair, both these will be loaded onto the keychain – Nitin Alabur Jan 30 '13 at 23:29
  • @KenYu where did you get 'your own certificate generated from CSR' from? I am just able to get a CertificateSigningRequest. – kev Apr 05 '14 at 23:21
  • you upload the CSR in the dev portal. after that, you can download the signed certificate from the portal – Nitin Alabur Mar 16 '16 at 16:02
  • I had same issue and your response helped me. I was trying to generate push certificates on a new macbook. But when I switched back to my old mac, it worked. My old mac will probably die soon, what certs/keys, etc should i export off my old mac on the new one and keep a back up? – Amit Garg Mar 08 '17 at 22:29
  • Any cert/key pair related to apps in production / appstore, also the ones used for APNS, and the private keys related to your apps. – Nitin Alabur Mar 09 '17 at 20:47
14

I had the exact same problem. Double-clicking the .cer file put the certificate in the Keychain, but did not show any private key (nor was the entry expandable).

I fixed the issue with these steps:

  1. Quit keychain access.
  2. right-click the .cer file (e.g. aps_production.cer)
  3. Select "Open With > Keychain access (default)"

... and voila, now it shows up with the private key. Which is rather odd, since it was opening Keychain access anyways.

Tim O'Neil
  • 511
  • 1
  • 7
  • 8
14

Goto the keychain access and follow steps as given below...

enter image description here

Balaji Ramakrishnan
  • 1,909
  • 11
  • 22
user619237
  • 1,776
  • 3
  • 17
  • 19
12

Delete the certificate that has no private key. Open Login in Keychain, then drag the file from Finder to Login and your certificate now has a private key!

RomeoF
  • 299
  • 3
  • 12
11

My problem was that I was not looking under "Certificates" but under "All Items": enter image description here

Sam
  • 5,375
  • 2
  • 45
  • 54
8

I was just double clicking on the certificate. What helped me eventually was to drag the certificate into the relevant section.

enter image description here

More details can be found in this blog: How to Export a Push Notification Certificate in a p12 file?

Luda
  • 7,282
  • 12
  • 79
  • 139
  • BTW, do we actually generate a pair of keys and a certificate for each app? I found it so messy I have trouble locating which app with which key and certificate. – huggie Sep 02 '16 at 08:48
2

Leaving this here in the hope that it helps somebody with similar symptoms - When you click aps.cer for opening it with Keychain Assistant, it prompts you with a dialog to select a keyring to import the Certificate into. For me, the private key didn't show up in a collapsible for any other keyring than login (i.e. others such as System or System Roots seemed to show only the Certificate).

Angad
  • 2,803
  • 3
  • 32
  • 45
1

Yet another answer to this...

After you create your CSR, before actually uploading it to the Apple site, you can go look within Keychain Access under the logins -> keys and see that you already have new public and private keys with the same name as you entered in your new CSR's CommonName.

So when you upload the CSR to the Apple, then download the certificate, then double-click the certificate, Keychain access is just matching up that downloaded certificate with the public key that was already in your Keychain Access list and it attaches the private key.

So if you are not able to get the private key after all of this, try recreate your CSR.

The strange thing to me is that, I had read that you could use the same CSR each time you recreate your certificate, but for some reason that is not working for me. Perhaps because the old expired certificate that I was replacing was no longer in my Keychain Access list and so therefore there was no public/private key pair that matched the newly generated certificate.

hvaughan3
  • 10,955
  • 5
  • 56
  • 76
  • Thanks a lot for the explanation, mate! This saving me tons of headache. I was trying to create new certificate using given CSR file from my old machine, but apparently I cannot export the CER file result to P12 because apparently it missing the public & private key. So I follow your suggestion to recreate the CSR in my new machine and making sure the CommonName is correct. Voila! It works! – Riandy Rahman Nugraha Jun 04 '23 at 22:19
1

The .cer file does not contain the private key, only the public one. So all of these solutions are relevant only from the computer who issued the original CSR, or from a computer where the original certificate's keypair was imported to Keychain.

If you don't have access to the private key, you would have to generate a new certificate. However - you do not have to invalidate the old one from Apple's certificate portal, as you may use multiple APNS certificates for the same app ID.

Vaiden
  • 15,728
  • 7
  • 61
  • 91
0

Delete the certificate that has no private key. Open Login in Keychain

enter image description here

Drag this two certificate in keychain

Woo you. have private key In your keychain.

Hardik Bar
  • 1,660
  • 18
  • 27
0

I tried various answers on this question with no luck. I think what helped me was following the bottom of the Add Certificate page instruction: Intermediate Certificates

So I double-clicked AppleWWDRCA and AppleWWDRCAG3. Then installed the generated certificated and "My certificates" section started to show certificates with private keys.

RustamG
  • 1,815
  • 1
  • 14
  • 16
0

The reason is CSR file that was used to create this push certificate is not from your machine. You can ask person whoever created this certificate for private key.

nikBhosale
  • 531
  • 1
  • 5
  • 27
0

Nothing above helped because Apple Software is crap. What I needed to do to make it work was to close and restart Keychain Access. That was all. What a poor programming Apple.

aqm
  • 142
  • 2
  • 17