ssl/conversion2.txt
author Tomas Zeman <tomas@functionals.cz>
Fri, 31 Dec 2021 12:25:17 +0100
changeset 41 c4f9f37e9a28
parent 38 68d27bdf49c9
permissions -rw-r--r--
Fossil SCM: Linking Tickets to Checkin's http://chiselapp.com/user/cutterpillow/repository/fossil-iOS/wiki?name=Cookbook#ticket-checkin-links

http://www.sysmic.org/dotclear/index.php?post/2010/03/24/Convert-keys-betweens-GnuPG%2C-OpenSsh-and-OpenSSL

OpenSSH -> OpenSSL
==================

OpenSSH private keys are directly understable by OpenSSL:

  openssl rsa -in ~/.ssh/id_rsa -text
  openssl dsa -in ~/.ssh/id_dsa -text

So, you can directly create certification request:

  openssl req -new -key ~/.ssh/id_dsa -out mykey.csr

OpenSSL -> OpenSSH
==================

Private keys format is same between OpenSSL and OpenSSH, but not public key format. Nevertheless, you extract public key from private key file:

  ssh-keygen -y -f id_rsa > id_rsa.pub

GnuPG -> OpenSSL
================

Gpgsm utility can exports keys and certificate in PCSC12:

  gpgsm -o  secret-gpg-key.p12 --export-secret-key-p12 0xXXXXXXXX

You have -> extract Key and Certificates separatly:

  openssl pkcs12 -in secret-gpg-key.p12 -nocerts -out gpg-key.pem
  openssl pkcs12 -in secret-gpg-key.p12 -nokeys -out gpg-certs.pem

You can now use it in OpenSSL.

You can also do similar thing with GnuPG public keys. There will be only certificates output.

OpenSSL -> GnuPG
================

Invert process:

  openssl pkcs12 -export -in gpg-certs.pem -inkey gpg-key.pem -out gpg-key.p12
  gpgsm --import gpg-key.p12

GnuPG -> OpenSSH
================

Now, chain processes:

  gpgsm -o  secret-gpg-key.p12 --export-secret-key-p12 0xXXXXXXXX
  openssl pkcs12 -in secret-gpg-key.p12 -nocerts -out gpg-key.pem

We need -> protect key, else ssh refuse it.

  chmod 600 gpg-key.pem
  cp gpg-key.pem ~/.ssh/id_rsa
  ssh-keygen -y -f gpg-key.pem > ~/.ssh/id_rsa.pub

OpenSSH -> GnuPG
================

First we need to create a certificate (self-signed) for our ssh key:

  openssl req -new -x509 -key ~/.ssh/id_rsa -out ssh-cert.pem

We can now import it in GnuPG

  openssl pkcs12 -export -in ssh-certs.pem -inkey ~/.ssh/id_rsa -out ssh-key.p12
  gpgsm --import ssh-key.p12

Notice you cannot import/export DSA ssh keys to/from GnuPG