- OpenSSL
- Contents
- Installation
- Configuration
- req section
- Usage
- Generate a Curve25519 private key
- Generate an ECDSA private key
- Generate an RSA private key
- Generate a certificate signing request
- Generate a self-signed certificate
- Generate a self-signed certificate with private key in a single command
- Generate Diffie–Hellman parameters
- Troubleshooting
- «bad decrypt» while decrypting
- Open SSL
- Cryptography and SSL/TLS Toolkit
- openssl
- SYNOPSIS
- DESCRIPTION
- COMMAND SUMMARY
- STANDARD COMMANDS
- Примеры использования OpenSSL в Unix/Linux
- Примеры использования OpenSSL в Unix/Linux
- Создание нового приватного ключа (Private Key) и Certificate Signing Request (CSR).
- Создание самоподписанного сертификата (Self-Signed Certificate).
- Проверка CSR файла.
- Создать приватный RSA ключ (Private Key).
- Удалить ключевую фразу (Passphrase) с ключа.
- Проверка сертификата (Certificate).
- Проверка подписанного сертификата (Certificate Signer Authority).
- Создать тестовый SSL сервер.
- Проверить хеш вашего сертификата.
- Конвертирование сертификатов с DER в PEM формат.
- Конвертирование сертификатов с PEM в DER формат.
- Конвертирование CSR c DER в PEM формат.
- Конвертирование сертификата и приватного ключа в PKCS#12 фотмат.
- Создание CSR используя приватный ключ (private key).
- Проверьте содержимое сертификата в PKCS12 формате.
- Конвертирование PKCS12 формата в PEM сертификат.
- Получить SHA-1 отпечаток сертификата или CSR
- Получить MD5 отпечаток сертификата или CSR
- Тестирование SSL сертификата по URL.
- Поверка PEM сертификата на завершение (Expiration Date).
- Проверка завершения SSL сертификата (Expiration Date) по URL.
- Проверить поддержку SSL версии V2/V3 по URL.
- Проверка поддержки cipher для сайта по URL.
- Какой алгоритм используется в сертификате (проверка).
- Получить сертификат по URL
- Как установить OpenSSL в Ubuntu 20.04 LTS
- Как установить OpenSSL в Ubuntu 20.04 LTS
- Установите OpenSSL на Ubuntu 20.04 LTS Focal Fossa
- Шаг 1. Во-первых, убедитесь, что все ваши системные пакеты обновлены, выполнив следующие apt команды в терминале.
- Шаг 2. Установка OpenSSL на Ubuntu 20.04.
- Шаг 3. Настройка двоичного файла OpenSSL.
OpenSSL
OpenSSL is an open-source implementation of the SSL and TLS protocols, designed to be as flexible as possible. It is supported on a variety of platforms, including BSD, Linux, OpenVMS, Solaris and Windows.
Contents
Installation
openssl is installed by default on Arch Linux (as a dependency of coreutils ).
There are various OpenSSL library bindings available for developers:
Configuration
On Arch Linux the OPENSSLDIR is /etc/ssl .
The OpenSSL configuration file, conventionally placed in /etc/ssl/openssl.cnf , may appear complicated at first. Remember that variables may be expanded in assignments, much like how shell scripts work. For a thorough explanation of the configuration file format, see config(5ssl) .
req section
This article or section is a candidate for merging with #Generate a certificate signing request.
Settings related to generating keys, requests and self-signed certificates.
The req section is responsible for the DN prompts. A general misconception is the Common Name (CN) prompt, which suggests that it should have the user’s proper name as a value. End-user certificates need to have the machine hostname as CN, whereas CA should not have a valid TLD, so that there is no chance that, between the possible combinations of certified end-users’ CN and the CA certificate’s, there is a match that could be misinterpreted by some software as meaning that the end-user certificate is self-signed. Some CA certificates do not even have a CN, such as Equifax:
Usage
Generate a Curve25519 private key
Generate an ECDSA private key
Generate an RSA private key
With genpkey(1ssl) , which supersedes genrsa according to openssl(1ssl) :
If an encrypted key is desired, use the -aes-256-cbc option.
Generate a certificate signing request
Generate a self-signed certificate
Generate a self-signed certificate with private key in a single command
You can combine the above command in OpenSSL into a single command which might be convenient in some cases:
Generate Diffie–Hellman parameters
Current best practice is to use one of the standard DH groups from RFC 7919, eg. ffdhe2048.
Alternatively you can generate a random group of your own:
Troubleshooting
«bad decrypt» while decrypting
OpenSSL 1.1.0 changed the default digest algorithm for the dgst and enc commands from MD5 to SHA256. [2]
Therefore if a file has been encrypted using OpenSSL 1.0.2 or older, trying to decrypt it with an up to date version may result in an error like:
Supplying the -md md5 option should solve the issue:
Источник
Open SSL
Cryptography and SSL/TLS Toolkit
openssl
openssl — OpenSSL command line tool
SYNOPSIS
openssl command [ command_opts ] [ command_args ]
openssl [ list-standard-commands | list-message-digest-commands | list-cipher-commands | list-cipher-algorithms | list-message-digest-algorithms | list-public-key-algorithms]
DESCRIPTION
OpenSSL is a cryptography toolkit implementing the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) network protocols and related cryptography standards required by them.
The openssl program is a command line tool for using the various cryptography functions of OpenSSL’s crypto library from the shell. It can be used for
COMMAND SUMMARY
The openssl program provides a rich variety of commands (command in the SYNOPSIS above), each of which often has a wealth of options and arguments (command_opts and command_args in the SYNOPSIS).
The pseudo-commands list-standard-commands, list-message-digest-commands, and list-cipher-commands output a list (one entry per line) of the names of all standard commands, message digest commands, or cipher commands, respectively, that are available in the present openssl utility.
The pseudo-commands list-cipher-algorithms and list-message-digest-algorithms list all cipher and message digest names, one entry per line. Aliases are listed as:
The pseudo-command list-public-key-algorithms lists all supported public key algorithms.
The pseudo-command no-XXX tests whether a command of the specified name is available. If no command named XXX exists, it returns 0 (success) and prints no-XXX; otherwise it returns 1 and prints XXX. In both cases, the output goes to stdout and nothing is printed to stderr. Additional command line arguments are always ignored. Since for each cipher there is a command of the same name, this provides an easy way for shell scripts to test for the availability of ciphers in the openssl program. (no-XXX is not able to detect pseudo-commands such as quit, list-. -commands, or no-XXX itself.)
STANDARD COMMANDS
Parse an ASN.1 sequence.
Certificate Authority (CA) Management.
Cipher Suite Description Determination.
CMS (Cryptographic Message Syntax) utility
Certificate Revocation List (CRL) Management.
CRL to PKCS#7 Conversion.
Message Digest Calculation.
Diffie-Hellman Parameter Management. Obsoleted by dhparam.
Generation and Management of Diffie-Hellman Parameters. Superseded by genpkey and pkeyparam
DSA Data Management.
DSA Parameter Generation and Management. Superseded by genpkey and pkeyparam
EC (Elliptic curve) key processing
EC parameter manipulation and generation
Encoding with Ciphers.
Engine (loadble module) information and manipulation.
Error Number to Error String Conversion.
Generation of Diffie-Hellman Parameters. Obsoleted by dhparam.
Generation of DSA Private Key from Parameters. Superseded by genpkey and pkey
Generation of Private Key or Parameters.
Generation of RSA Private Key. Superceded by genpkey.
Create or examine a netscape certificate sequence
Online Certificate Status Protocol utility.
Generation of hashed passwords.
PKCS#12 Data Management.
PKCS#7 Data Management.
Public and private key management.
Public key algorithm parameter management.
Public key algorithm cryptographic operation utility.
Generate pseudo-random bytes.
PKCS#10 X.509 Certificate Signing Request (CSR) Management.
RSA key management.
RSA utility for signing, verification, encryption, and decryption. Superseded by pkeyutl
This implements a generic SSL/TLS client which can establish a transparent connection to a remote server speaking SSL/TLS. It’s intended for testing purposes only and provides only rudimentary interface functionality but internally uses mostly all functionality of the OpenSSL ssl library.
This implements a generic SSL/TLS server which accepts connections from remote clients speaking SSL/TLS. It’s intended for testing purposes only and provides only rudimentary interface functionality but internally uses mostly all functionality of the OpenSSL ssl library. It provides both an own command line oriented protocol for testing SSL functions and a simple HTTP response facility to emulate an SSL/TLS-aware webserver.
SSL Connection Timer.
SSL Session Data Management.
S/MIME mail processing.
Algorithm Speed Measurement.
SPKAC printing and generating utility
Time Stamping Authority tool (client/server)
Источник
Примеры использования OpenSSL в Unix/Linux
Примеры использования OpenSSL в Unix/Linux
При работе с SSL, нужно уметь работать с утилитой OpenSSL чтобы создавать, конвертировать, управляют SSL-сертификатами. В этой статье «Примеры использования OpenSSL в Unix/Linux» я буду говорить о примерах использования OpenSSL.
Некоторые из сокращений, связанных с сертификатами:
- SSL – Secure Socket Layer (Безопасный уровень сокета).
- CSR – Certificate Signing Request (Запрос на подпись сертификата).
- TLS – Transport Layer Security (Транспортный уровень безопастности).
- PEM – Privacy Enhanced Mail
- DER – Distinguished Encoding Rules
- SHA – Secure Hash Algorithm (Безопасный hash алгорит).
- PKCS – Public-Key Cryptography Standards (Стандарты шифрования публичных ключей).
Создание нового приватного ключа (Private Key) и Certificate Signing Request (CSR).
Команда выше будет генерировать CSR и 2048-битный RSA ключ. Если вы собираетесь использовать этот сертификат в Apache или Nginx, то вам необходимо отправить этот CSR файл в службу сертификации и они дадут вам подписанный сертификат в «der» или «pem» формате. После чего вы настроите его на веб-сервере Apache или Nginx.
Так же, можно использовать такой вариант:
Создание самоподписанного сертификата (Self-Signed Certificate).
Команда выше будет генерировать самоподписанный сертификат (self-signed) и 2048-битный RSA ключ. Я также использую алгорит шифрования — SHA256. Так как он считается наиболее безопасным в данный момент.
Замечание: По умолчанию, будет сгенерирован ключ толкьо на 1 месяц, если нужно создать на более длительное время — используйте опцию «–days», пример использования ниже.
Пример: Чтобы создать self-signed сертификат на 2 год, используйте:
Проверка CSR файла.
и вы получите информацию.
Проверка подписи (signature):
Кем(кому) был выдан сертификат:
Показать открытый ключ (public key):
Создать приватный RSA ключ (Private Key).
Чтобы это сделать, выполните:
Если вам просто нужно генерировать RSA закрытый ключ, вы можете использовать команду что выше. Я включил 2048 шифрование, для безопастности.
Удалить ключевую фразу (Passphrase) с ключа.
Если вы установили ключевую фразу для ключа, то при каждом старте веб-сервера (Apache/Nginx) вы должны будите вводить пароль. Если это вас злит, вы можете с легкостью удалить passphrase с RSA ключа.
Проверка приватного ключа (Private Key)
Если вы сомневаетесь в ключевом файле, вы можете использовать команду что выше для проверки.
Проверка сертификата (Certificate).
Если вы хотите проверить данные сертификата( CN, OU, и т.д.), то вы можете использовать команду, которая даст вам сведения о сертификате:
Команда довольна простая в использовании.
Проверка подписанного сертификата (Certificate Signer Authority).
Можно узнать много полезного.
Создать тестовый SSL сервер.
Команда OpenSSL s_server реализует общий SSL/TLS-сервер. Она должна использоваться только для целей тестирования. В приведенном ниже примере данный сервер прослушивает соединения на порту 8080 и возвращает отформатированную HTML страницу статуса, который включает много информации о ciphers:
Проверить хеш вашего сертификата.
Конвертирование сертификатов с DER в PEM формат.
Как правило, при покупке SSL сертификатов, его отдают вам в формате .der и если вам нужно использовать его в веб-сервере или .pem формате, вы можете использовать команду выше, чтобы преобразовать такие сертификаты.
Конвертирование сертификатов с PEM в DER формат.
В случае, если вам необходимо изменить .pem формат в .der:
Конвертирование CSR c DER в PEM формат.
Конвертирование сертификата и приватного ключа в PKCS#12 фотмат.
Если вам необходимо использовать сертификат с приложением Java или с любым другим, кто принимает формат PKCS# 12.
Совет: Вы можете включить «chain certificate» используя «-chain» опцию:
Создание CSR используя приватный ключ (private key).
Если вы не хотите создать новый секретный ключ, а хотите используя вместо существующего, вы можете с предыдущей командой.
Проверьте содержимое сертификата в PKCS12 формате.
PKCS12 — это двоичный формат, так что вы не сможете просматривать содержимое в блокноте или другом редакторе. Таким образом, вы должны использовать команду что выше, для просмотра содержимого файла формата PKCS12.
Конвертирование PKCS12 формата в PEM сертификат.
Получить SHA-1 отпечаток сертификата или CSR
Чтобы получить отпечаток SHA1 сертификата с использованием OpenSSL, используйте команду, приведенную ниже:
Чтобы получить SHA1 отпечаток пальца CSR с использованием OpenSSL, используйте команду, приведенную ниже:
Получить MD5 отпечаток сертификата или CSR
Чтобы получить отпечаток MD5 сертификата с использованием OpenSSL, используйте команду, приведенную ниже:
Чтобы получить MD5 отпечаток пальца CSR с использованием OpenSSL, используйте команду, приведенную ниже:
Тестирование SSL сертификата по URL.
Я использую это довольно часто для проверки SSL-сертификатов по URL с сервера. Это очень удобно для проверки некоторых деталей протокола, шифров и CERT.
Узнать версию OpenSSL
Поверка PEM сертификата на завершение (Expiration Date).
Проверка завершения SSL сертификата (Expiration Date) по URL.
Проверить поддержку SSL версии V2/V3 по URL.
Проверка SSL версии V2:
Проверка SSL версии V3:
Проверка TLS 1.0:
Проверка TLS 1.1:
Проверка TLS 1.2:
Проверка поддержки cipher для сайта по URL.
Какой алгоритм используется в сертификате (проверка).
Или, используя URL:
Получить сертификат по URL
Команда что ниже, сохранит сертификат в файл прямо по URL сайта:
Если веб-сервер имеет несколько сертификатов на один IP-адрес, то вам нужно будет сообщить OpenSSL, какой сертификат будет использоваться, пример ниже:
Вот и все, много полезностей и все в одной статье «Примеры использования OpenSSL в Unix/Linux».
Источник
Как установить OpenSSL в Ubuntu 20.04 LTS
Как установить OpenSSL в Ubuntu 20.04 LTS
В этом руководстве мы покажем вам, как установить OpenSSL в Ubuntu 20.04 LTS. Для тех из вас, кто не знал, OpenSSL — это набор инструментов с открытым исходным кодом для протоколов Transport Layer Security (TLS) и Secure Sockets Layer (SSL), а также библиотека криптографии. OpenSSL используется многими программами, такими как веб-сервер Apache, PHP и многими другими, обеспечивая поддержку различных криптографических алгоритмов.
В этой статье предполагается, что у вас есть хотя бы базовые знания Linux, вы знаете, как использовать оболочку, и, что наиболее важно, вы размещаете свой сайт на собственном VPS. Установка довольно проста и предполагает, что вы работаете с учетной записью root, в противном случае вам может потребоваться добавить ‘ sudo ‘ к командам для получения привилегий root. Я покажу вам пошаговую установку OpenSSL на Ubuntu 20.04 (Focal Fossa). Вы можете следовать тем же инструкциям для Ubuntu 18.04, 16.04 и любого другого дистрибутива на основе Debian, например Linux Mint.
Установите OpenSSL на Ubuntu 20.04 LTS Focal Fossa
Шаг 1. Во-первых, убедитесь, что все ваши системные пакеты обновлены, выполнив следующие apt команды в терминале.
Шаг 2. Установка OpenSSL на Ubuntu 20.04.
Теперь скачиваем исходный код OpenSSL с официальной страницы:
Затем мы настраиваем и компилируем OpenSSL:
После установки OpenSSL целесообразно связать разделяемые библиотеки для него, чтобы они загружались во время выполнения:
Вставьте каталог пути к библиотеке OpenSSL:
Затем перезагрузите динамическую ссылку, введя следующую команду:
Шаг 3. Настройка двоичного файла OpenSSL.
Теперь отредактируйте файл с помощью редактора nano: /etc/ environment
Добавьте следующую строку:
Сохрани и закрой. Затем перезагрузите файл среды, чтобы ввести новую переменную PATH:
Чтобы проверить установку и версию OpenSSL, вы можете выполнить следующую команду:
Ваш результат должен быть следующим:
Поздравляю! Вы успешно установили OpenSSL . Благодарим за использование этого руководства по установке OpenSSL в системе Ubuntu 20.04 LTS Focal Fossa. Для получения дополнительной помощи или полезной информации мы рекомендуем вам посетить официальный сайт OpenSSL .
Источник