Как самостоятельно сформировать CA Bundle
CA Bundle (Certificate Authority Bundle) — это файл, содержащий цепочку промежуточных и корневых сертификатов, которые обеспечивают доверие к конечному сертификату, установленному на сервере.
CA Bundle (Certificate Authority Bundle) — это файл, содержащий цепочку промежуточных и корневых сертификатов, которые обеспечивают доверие к конечному сертификату, установленному на сервере.
PEM (Privacy-Enhanced Mail) — это наиболее распространенный формат для хранения и передачи сертификатов, ключей и других криптографических данных.
Ранее я уже описывал как добавить поддержку шифрования по ГОСТ Р 34.10-2012 в OpenSSL на Debian 9, недавно возвращался к этому вопросу но уже на системе Debian 11, поэтому решил актуализировать под Debian 11.
# Все ниже действия будут производится от root.
Устанавливаем необходимые пакеты:
apt-get install g++ gcc make git libssl-dev
Поддержу GOST-Engine будем реализовывать для OpenSSL 1.1.1p.
Выполняем сборку OpenSSL 1.1.1p
, выполняем команды (скачиваем, распаковываем, собираем билд, устанавливаем, настраиваем):
wget https://www.openssl.org/source/openssl-1.1.1p.tar.gz tar -zxvf openssl-1.1.1p.tar.gz cd openssl-1.1.1p ./config --prefix=/usr/ssl --openssldir=/usr/ssl make all make install cd .. && rm /usr/bin/openssl ln -s /usr/ssl/bin/openssl /usr/bin/openssl echo "/usr/ssl/lib" >> /etc/ld.so.conf.d/ssl.conf ldconfig
Проверяем версию OpenSSL, должно быть так:
openssl version -v OpenSSL 1.1.1p 21 Jun 2022
# Для сборки GOST Engine
нужна версия CMake
3.0 и выше.
PKI (Public Key Infrastructure) — это система, которая использует цифровые сертификаты для проверки подлинности и шифрования данных между устройствами и службами.
Иногда приходится работать с SSL-сертификатами и каждый раз приходится вспоминать, либо искать информацию как сделать то или иное действие с сертификатами при помощи OpenSSL.
Файл .pfx, который находится в формате PKCS#12, содержит сертификат SSL (открытые ключи) и соответствующие закрытые ключи. Иногда необходимо извлечь сертификат и закрытый ключ в незашифрованный текстовый формат, чтобы использовать их в другой системе.
Опишу для памятки как реализовать поддержку шифрования по ГОСТ Р 34.10-2012 (GOST2012) в OpenSSL 1.1.1 на Debian 10 Buster.
Реализация криптоалгоритмов российского ГОСТа для OpenSSL — https://github.com/gost-engine/engine
Устанавливаем необходимые зависимости для сборки пакетов:
apt-get install g++ gcc make
Скачиваем исходники, распаковываем их:
wget https://www.openssl.org/source/openssl-1.1.1p.tar.gz tar -zxvf openssl-1.1.1p.tar.gz cd openssl-1.1.1p
Собираем пакет и устанавливаем его:
./config --prefix=/usr/ssl --openssldir=/usr/ssl make all make install cd ..
Вносим изменения чтобы по умолчанию использовалась установленная версия:
rm /usr/bin/openssl ln -s /usr/ssl/bin/openssl /usr/bin/openssl echo "/usr/ssl/lib" >> /etc/ld.so.conf.d/ssl.conf ldconfig
Для проверки, выведем установленную версию:
openssl version -v OpenSSL 1.1.1p 21 Jun 2022
Для корректной сборки gost-engine, установим последнюю (на момент написания статьи) версию cmake.
Устанавливаем необходимые зависимости:
apt-get install git libssl-dev
Скачиваем исходники, распаковываем их:
wget https://github.com/Kitware/CMake/releases/download/v3.23.2/cmake-3.23.2.tar.gz tar -zxvf cmake-3.23.2.tar.gz cd cmake-3.23.2
Собираем пакет и устанавливаем его:
./bootstrap --prefix=/usr make make install cd ..
Для проверки, выведем установленную версию:
cmake --version cmake version 3.23.2
Опишу как установить коммерческий (commercial) SSL-сертификат на почтовый сервер Zimbra Collaboration 8.8.15 GA Release.
В случае если у вас имеется только PFX файл сертификата, то при помощи OpenSSL можно легко извлечь закрытый ключ сертификата, сам сертификат и цепочку сертификатов CA:
openssl pkcs12 -in <filename.pfx> -nocerts -nodes | sed -ne '/-BEGIN PRIVATE KEY-/,/-END PRIVATE KEY-/p' > <clientcert.key> openssl pkcs12 -in <filename.pfx> -clcerts -nokeys | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > <clientcert.cer> openssl pkcs12 -in <filename.pfx> -cacerts -nokeys -chain | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > <cacerts.cer>
Копируем файлы сертификатов в каталог /opt/zimbra/ssl/zimbra/commercial/ и назначаем права доступа для них.
chown zimbra:zimbra -R /opt/zimbra/ssl/zimbra/commercial/* chmod 640 -R /opt/zimbra/ssl/zimbra/commercial/*
[stextbox id=’warning’]ВНИМАНИЕ! прошу обратить внимание что путь установки Zimbra может отличаться от моего, поэтому учитывайте это при копировании сертификатов.[/stextbox]
Выполняем верификацию сертификатов:
sudo su - zimbra -c "zmcertmgr verifycrt comm /opt/zimbra/ssl/zimbra/commercial/clientcert.key /opt/zimbra/ssl/zimbra/commercial/clientcert.cer /opt/zimbra/ssl/zimbra/commercial/cacerts.cer"
прим. Успешная верификация сертификата выглядит вот так:
** Verifying '/opt/zimbra/ssl/zimbra/commercial/clientcert.cer' against '/opt/zimbra/ssl/zimbra/commercial/clientcert.key' Certificate '/opt/zimbra/ssl/zimbra/commercial/clientcert.cer' and private key '/opt/zimbra/ssl/zimbra/commercial/clientcert.key' match. ** Verifying '/opt/zimbra/ssl/zimbra/commercial/clientcert.cer' against '/opt/zimbra/ssl/zimbra/commercial/cacerts.cer' Valid certificate chain: /opt/zimbra/ssl/zimbra/commercial/clientcert.cer: OK
Squid — это программный пакет, реализующий функцию кэширующего прокси-сервера для протоколов HTTP, FTP, Gopher и (в случае соответствующих настроек) HTTPS.
При использовании Linux и необходимости подключения к сервису Exchange Online через PowerShell, то это можно легко сделать, рассмотрим ниже как это сделать.
В работе имеется веб-сайт на котором реализована авторизация посредством ЕСИА (Единая система идентификации и аутентификации). До недавнего времени можно было использовать самоподписной RSA сертификат, но с 1 апреля 2020 года, для взаимодействия с ЕСИА необходимо использовать сертификат с алгоритмом шифрования по ГОСТ Р 34.10-2012
.
В связи с этим мне необходимо было реализовать возможность работы с алгоритмом ГОСТ Р 34.11-2012
в OpenSSL на Debian 9 Stretch.
Путем перелопачивания множества информации по этому вопросу и проб использования движка GOST-Engine с различными версиями OpenSSL, для себя определил рабочую связку OpenSSL 1.1.1d + GOST-Engine
.
В качестве памятки опишу действия для реализации связки OpenSSL 1.1.1d + GOST-Engine на Debian 9 Stretch.
Устанавливаем необходимые пакеты:
apt-get install build-essential wget git cmake unzip gcc -y
Выполняем сборку OpenSSL 1.1.1d
, выполняем команды:
cd /opt wget "https://github.com/openssl/openssl/archive/OpenSSL_1_1_1d.zip" -O "OpenSSL_1_1_1d.zip" unzip OpenSSL_1_1_1d.zip && cd openssl-OpenSSL_1_1_1d ./config shared -d --prefix=/usr/ssl --openssldir=/usr/ssl make all && make install rm /usr/bin/openssl ln -s /usr/ssl/bin/openssl /usr/bin/openssl echo "/usr/ssl/lib" >> /etc/ld.so.conf.d/ssl.conf && ldconfig
Рассмотрим как реализовать перехват пользовательских HTTPS-запросов в сеть интернет для дальнейшего анализа и учета их. Все ниже описанные действия производятся на Debian 9 Stretch с установленным прокси-сервером Squid 4.9.
Частенько сталкиваюсь с необходимостью конвертирования сертификата .crt, .ca-bundle в формат PFX. И каждый раз пытаюсь вспомнить как это сделать в Linux посредством OPENSSL.
При работе с почтовым сервером Zimbra Collaboration, возникает проблема с самоподписанным сертификатом, почтовые клиенты и браузеры каждый раз выдают сообщение об ошибке проверки сертификата и угрозе безопасности. Это создает неудобство в работе, т.к. каждый раз пользователям приходится игнорировать непроверенный сертификат. Разберем как исправить эту ситуацию.
Вот такое предупреждение безопасности мы наблюдаем при попытке подключится к серверу с самоподписанным сертификатом.