gpgsm и совместимость форматов ключей

gpgsm и совместимость форматов ключей

Сообщение nezabudka » 14 ноя 2016, 12:49

Решила раз и навсегда разобраться с шифрованием, с электронной подписью
в gpg и покончить со всеми темными пятнами в своем образовании. Но все
не так просто как может показаться на первый взгляд. Помимо ключей шифрования
как оказалось еcть не совместимые форматы для ssh и встроенные в сертификаты
в которых если честно я совершенно не разбираюсь.
Решила начать свой заезд не с чистого листа, а отталкнуться от того что есть.
А есть у меня не много. Это сгенирированные ключи rsa по команде ssh-keygen
для работы по ssh с github.com
Первым естественным моим желанием было не плодить открытые ключи, а сконверти
ровать несколько форматов из одного мастер ключа. Простым решением выглядел
вариант сгенерировать при помощи gpg2 ключи и на их основе сконвертировать
форматы для работы и с сертификатами и чере ssh-agent. Но я попробовала
пойти другим путем и взять за основу уже работающий ключ для ssh подключения.
Хотя поменять ключ если что на github.com дело нескольких минут. Но как
говорится выбрав дорожку не прямоезжую мы возможно получим больший опыт.
Как выяснилось у меня не получилось сконвертировать эти ключи для работы
с утилитой gpg но получилось встроить в формат с сертификатом.
Теперь по порядку:
При запуске агента ssh создается директория .ssh в домашнем каталоге
Код: выделить все
ssh-agent /bin/bash

В этот каталог я и помещаю свои текстовые ключи id_rsa и id_rsa.pub
И соединяясь по ssh агент автоматически с ними работает. Надо заметить
не обошлось и без подножек по работе с мануалами в сети. Одна из таких
подножек - обычная ошибка. Откроем страницу мануала
http://www.sysmic.org/dotclear/index.php?post/2010/03/24/Convert-keys-betweens-GnuPG,-OpenSsh-and-OpenSSL
и найдем последнию инструкцию по превращению OpenSSH to GnuPG S/MIME
Если все выполнить по приведенной инструкции с помощью копипаста
то вместо результата получим большую фигу с маслом.
К стати вот статья в которой детально, на научной основе обсуждается эта фига.
http://serverfault.com/questions/346958/how-do-i-import-a-rsa-ssh-key-into-gpg-as-the-primary-private-key
Полностью читать мы ее не станем, а резберем причину ошибки в высше
приведенных строчках кода. Как оказалось в последней строчке команда
не находит нужный файл ssh-cert.pem просто потому что в предыдущей
строчке кода мы создали другой файл с именем ssh-certs.pem. Видно, что
файлы отличаются одной буквой которая при копировании превращается в не
очень заметную ошибку. Значит с этим мануалом разобрались и сконвертировали
наш ключ в формат для работы с утилитой gpgsm совместно с сертификатом.
Я конечно еще не доконца разобралась с этим инструментом и даже не знаю как залить
свободный ключ на сервер, но начало бою в воздухе положено и предлагаю всем
у кого есть желание поэкспериментировать в этом направлении вместе со мной.
Вот мой мануал
Как я помню произвела на свет два ключа такой командой
Код: выделить все
ssh-keygen -t rsa -C 'gxendz@mail.ru'

Теперь же я сконвертировала его секретную часть (не знаю может надо было
конвертировать публичную его часть или ваще и тот и другой. По этой причине
и не пробую пока слить полученный ключ на сервер свободных колючей)
Код: выделить все
openssl req  -x509 -key ~/.ssh/id_rsa -nodes -days 365 -newkey rsa:2048 -out ~/.ssh/ssh-cert.pem
gpgsm --import ~/.ssh/ssh-sert.pem
openssl pkcs12 -export -in ~/.ssh/ssh-cert.pem -inkey ~/.ssh/id_rsa -out ~/.ssh/ssh-key.p12 -nodes
gpgsm --import ~/.ssh/ssh-key.p12
gpgsm --list-keys

Зашифровать файл
Код: выделить все
gpgsm -r gxendz@mail.ru -e text.txt >text.txt.enc

Расшифровать файл
Код: выделить все
gpgsm -d -r gxendz@mail.ru text.txt.en >text.txt

Подписать файл
Код: выделить все
[code]gpgsm -s text.txt >text.text.sig[/code]

Проверить подпись
Код: выделить все
gpgsm --verify text.text.sig

Удобно делать подпись в отдельном файле
Код: выделить все
gpgsm -b text.txt text.sig

Проверить отдельную подпись к нужному файлу
Код: выделить все
gpgsm --verify text.sig text.txt

Можно еще всегда указыать адрес своей почты если вы записывали при создании
ключа и таким удобным способом идентифицировать нужный ключ
Код: выделить все
gpgsm -s -r address@mail.ru text.txt >text.txt.enc

Ну и естесно в студию
Код: выделить все
gpgsm -h

Так же замечу что применить одновременно опции подписи и шифрования -se не
удастся как описано в примере gpgsm -h, придется разбить работу на два этапа. Сперва
подписываем документ, если подпись не в отдельном файле, а потом шифруем его.
Буду рада любым замечаниям. Так же поддержу желание поработать совместно
непосредственно с тулзой gpg без сертификационных наворотов, с целью разложить
приобретенные знания по полочкам.
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay
Аватар пользователя
nezabudka
Местный говорун
Местный говорун
 
Автор темы
Сообщений: 613
Фото: 180
Стаж: 3 года 3 месяца 5 дней
Откуда: Ростов на Дону
Благодарил (а): 286 раз.
Поблагодарили: 145 раз.

gpgsm и совместимость форматов ключей

Спонсор

Спонсор
 

Вернуться в Командная строка

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1