Openssh Openssl

  1. Openssh Openssl Compatibility Matrix
  2. Openssh Openssl Dependency

OpenSSH to OpenSSL

The SSH2 protocol implemented in OpenSSH is standardized by the IETF secshworking group and is specified in several RFCs and drafts. The overall structure of SSH2 is described in the architectureRFC. It is composed of three layered components. OpenSSL is a software library for applications that secure communications over computer networks against eavesdropping or need to identify the party at the other end. It is widely used by Internet servers, including the majority of HTTPS websites. OpenSSL contains an open-source implementation of the SSL and TLS protocols. OpenSSL is an open-source implementation of the SSL and TLS protocols. The core library, written in the C programming language, implements the basic cryptographic functions and provides various utility functions. Wrappers allowing the use of the OpenSSL library in a. OpenSSH is a program depending on OpenSSL the library, specifically OpenSSH uses the libcrypto part of OpenSSL.

OpenSSH private keys are directly understable by OpenSSL. You can test for example:

You can also convert then to PEM format easily (notice, format for SSH private keys and PEM is very close):

So, you can directly use it to create a certification request:

You can also use your ssh key to create a sef-signed certificate:

Notice I have not found how to manipulate ssh public key with OpenSSL

OpenSSL to OpenSSH

Affinity designer black friday 2020. Private keys format is same between OpenSSL and OpenSSH. So you just a have to rename your OpenSSL key:

In OpenSSL, there is no specific file for public key (public keys are generally embeded in certificates). However, you extract public key from private key file:

GnuPG to OpenSSH

First, you need to know fingerprint of your RSA key. You can use:

Next, you can use openpgp2ssh tool distributed in with monkeyshpere project:

A few notes are necessary:

  • 01234567 must be fingerprint of a RSA key (or subkey)
  • gpg --export-secret-keys also accept finger print of global key (in this case, it exports all sub-keys). However, openpgp2ssh only accept finger print of an RSA key
  • If no arguments are provided, openpgp2ssh export RSA keys it find

You can now extract ssh public key using:

Openssh Openssl Compatibility Matrix

GnuPG to OpenSSL

We already saw all steps. Extract key as for ssh:

Openssh Openssl

You can can convert this key to PEM format:

You can create a certification request:

You can create a sef-signed certificate:

GnuPG S/MIME to OpenSSL

Gpgsm utility can exports keys and certificate in PCSC12:

You have to extract Key and Certificates separatly:

You can now use it in OpenSSL.

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

OpenSSL to GnuPG S/MIME

Invert process:

GnuPG S/MIME to OpenSSH

Now, chain processes:

We need to protect key, else ssh refuse it.

OpenSSH to GnuPG S/MIME

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

We can now import it in GnuPG

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

Шпаргалка по openssl/openssh/putty

Систематизируем знания по созданию и конвертации ключей при использовании различных инструментов.

Требуется сгенерировать ключ для доступа по ssh. Всегда нахожу разные способы их сгенерировать и постоянно забываю чем они отличаются.

Инструкция для Linux

openssl

Openssh Openssl Dependency

openssl req -x509 -newkey rsa:2048 -keyout openssl-key.pem -out openssl.pub -days 365

x509 - стандарт.

rsa - алгоритм.

2048 - длина ключа.

365 - время действия в днях.

Нужен для генерации сертификатов сайтов. Для ssh бесполезен.

ssh-keygen

ssh-keygen -f ssh-key

По-умолчанию генерирует файлы ~/.ssh/id_rsa и ~/.ssh/id_rsa.pub. Ключ -f позволяет указать выходную папку и имя.

SHA256 - цифровая подпись

puttygen

Не установлен в систему в отличии от предыдущих. Установка:

sudo apt install putty-tools

Генерируем приватный ключ(очень долго):

puttygen -t rsa -b 2048 -C '[email protected]' -o putty-key.ppk

И генерируем из него публичный:

puttygen -L putty-key.ppk > putty-key.pub

Каталог со всеми сгенерированными ключами:

Каждый ключ состоит из публичной и приватной части.

Pub Keys

openssl
openssh
puttygen

Private Keys

openssl
openssh
puttygen

Экстракция и конвертация

Приватный в публичный.

  • openssl

  • openssh

  • puttygen

Конвертировать уже имеющийся ключ.

  1. openssl -> openssh

  2. openssl -> putty

  3. openssh -> openssl

  4. openssh -> putty

  5. putty -> openssl

  6. putty -> openssh

Инструкция для Windows

Самым простым и распрастраненным вариантом является Putty, а точнее puttygen.

Также можно использовать порты Unix приложений, например в MSYS2.

Запускаем puttygen.exe, жмем Generate. Водим мышкой для генерации случайной последовательности.

Вводим, если нужно, пароль для сертификата и сохраняем ключи. Также можно сохранить ключ в формате openssh через Conversions -> Export OpenSSH Key.

Из сохраненного .ppk файла всегда можно извлечь всю информацию, загрузив его в puttygen.

Выводы

  1. openssl совсем не нужен, как и все примеры с его использованием для генерации ssh ключей. Я всегда натыкался на него в примерах и это меня сбивало.
  2. ssh-keygen сохраняет публичный ключ в формате authorized_keys файла, puttygen сохраняет по RFC 4716.
  3. Предпочтения по платформам: Linux - ssh-keygen, Windows - puttygen.exe.

Ссылки