48

I am trying to add myRepositoryKey to my Mac keychain utility so . I exported this item in OpenRSA format from Putty. When I try to use Import Items, the file is unselectable. What do I need to do to import into my keychain? Does the file need a specific extension?

4 Answers 4

52

You have to create a .p12 file. In order to do that you need your private key and a certificate for that key. Then run the following on your console:

openssl pkcs12 -export -clcerts -inkey private.key -in certificate.crt -out MyPKCS12.p12 -name "Your Name"

where private.key is your existing private RSA key, certificate.crt is your existing certificate and MyPKCS12.p12 is the name of the file to create. This file can then be imported into your keychain.

If you need your key for SSH access (SFTP, SCP or similar), it doesn't have to be in your keychain. Simply copy your private key to ~/.ssh/ and edit/create the ~/.ssh/config file. There you would put something along these lines:

# replace the host, location of the private key and the remoteUserName
# with valid values.
Host remote.domain.com
    IdentityFile ~/.ssh/private.key
    User remoteUserName
5
  • What do you mean by a certificate for the key? Would I have to involve a signing authority?
    – Casebash
    Commented Feb 23, 2011 at 20:24
  • Yes, or sign one yourself, although I would not recommend that for anything else than personal use.
    – bummzack
    Commented Feb 23, 2011 at 22:36
  • 2
    Just an FYI, the command worked for me using a .pem rather than a .crt for the certificate. I first tried to convert the .pem to a .crt, which failed, then just tried the .pem in the command you've shown directly and that actually worked! Commented Oct 16, 2013 at 17:19
  • it did create p12 file in my case but with this error "unable to load certificates" what does that mean?
    – Umair A.
    Commented Nov 8, 2013 at 22:13
  • You might have saved my job. I was breaking my head over this for hours. Commented Jul 14, 2018 at 20:46
35

Well I don't get that "need a certificate for the key" either...

I just do ssh-add -K /path/to/private/key.

However, make sure you're using Mac's built-in ssh-add and not Macports' one (if you ever needed to upgrade OpenSSH).

So, just do /usr/bin/ssh-add -K /path/to/private/key.

Hope that helps.

3
  • Correct: the built-in SSH must add the key, then both the built-in SSH and the MacPorts SSH can use it.
    – Jeremy L
    Commented Sep 28, 2011 at 18:11
  • Note that you might encounter that "Permission %%%% for ... are too open. [...] This private key will be ignored." Take a look on this answer to fix that issue.
    – luk2302
    Commented Jul 6, 2015 at 12:05
  • Nice. Pity there is no Keychain GUI support to do this, seems trivial.
    – O'Rooney
    Commented Nov 16, 2021 at 0:03
6

I've tried to import a .p12 using Keychain's GUI just to be silently ignored under Lion. So just for completeness, I'd like to this post in Stephan's Blog

http://www.arlt.eu/blog/2009/12/01/importing-iphone-keys-p12-and-pem-into-snow-leopards-keychain/

In short, this should do the trick every time:

security import priv_key.p12 -k ~/Library/Keychains/login.keychain
security import pub_key.pem -k ~/Library/Keychains/login.keychain
1

Considering all in PEM format, private key file is server-key.key and certificate file is server-cert.pem.

# create .p12 formatted file with key and certificate using openssl. 
openssl pkcs12 -export -in server-cert.pem -inkey server-key.key -passout pass:password -out certificate.p12 -name "SCProxy"

# should use -T appPath. -A means this key is accessible for all apps. 
sudo security import certificate.p12 -A -P password -k "/Library/Keychains/System.keychain"
sudo security add-trusted-cert -d -r trustRoot -k "/Library/Keychains/System.keychain" server-cert.pem
1

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .