У меня есть ключ хоста сервера (закрытый ключ) в формате Openssl, который я хочу использовать для аутентификации сервера. Я предпочитаю использовать модель доверия, согласно которой клиентская локальная база данных должна связывать каждое имя хоста с соответствующим открытым ключом хоста. Поскольку ключ формата openssl не поддерживается в архитектуре openssh, я ищу решение, которое должно преобразовать мой закрытый ключ формата openssl в закрытый ключ формата openssh. Благодарим за любую помощь в решении этой проблемы.
Не совсем ответ, но слишком длинный, чтобы его можно было читать как комментарии.
Неясно, спрашиваете ли вы о закрытом или открытом ключе.
OpenSSH поддерживает все 8 (*) форматов PEM для частный ключ, используемый OpenSSL. Фактически, исторически (поскольку v1 устарела) он генерировал только 6 «традиционных» форматов OpenSSL, но могут также читать 2 формата PKCS8; с 6.5 в 2014 г. поддерживает определяемый OpenSSH (и не совместимый с OpenSSL) «новый» формат, но по умолчанию используется это значение по умолчанию только для Ed25519, сохраняя форматы OpenSSL для RSA DSA ECDSA; а с версии 7.8 в 2018 году для всех типов ключей по умолчанию используется «новый», но он все еще может генерировать или преобразовывать в OpenSSL (за исключением Ed25519); видеть Преобразование ключей между openssl и openssh и еще несколько ссылок там. (*) Начиная с версии 7.0 в 2015 году OpenSSH по умолчанию не использует ключи аутентификации DSA в протоколе, если вы не включите их вручную (на обоих концах); по этому поводу есть вопросы, IIRC на нескольких стеках. Но он по-прежнему поддерживает создание, преобразование и иное управление ключом DSA. файлы, даже если эти файлы в основном бесполезны.
OpenSSH's общественный форматы ключей отличаются от OpenSSL, но, начиная с файла закрытого ключа, вы можете просто использовать ssh-keygen -y
создать открытый ключ в формате OpenSSH; это задокументировано на странице руководства. Также с версии 6.0 в 2012 г. ssh-keygen -i -m pkcs8
(хотя имя неточно) может преобразовать из того, что OpenSSL называет форматом «PUBKEY» (который на самом деле является X.509 SubjectPublicKeyInfo), в формат OpenSSH. Только если вам нужно преобразовать открытый ключ OpenSSL в формат OpenSSH без использования OpenSSH это сложно, и на это есть вопросы, в основном на stackoverflow (поскольку на самом деле это нетривиально).