The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Раздел полезных советов: Использования HTTPS-сертификатов для шифрования и подписи произвольных данных"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Подсказка: Для контроля за появлением новых сообщений - перед выходом жмите "Пометить прочитанным".
"Раздел полезных советов: Использования HTTPS-сертификатов для шифрования и подписи произвольных данных" +/
Сообщение от auto_tips (?), 22-Май-24, 12:44 
Созданные для HTTPS сертификаты вполне можно использовать для формирования цифровых подписей к произвольным данным, а также для шифрования по открытым ключам.

++ Создание подписи.

Имеем следующие файлы с сертификатами от Let's Encrypt:

   /etc/letsencrypt/live/site.com# ls -la
   ...
   lrwxrwxrwx  1 root root   42 May  22 8:11 cert.pem -> ../../archive/site.com-0001/cert43.pem
   lrwxrwxrwx  1 root root   43 May  22 8:11 chain.pem -> ../../archive/site.com-0001/chain43.pem
   lrwxrwxrwx  1 root root   47 May  22 8:11 fullchain.pem -> ../../archive/site.com-0001/fullchain43.pem
   lrwxrwxrwx  1 root root   45 May  22 8:11 privkey.pem -> ../../archive/site.com-0001/privkey43.pem
   ...

Для заверения цифровой подписью файла msg.txt можно использовать закрытый ключ из файла privkey.pem:

   openssl dgst -sha256 -sign privkey.pem -out msg.txt.sig msg.txt

После чего полученную подпись можно преобразовать в текстовое представление в кодировке Base64:

   openssl base64 -in msg.txt.sig -out msg.txt.sig.asc


Далее можно опубликовать файлы msg.txt и msg.txt.sig.asc, а сторонние пользователи могут воспользоваться открытым ключом от домена site.com для верификации неизменности содержимого msg.txt:

Загружаем открытый ключ сайта site.com  в файл pubkey.pem:

   openssl s_client -connect site.com:443 -showcerts | openssl x509 -pubkey -noout > pubkey.pem

Преобразуем цифровую подпись в бинарный формат и верифицируем открытым ключом:

   openssl base64 -d -in msg.txt.sig.asc -out msg.txt.sig
   openssl dgst -keyform pem -verify pubkey.pem -signature msg.txt.sig msg.txt

   Verified OK

++ Шифрование

Сторонний пользователь может воспользоваться открытым ключом от домена site.com для шифрования данных, которые следует передать владельцу домена site.com, имеющему доступ к закрытому ключу.

   openssl pkeyutl -in msg.txt -out msg.enc -pubin -inkey pubkey.pem -encrypt

Преобразуем зашифрованный бинарный файл в текстовое представление для передачи по электронной почте или через мессенджер:

   openssl base64 -in msg.enc -out msg.enc.asc


Владелец закрытого ключа может расшифровать сообщение используя команды:

   openssl base64 -d -in msg.enc.asc -out msg.enc
   openssl pkeyutl -in msg.enc -out msg.txt -inkey privkey.pem -decrypt

URL: https://yurichev.com/n/HTTPS_certs/
Обсуждается: http://www.opennet.ru/tips/info/3251.shtml

Ответить | Правка | Cообщить модератору

Оглавление
Раздел полезных советов: Использования HTTPS-сертификатов для шифрования и подписи произвольных данных, auto_tips, 22-Май-24, 12:44  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру