- Как обновить OpenSSL на Linux CentOS
- Посмотреть текущую версию
- Из пакетов
- Из исходника
- Как найти номер версии OpenSSL — Вокруг-Дом — 2021
- Table of Contents:
- Шаг 1
- Шаг 2
- Шаг 3
- Как отобразить серийный номер и номер IMEI на Motorola RAZR?
- Как набрать номер, чтобы узнать номер последнего принятого звонка
- 8 способов найти свой IP-адрес в Windows (все версии)
- Cipherscan Test SSL,TLS Version Ciphers Of Target Kali Linux Tool | #CITechtutorials (Октябрь 2021).
- OpenSSL
- Материал из Xgu.ru
- Содержание
- Вопросы и ответы
- Введение
- Как определить какую версию OpenSSL я использую?
- Как получить список доступных команд?
- Как посмотреть список доступных шифров?
- Измерение производительности
- Как измерить производительность системы с помощью openssl?
- Как измерить производительность сетевого соединения?
- Сертификаты
- Как сгенерировать самоподписной сертификат?
- Как сгенерировать запрос сертификата у VeriSign?
- Как проверить новый сертификат?
- Как получить удалённый сертификат?
- Как извлечь какую-либо информацию из сертификата?
- Как экспортировать или импортировать сертификат PKCS#12?
- Проверка сертификата
- Как проверить сертификат?
- Какие центры сертификации распознаёт OpenSSL?
- Как мне заставить OpenSSL признавать сертификат?
- Клиенты и серверы для командной строки
- Как подключиться к безопасному SMTP-серверу?
- Как подключиться к [какому-либо] безопасному серверу?
- Как запустить SSL-сервер из командной строки?
- Дайджесты
- Как создавать дайджесты MD5 или SHA1?
- Как подписать дайджест?
- Как проверить подписанный дайджест?
- Как создать запись типа digest для файла паролей Apache?
- Какие ещё есть дайджесты?
- Шифрование/расшифровка
- Как закодировать что-то по методу base64?
- Как зашифровать файл?
- Ошибки
- Как интерпретировать сообщения об ошибках SSL?
- Ключи
- Как сгенерировать ключ RSA?
- Как сгенерировать открытый ключ RSA?
- Как сгенерировать ключ DSA?
- Как создать ключ, основанный на эллиптических кривых (elliptic curve key)?
- Как создать открытый EC ключ?
- Как удалить парольную фразу у ключа?
- Хэши для паролей
- Как сгенерировать хэш в стиле crypt?
- Как сгенерировать хэш пароля в стиле shadow?
- Простые числа
- Как проверить, является ли число простым?
- Как сгенерировать набор простых чисел?
- Случайные данные
- Как генерировать случайные данные?
- S/MIME
- Как проверить подписанное сообщение S/MIME?
- Как зашифровать сообщение S/MIME?
- Как подписать сообщение S/MIME?
Как обновить OpenSSL на Linux CentOS
Данная инструкция протестирована на CentOS 6, 7 и 8.
Посмотреть текущую версию
Узнать текущую версию openssl в Linux можно следующей командой:
Мы увидим что-то на подобие:
OpenSSL 1.0.2k-fips 26 Jan 2017
* в данном примере используется версия openssl 1.0.2k от 26 января 2017 года.
Из пакетов
Самый простой способ — воспользоваться репозиторием. Однако, в нем может находиться далеко не последняя версия.
yum install openssl
* также можно ввести yum update openssl.
Если будет найдено обновление, система предложит обновить пакет — отвечаем Y.
Если обновлений нет или будет установлена не последняя версия, выполняем установку из исходника.
Из исходника
Устанавливаем пакеты, необходимые для сборки пакета:
yum install make gcc
Переходим по ссылке https://www.openssl.org/source/ и находим в описании LTS версию openssl:
* как видим, на момент написания обновления инструкции это была версия 1.1.1.
И копируем ссылку на ее скачивание:
На CentOS скачиваем исходник с использованием найденной ссылки:
И распаковываем его с последующим удалением:
tar -xvf openssl-*.tar.gz && \rm openssl-*.tar.gz
Переходим в папку с распакованным исходником:
./config —prefix=/usr/local —openssldir=/usr/local
Резервируем предыдущую версию openssl:
mv /usr/bin/openssl /root/openssl.back
И делаем ссылку на новую:
ln -s /usr/local/bin/openssl /usr/bin/openssl
Снова проверяем версию:
openssl version -a
Система вернет либо ошибку, например:
openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
. либо полные сведения об openssl, например:
OpenSSL 1.1.1g 21 Apr 2020 (Library: OpenSSL 1.0.2k-fips 26 Jan 2017)
built on: Sat May 11 01:54:53 2019 UTC
platform: linux-x86_64
options: bn(64,64) rc4(16x,int) des(int) idea(int) blowfish(ptr)
compiler: gcc -fPIC -pthread -m64 -Wa,—noexecstack -Wall -O3 -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -Wa,—noexecstack -Wa,—generate-missing-build-notes=yes -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DZLIB -DNDEBUG -DPURIFY -DDEVRANDOM=»\»/dev/urandom\»» -DSYSTEM_CIPHERS_FILE=»/etc/crypto-policies/back-ends/openssl.config»
OPENSSLDIR: «/etc/pki/tls»
ENGINESDIR: «/usr/lib64/engines-1.1»
Seeding source: os-specific
Обратите внимание, что у нас установлена новая версия OpenSSL, но по прежнему, используется старая библиотека — Library: OpenSSL 1.0.2k-fips 26 Jan 2017.
Необходимо добавить в ldconfig новый путь. Для это создаем файл:
* если у нас используется система 32-бит, то путь будет /usr/local/lib.
Источник
Как найти номер версии OpenSSL — Вокруг-Дом — 2021
Table of Contents:
OpenSSL предоставляет вам опцию безопасного шифрования для вашего сервера веб-хостинга в Интернете. OpenSSL позволяет вам добавить безопасность для вашего веб-сайта, что очень важно для веб-мастеров, которые управляют веб-сайтом, который требует частной информации от пользователей. Это полезная функция, когда требуется финансовая, медицинская или другая информация. Реализованную вами версию OpenSSL можно найти в утилите командной строки Windows.
OpenSSL обеспечивает безопасность пользователей вашего сайта.
Шаг 1
Нажмите кнопку «Пуск» и введите «cmd» в текстовое поле поиска. Нажмите «Enter», чтобы открыть командную строку Windows.
Шаг 2
Типа «openssl /?» просмотреть список параметров для утилиты командной строки. Это также показывает правильный синтаксис команды.
Шаг 3
Введите «openssl version» и нажмите «Enter». Версия OpenSSL отображается в утилите командной строки Windows.
Как отобразить серийный номер и номер IMEI на Motorola RAZR?
Отображение электронного серийного номера (ESN) и международного идентификатора мобильного оборудования (IMEI) на телефоне Motorola RAZR необходимо, если вы купили телефон и вам необходимо .
Как набрать номер, чтобы узнать номер последнего принятого звонка
Когда вы набираете номера для активации функций телефона, вы используете то, что называется вертикальными сервисными кодами (VSC). Эти коды являются универсальными среди телекоммуникационных компаний .
8 способов найти свой IP-адрес в Windows (все версии)
Как узнать свой IPv4 или IPv6-адрес в Windows 7, Windows 8.1 или Windows 10. Вы можете использовать командную строку, PowerShell, диспетчер задач и другие инструменты.
Cipherscan Test SSL,TLS Version Ciphers Of Target Kali Linux Tool | #CITechtutorials (Октябрь 2021).
Источник
OpenSSL
Материал из Xgu.ru
OpenSSL — универсальный криптографический инструмент, построенный вокруг протоколов SSL/TLS и сертификатов X.509.
Помимо того, что этот инструмент позволяет работать с соединениями SSL/TLS, сертификатами X.509, он может делать множество других полезных вещей: шифровать и расшифровывать файлы, создавать и проверять цифровые подписи, проверять числа на простоту, тестировать производительность компьютера и другое.
Содержание
Вопросы и ответы
Введение
Как определить какую версию OpenSSL я использую?
Использовать опцию version:
Расширенная информация с опцией -a:
Как получить список доступных команд?
Вызвать с неправильным ключом (например, help или -h).
Аналогично с подкомандами:
Как посмотреть список доступных шифров?
Использовать команду ciphers:
Измерение производительности
Как измерить производительность системы с помощью openssl?
Пример для 2.16GHz Intel Core 2.
Каждый тест можно вызывать отдельно:
Как измерить производительность сетевого соединения?
Помимо этого простейшего измерения у подкоманды s_time есть множество других возможностей:
Сэмулировать web-сервер с помощью openssl s_server:
Сертификаты
Как сгенерировать самоподписной сертификат?
Создать файл mycert.pem, в котором будет и секретный ключ и открытый сертификат, основанный на нём. Сертификат будет действителен в течение 365 дней; ключ (благодаря опции -nodes) будет нешифрованным.
После вызова команды надо будет ответить на несколько вопросов: Country Name, State, City и так далее. На вопрос “Common Name” нужно отвечать именем сервера, по которому будут обращаться люди.
Можно автоматизировать ввод ответов с помощью опции -subj.
Как сгенерировать запрос сертификата у VeriSign?
Секретный ключ в файле mykey.pem и запрос на сертификат myreq.pem:
Если ключ уже есть, и его надо использовать только для генерации сертификата, используется команда попроще:
Или, с информацией для сертификата прямо в командной строке:
Не допускайте ошибок в названиях! Каждый символ важен.
Файл с ключом нужно сохранить в надёжном месте.
Как проверить новый сертификат?
Подкоманда s_server предоставляет простой, но эффективный метод тестирования. В примерах ниже предполагается, что ключ и сертификат хранятся в файле mycert.pem.
Запустите тестовый сервер на машине, на которой будет использоваться сертификат. По умолчанию, открывается порт 4433; другой порт можно задать опцией -accept.
Если команда запустилась без ошибок, открывайте в браузере страницу: https://127.0.0.1:4433/
Как получить удалённый сертификат?
С помощью openssl и sed:
Можно вернуть данные openssl, например, для того чтобы выяснить, для каких дат он действителен:
Как извлечь какую-либо информацию из сертификата?
В SSL-сертификате есть много информации, в частности:
- кто выдал сертификат (issuer);
- насколько долго он действителен (valid dates);
- получатель сертификата (subject);
- разнообразная криптографическая информация.
Опция текст даёт весь объём информации:
Другие опции дают другую информацию:
Извлечение открытого ключа, который требуется для проверки цифровой подписи (дайджеста):
Как экспортировать или импортировать сертификат PKCS#12?
Файлы PKCS#12 используются в разных приложениях типа MS IIS. Они часто имеют расширение .pfx.
Превратить pfx в pem:
Проверка сертификата
Приложения, слинкованные с библиотеками OpenSSL, могут проверять подлинность сертификатов, выданных сервером сертификатов (certificate authority, CA).
Как проверить сертификат?
Использовать подкоманду verify:
Если в сертификате всё в норме, то будет выдано сообщение OK:
Если чего-то не хватает, появятся соответствующие сообщения об ошибках, например:
- error 10 at 0 depth lookup:certificate has expired. Время действия сертификата истекло.
- error 18 at 0 depth lookup:self signed certificate. Если не указать явным образом, openssl не будет проверять самоподписные сертификаты (self-signed certificate).
Какие центры сертификации распознаёт OpenSSL?
При сборке OpenSSL в нём настраивается местоположение OpenSSL-файлов (Directory for OpenSSL files). Этот параметр задаётся опцией —openssldir, передающейся конфигурационному скрипту. В этом каталоге, как правило, хранится информация о центрах сертификации, которым доверяет система.
По умолчанию, этот каталог находится в /usr/local/ssl, но большинство сборщиков размещает его в других местах, таких как /etc/pki/tls (Red Hat/Fedora), /etc/ssl (Gentoo), /usr/lib/ssl (Debian) или /System/Library/OpenSSL (Macintosh OS X).
Посмотреть, какой именно каталог используется в конкретной инсталляции, можно с помощью опции version(параметр OPENSSLDIR):
Внутри данного каталога есть подкаталог certs/, в котором находятся файлы трёх разных типов:
- Большой файл под названием cert.pem, объёмистый сборник многих сертификатов от признанных общеизвестных центров сертификации, таких как VeriSign и Thawte.
- Множество маленьких файлов с расширением .pem, каждый из которых содержит сертификат от отдельного центра сертификации;
- Символические ссылки в со странными именами вида 052eae11.0. Как правило, для каждого .pem-файла есть такая ссылка.
Первая часть странного имени ссылки — это, на самом деле, хэш, основанный на сертификате внутри .pem-файла, на который эта ссылка указывает. Расширение файла это итератор (то есть, номер), поскольку теоретически возможно, что разные сертификаты укажут на одинаковый хэш.
Например, ссылка f73e89fd.0 указывает на файл vsignss.pem. Значит, сертификат соответствует хэшу, который равен имени ссылки:
Когда приложение получает удалённый сертификат, оно сначала проверяет, есть ли этот сертификат в cert.pem и, если нет, смотрит в файле, соответствующем хэшу сертификата. Если такой файл найден, сертификат считается верным.
Нужно иметь в виду, что некоторые приложения, такие как Sendmail, например, позволяют во время исполнения указывать местоположение сертификатов, а некоторые, например Pine, нет.
Как мне заставить OpenSSL признавать сертификат?
Сертификат, которому нужно доверять, должен быть размещён в каталоге certs/. После этого необходимо создать хэшированную символическую ссылку на него. Вот небольшой скрипт, который делает это:
Клиенты и серверы для командной строки
Подкоманды s_client и s_server предоставляют возможность для запуска SSL-клиентов для командной строки.
Как подключиться к безопасному SMTP-серверу?
С помощью подкоманды s_client можно проверить или даже использовать SMTP-сервер с поддержкой SSL.
Безопасные SMTP-серверы могут предлагать безопасные соединения на портах: 25 (TLS), 465 (SSL) и 587 (TLS). Где-то в районе релиза 0.9.7 у openssl появилась возможность использовать STARTTLS в ходе общения с SMTP-серверами.
Чтобы использовать для обозначения конца строки именно CRLF, а не CR или LF, используется опция -crlf. Это важно особенно для Qmail.
Как подключиться к [какому-либо] безопасному серверу?
На момент написания openssl поддерживал TLS из командной строки только с SMTP, поэтому для других протоколов нужно использовать прямые SSL-соединения.
Как запустить SSL-сервер из командной строки?
Подкоманда s_server позволяет запустить сервер с поддержкой SSL прямо из командной строки; сервер предназначен только для проверки и отладки. Для полноценной работы рекомендуется использовать stunnel.
Подкоманда s_server работает намного лучше, если есть сертификат; когда его нет, её возможности сильно сокращаются.
Дайджесты
Создание дайджестов (криптографических контрольных сумм) с помощью подкоманды dgst — одна из наиболее распространённых задач, выполняемых с помощью openssl.
Как создавать дайджесты MD5 или SHA1?
Дайджесты создаются с помощью подкоманды dgst:
Дайджест MD5 эквивалентен дайджесту, создаваемому известной утилитой md5sum, хотя выводится в другом формате:
То же верно и для дайджестов SHA1 и программы sha1sum:
Как подписать дайджест?
Для того, чтобы быть уверенным, что дайджест никто не изменял, его можно подписать с помощью своего закрытого ключа.
Подписать дайджест SHA1 для файла foo-1.23.tar.gz:
Как проверить подписанный дайджест?
Для того чтобы проверить правильность дайджеста, нужен файл, на основе которого был получен дайджест, сам подписанный дайджест и открытый ключ того, кто подписывал дайджест:
Как создать запись типа digest для файла паролей Apache?
У web-сервера Apache есть специальный формат файла с паролями, использующийся для выполнения digest-аутентификации. В комплект с web-сервером входит утилита htdigest, но она умеет записывать данные только в файл, а не на стандартный поток вывода. При работе с удалёнными пользователями может быть целесообразным им сначала сгенерировать хэш, а потом переправить его по почте или другому каналу информации для включения в базу.
Формат базы паролей прост: список нескольких полей, разделённых двоеточиями. Поля:
- имя пользователя (username);
- область авторизации (authorization realm; AuthRealm);
- MD5-суммы для этих полей и пароля.
Скрипт, представленный ниже, повторяет действие htdigest с той разницей, что выводит данные на стандартный поток вывода. Кроме того, он умеет считывать данные со стандартного потока ввода.
Какие ещё есть дайджесты?
Подкоманда list-message-digest-commands даёт список типов дайджестов, доступных в данной инсталляции.
Шифрование/расшифровка
Как закодировать что-то по методу base64?
Использовать опцию -base64.
Закодировать одну строку:
Без перевода строки (важно для паролей):
Опция -d выполняет обратный процесс (то есть, раскодирование):
Как зашифровать файл?
Простое шифрование файлов, вероятно, лучше делать инструментами типа GPG. Тем не менее, иногда может возникнуть необходимость зашифровать файл без развёртывания инфраструктуры ключей и сертификатов, а пользуясь одним только паролем. Второе, что нужно будет запомнить — это шифр, с помощью которого выполнялось шифрование.
Список поддерживаемых шифров есть на странице enc(1). Более просто (и более точно) узнать этот список у самой программы openssl.
Кроме выбора шифра нужно также решить, будут ли данные закодированы в base64. Если будут, то их можно будет, грубо говоря, вставить в почтовое сообщение, прямо в текст. В противном случае это будет простой бинарный файл.
Расшифровка файла на стороне получателя:
Можно не вводить парольную фразу постоянно при шифровании и расшифровке, а передавать её автоматически (подробнее: openssl(1); раздел «PASS PHRASE ARGUMENTS»). Формат аргумента прост:
Ошибки
Как интерпретировать сообщения об ошибках SSL?
В системных журналах обнаружились строки, которые, похоже, имеют отношение к OpenSSL или crypto:
В первом приближении определить, что не так, можно с помощью подкоманды errstr, которая умеет интерпретировать код ошибки. Код ошибки находится между «error:» и «:lib». В данном случае это 0407006A.
Дальше информацию надо искать в документации. В данном случае в man-странице RSA_padding_add_PKCS1_type_1(3) будет написано, что PKCS #1 использует для подписей блочные методы.
Ключи
Как сгенерировать ключ RSA?
Использовать подкоманду genrsa:
Как сгенерировать открытый ключ RSA?
С помощью подкоманды rsa можно создать открытую версию для закрытого ключа RSA:
Как сгенерировать ключ DSA?
Для построения ключей DSA нужен специальный файл параметров (parameter file), кроме того, операции с DSA медленнее чем аналогичные операции с RSA, в связи с этим, DSA используется не так часто, как RSA.
Если нужно сгенерировать только один ключ DSA, то это можно сделать одной командой, с помощью подкоманды dsaparam:
Если же нужно создавать несколько ключей DSA, перед тем как их генерировать, можно сделать общий файл параметров. Файл параметров генерируется сравнительно медленно, а файлы ключей очень быстро.
Как создать ключ, основанный на эллиптических кривых (elliptic curve key)?
Процедуры для работы с эллиптическими кривыми были добавлены в openssl, начиная с версии 0.9.8. Работа с этими процедурами выполняется через подкоманду ecparam.
Как создать открытый EC ключ?
С помощью подкоманды ec можно создать открытую версию для закрытого ключа EC (elliptic curve):
Как удалить парольную фразу у ключа?
Каждый раз, когда запускается демон, использующий ключ, надо будет набирать парольную фразу. Её можно убрать.
Допустим, ключ, зашифрованный парольной фразой, находится в файле key.pem; после выполнения команды расшифрованный ключ будет в newkey.pem:
Если закрытый ключ (private key) и открытый сертификат хранятся в одном файле, нужно будет выполнить две команды:
Хэши для паролей
С помощью подкоманды passwd можно генерировать хэши паролей, которые совместимы со стандартными хэшами из /etc/passwd, /etc/shadow или файла паролей Apache.
Как сгенерировать хэш в стиле crypt?
Сгенерировать хэш очень просто:
Если salt для пароля известен, можно воссоздать хэш.
Как сгенерировать хэш пароля в стиле shadow?
В новых UNIX/Linux-системах вместо старого crypt-хэша используется новый, более стойкий хэш MD5. Его генерирование выполняется с помощью ключа -1:
В этом формате salt состоит из 8 символов; он находится между вторым и третьим знаком $, в данном случае это sXiKzkus.
Простые числа
Поскольку openssl активно использует механизмы для работы с простыми числами, не удивительно, что в нём есть соответствующие процедуры. Начиная с версии 0.9.7e (или где-то так), в openssl появилась подкоманда binary.
Как проверить, является ли число простым?
Передать число как аргумент к подкоманде prime. Результат будет не в десятичном, а в шестнадцатеричном виде.
Можно проверять и шестнадцатеричные числа:
Как сгенерировать набор простых чисел?
Сгенерировать множество чисел и оставить только простые среди них. Для генерирования последовательностей удобно использовать seq.
Случайные данные
Как генерировать случайные данные?
Используйте подкоманду rand.
На UNIX/Linux-системах, в которых есть файл /dev/urandom, похожего эффекта можно добиться иначе, и иногда с лучшим результатом даже:
Между устройствами random и urandom есть разница. Дополнительная информация в random(4) для Linux и BSD или random(7D) для Solaris.
S/MIME
S/MIME — стандарт для получения и отправки безопасных MIME-данных, в особенности, почтовых сообщений. Большинство почтовых клиентов умеет работать с такими сообщениями сами, но для этого же можно использовать и openssl smime.
Много хороших примеров есть в smime(1).
Как проверить подписанное сообщение S/MIME?
Проверить, сохранённое в файле msg.txt подписанное сообщение:
Если сертификат отправителя подписан сервером сертификатов, которому доверяет инсталляция OpenSSL, будут показаны заголовки сообщения, копия сообщения и заключительная строка «Verification successful».
Если сообщение было изменено, в выводе будет содержаться сообщение о том, что подпись или дайджест (контрольная сумма) не соответствуют действительности:
Если сертификат не опознан, возникнет похожая ошибка:
Большинство почтовых клиентов отправляют копию открытого сертификата прикреплёнными к сообщению. Данные сертификата можно посмотреть из командной строки. Используется хитрая комбинация подкоманд smime -pk7out и pkcs7. Немного странно на первый взгляд, но работает!
Если нужно вытащить сертификат автора письма, для того, чтобы использовать его в дальнейшем, то нужна только первая часть команды:
Дальше этот сертификат можно или интегрировать в инфраструктуру OpenSSL, или сохранить его для будущего использования, например, такого:
Как зашифровать сообщение S/MIME?
Допустим, кто-то прислал вам свой сертификат, которым попросил шифровать сообщения ему. Сертификат сохранён в her-cert.pem. Ответ сохранен в файле my-message.txt.
Для того чтобы получить шифрование по умолчанию RC2-40 (оно, правда, слабое), нужно только сказать ‘openssl, где находится сертификат:
Если есть уверенность, что на удалённой стороне есть современная поддержка SSL, можно использовать алгоритм шифрования посильнее чем DES:
По умолчанию, зашифрованные сообщения, включая почтовые заголовки, отправляются на стандартный поток вывода. С помощью опции -out их можно отправить в файл. Если постараться, то передать сообщение можно и сразу программе sendmail.
Как подписать сообщение S/MIME?
Подписать (но не шифровать) сообщение своим собственным сертификатом, так чтобы получатель имел возможность убедиться, кто является истинным автором.
Источник