Как установить Ssl сертификат на чистую ubuntu 18 минимальными усилиями? — Хабр Q&A

Как установить Ssl сертификат на чистую ubuntu 18 минимальными усилиями? — Хабр Q&A Сертификаты

2: подготовка инфраструктуры открытых ключей

Теперь пора создать инфраструктуру открытых ключей (PKI) на сервере ЦС. Убедитесь, что вы работаете как пользователь sudo, и создайте каталог easy-rsa. Использовать sudo для запуска следующих команд не нужно, поскольку ваш обычный пользователь должен управлять и взаимодействовать с ЦС без повышенных привилегий.

mkdir ~/easy-rsa

Эта команда создаст в домашнем каталоге новый каталог по имени easy-rsa. Мы будем использовать его для создания символических ссылок (симлинков), указывающих на файлы пакета easy-rsa, которые мы установили на предыдущем этапе. Эти файлы находятся в папке /usr/share/easy-rsa.

Создайте симлинки с помощью команды ln:

ln -s /usr/share/easy-rsa/* ~/easy-rsa/

Примечание: В других мануалах вы можете прочесть, что вам нужно скопировать файлы easy-rsa в каталог PKI. Но в данном мануале используется метод символических ссылок. Это удобно, потому что в результате любые обновления пакета easy-rsa будут автоматически отражаться в скриптах вашей PKI.

Чтобы ограничить доступ к новому каталогу PKI, убедитесь, что он заблокирован для всех, кроме владельца:

chmod 700 /home/8host/easy-rsa

Теперь инициализируйте PKI в каталоге easy-rsa:

cd ~/easy-rsa./easyrsa init-pkiinit-pki complete; you may now create a CA or requests.Your newly created PKI dir is: /home/8host/easy-rsa/pki

Теперь у вас есть каталог, содержащий все файлы, необходимые для создания центра сертификации. Далее мы создадим закрытый ключ и открытый сертификат для ЦС.

4: распространение открытого сертификата цс

Теперь ваш ЦС настроен и готов выступать корнем доверия для любых систем, которые вы хотите настроить для его поддержки. Вы можете добавить сертификат ЦС на свои серверы OpenVPN, веб-серверы, почтовые серверы и т. д. Любой пользователь или сервер, которому необходимо проверить подлинность другого пользователя или сервера в вашей сети, должен иметь копию файла ca.crt, импортированного в хранилище сертификатов своей операционной системы.

Чтобы импортировать открытый сертификат ЦС во вторую систему Linux (например, на другой сервер или локальный компьютер), сначала получите копию файла ca.crt с вашего сервера ЦС. Вы можете использовать команду cat, чтобы вывести файл в терминал, а затем скопировать и вставить его в файл на втором компьютере (на который нужно импортировать сертификат).

Выполните следующую команду на сервере ЦС:

cat ~/easy-rsa/pki/ca.crt

В терминале появится такой вывод:

—–BEGIN CERTIFICATE—–MIIDSzCCAjOgAwIBAgIUcR9Crsv3FBEujrPZnZnU4nSb5TMwDQYJKoZIhvcNAQELBQAwFjEUMBIGA1UEAwwLRWFzeS1SU0EgQ0EwHhcNMjAwMzE4MDMxNjI2WhcNMzAw. . .. . .—–END CERTIFICATE—–

Скопируйте все, включая строки —–BEGIN CERTIFICATE—– и —–END CERTIFICATE—–.

На второй машине откройте файл /tmp/ca.crt:

nano /tmp/ca.crt

Вставьте код, который вы только что скопировали с сервера ЦС, в редактор. Когда вы закончите, сохраните и закройте файл.

Теперь, когда у вас есть копия файла ca.crt во второй системе Linux, пора импортировать сертификат в хранилище сертификатов данной операционной системы.

В системах на основе Debian и Ubuntu для импорта сертификата выполните следующие команды:

cp /tmp/ca.crt /usr/local/share/ca-certificates/update-ca-certificates

Чтобы импортировать сертификат в системы на основе CentOS, Fedora или RedHat, скопируйте сертификат в /etc/pki/ca-trust/source/anchors/ и запустите команду update-ca-trust.

sudo cp /tmp/ca.crt /etc/pki/ca-trust/source/anchors/update-ca-trust

Теперь вторая ваша система Linux будет доверять сертификатам, подписанным вашим ЦС.

Примечание: Если вы используете свой ЦС для веб-серверов и работаете с браузером Firefox, вам необходимо импортировать публичный сертификат ca.crt прямо в Firefox. Браузер Firefox не использует хранилище сертификатов локальной операционной системы. Подробную информацию о том, как добавить сертификат ЦС в Firefox, вы найдете в этой статье от Mozilla.

Если вы используете свой ЦС для интеграции со средой Windows или настольными компьютерами, ознакомьтесь с документацией по использованию certutil.exe.

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

Rosa crypto tool

Как следует из названия, это утилита для работы с электронной подписью и шифрованием для дистрибутива ROSA Linux. В данный момент утилита доступна в репозиториях Rosa Linux и Alt Linux.

Эта утилита разрабатывается одним человеком – Михаилом Вознесенским. У нее простой, но удобный интерфейс. На данный момент утилита находится в активной разработке – с ноября 2021 года мне удалось протестировать три версии. Последняя версия, доступная на момент написание статьи — 0.2.2.

Что внутри? Утилита написана на Python с использованием PyQt4 для графического интерфейса.

Установить ее можно, использовав «Управление программами» в Rosa Linux.

Вставляем токен и запускаем утилиту.

Видим, что токен определился успешно и был найден наш сертификат.

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

Выбираем файл и жмем “Подписать файл”. Получаем вот такое предупреждение.

Нажимаем «OK» и получаем информацию о том, что файл был подписан успешно.

Основное достоинство этой утилиты в том, что она совершенно бесплатная, в отличии нашего следующего продукта.

По сравнению с использованием «КриптоПро CSP» из консоли:

На порядок проще использовать;— Отсутствуют различные параметры подписи.

Исходный код программы доступен в публичном репозитории на ABF:abf.io/uxteam/rosa-crypto-tool-develСистема контроля версий, которую использует «НТЦ ИТ РОСА», интегрирована в сборочную среду и базируется на Git. Можно вполне использовать любой клиент git.

Надеюсь, разработчики других отечественных дистрибутивов Linux, таких как Astra Linux, GosLinux и другие добавят в свои дистрибутивы пакеты с rosa-crypto-tool.

Госуслуги

Основной по своей значимости портал для взаимодействия с государственными органами. Для входа на Госуслуги в Linux можно использовать только аппаратные ключи (токены), криптопровайдеры не поддерживаются. Поэтому если вам нужны только Госуслуги, то Крипто-Про вам устанавливать не нужно.

e-sign-linux-002.pngСистема корректно распознает текущую ОС и автоматически предлагает к скачиванию нужную версию плагина в виде DEB-пакета. Но не будем спешить с его установкой, для работы с токенами нам потребуется установить дополнительные библиотеки, в частности pcscd:

apt install pcscd

Если вы используете токены, то мы рекомендуем установить данную библиотеку вне зависимости от того, будете ли вы использовать Госуслуги или нет, она вам потребуется для работы с аппаратным ключом.

Затем откройте терминал в директории со скачанным плагином, повысьте права до суперпользователя и установите его командой:

dpkg -i IFCPlugin-x86_64.deb

Перезапустите браузер и снова попробуйте войти на портал Госуслуг, в этот раз все должно увенчаться успехом.

Подпись запроса на сертификат

На предыдущем этапе вы создали пробный запрос сертификата и ключ. Вы скопировали его в каталог /tmp на своем сервере ЦС (такой же процесс вы бы использовали, если бы у вас были реальные клиенты или серверы, отправляющие вам CSR-запросы, которые необходимо подписать).

Далее сервер ЦС должен импортировать тестовый сертификат и подписать его. Как только запрос сертификата будет подтвержден ЦС и передан обратно на сервер, клиенты, которые доверяют данному ЦС, также будут доверять только что выданному сертификату.

Про сертификаты:  gorenje-ru | Home page

Поскольку на сервере ЦС доступна утилита easy-rsa, она будет использоваться на этапах подписания, чтобы упростить задачу (и не использовать openssl, как мы это делали в предыдущем разделе).

Первым делом для подписания запроса сертификата нужно импортировать этот запрос с помощью скрипта easy-rsa:

cd ~/easy-rsa./easyrsa import-req /tmp/8host-server.req 8host-server. . .The request has been successfully imported with a short name of: 8host-serverYou may now use this name to perform signing operations on this request.

Теперь вы можете подписать запрос, запустив скрипт easyrsa с параметром sign-req, за которым указывается тип запроса и значение Common Name, включенное в запрос. Запрос может использовать один из следующих типов: client, server или ca. Поскольку наш тестовый сертификат предназначен для вымышленного сервера, используйте тип server.

./easyrsa sign-req server 8host-server

В выводе вам будет предложено подтвердить, что запрос поступил из надежного источника. Введите yes, затем нажмите Enter:

You are about to sign the following certificate.Please check over the details shown below for accuracy. Note that this requesthas not been cryptographically verified. Please be sure it came from a trustedsource or that you have verified the request checksum with the sender.

Request subject, to be signed as a server certificate for 3650 days:subject=commonName                = 8host-serverType the word ‘yes’ to continue, or any other input to abort.Confirm request details: yes. . .Certificate created at: /home/8host/easy-rsa/pki/issued/8host-server.crt

Если вы зашифровали ключ ЦС, сейчас вам будет предложено ввести пароль.

Итак, вы подписали запрос сертификата 8host-server.req, используя закрытый ключ сервера ЦС из файла /home/8host/easy-rsa/pki/private/ca.key. Полученный файл 8host-server.crt содержит открытый ключ шифрования для нашего условного сервера, а также новую подпись от сервера ЦС.

Если бы этот запрос относился к реальному серверу (например, к веб- или VPN-серверу), сервер ЦС должен был бы передать новые файлы 8host-server.crt и ca.crt на удаленный сервер, который сделал запрос сертификата:

scp pki/issued/8host-server.crt 8host@your_server_ip:/tmpscp pki/ca.crt 8host@your_server_ip:/tmp

После этого выданный сертификат можно использовать с веб-серверами, VPN, инструментами управления конфигурацией, системами баз данных или для аутентификации клиента.

Подпись средствами «криптопро csp»

В составе «КриптоПро CSP» есть утилита csptestf, позволяющая выполнять различные криптографические операции. Как я уже писал выше, у этой утилиты есть 2 недостатка:

  • Отсутствие хорошей документации;
  • Отсутствие графического интерфейса.

Подписать можно с помощью команды:

csptestf –sfsign –sign –in <имя файла> -out <имя файла> -my ‘Trusted eSign Test’ –detached –alg GOST94_256

Здесь,

my — параметр, в котором надо указать часть Common Name сертификата для подписи;

detached — позволяет создать открепленную подпись;

alg GOST94_256 — задает алгоритм хэширования, который будет использоваться при создании подписи.

Более подробную информацию о возможных параметрах вы можете получить, выполнив команду:

csptestf –sfsign

Такой интерфейс отлично подходит для подготовленного пользователя или для автоматизации операций в скриптах.

Поговорим теперь об утилитах, которые облегчают жизнь обычным пользователям при работе с подписью и шифрованием в Linux.

Создание и подпись запроса на сертификат

Теперь, когда у вас есть готовый центр сертификации, вы можете попрактиковаться в создании секретного ключа и запроса сертификата, чтобы ознакомиться с процессами подписания и распространения.

Запрос на подпись сертификата (CSR) состоит из трех частей: это открытый ключ, определение данных о запрашивающей системе и подпись запроса (создается с помощью закрытого ключа запрашивающей стороны). Закрытый ключ следует хранить в секрете, поскольку он будет использоваться для шифрования информации, расшифровать которую сможет только пользователь с подписанным открытым сертификатом.

Следующие действия нужно выполнять на вашей второй системе (Linux Debian, Ubuntu или дистрибутиве, который является производным от любой из этих систем). Это может быть другой удаленный сервер или локальная машина Linux – например, ноутбук или компьютер.

Пакет openssl по умолчанию предустановлен в большинстве дистрибутивов Linux, но если вы не уверены в этом, запустите такую команду:

sudo apt updatesudo apt install openssl

По запросу введите y, чтобы продолжить установку. Теперь вы готовы создать тестовый запрос с помощью openssl.

Первое, что необходимо сделать для создания CSR, – это создать закрытый ключ с помощью openssl. Давайте создадим каталог practice-csr, а затем сгенерируем в нем ключ. Мы создадим этот запрос для условного сервера 8host-server (не для идентификации пользователя или другого ЦС).

mkdir ~/practice-csrcd ~/practice-csropenssl genrsa -out 8host-server.keyGenerating RSA private key, 2048 bit long modulus (2 primes). . .. . .e is 65537 (0x010001)

Теперь, когда у вас есть закрытый ключ, вы можете создать соответствующий запрос с помощью утилиты openssl. Вам будет предложено заполнить несколько полей. Вы можете ввести точку (.), если хотите оставить поле пустым, но учтите, что в настоящих запросах на сертификаты так лучше не делать, в них следует использовать действительные данные о вашем местоположении и организации.

openssl req -new -key 8host-server.key -out 8host-server.req. . .—–Country Name (2 letter code) [XX]:USState or Province Name (full name) []:New YorkLocality Name (eg, city) [Default City]:New York CityOrganization Name (eg, company)

[Default Company Ltd]:MyOrganizationOrganizational Unit Name (eg, section) []:CommunityCommon Name (eg, your name or your server’s hostname) []:8host-serverEmail Address []:Please enter the following ‘extra’ attributesto be sent with your certificate requestA challenge password []:An optional company name []:

Если вы хотите автоматически добавить эти значения прямо в вызов команды openssl (чтобы не вводить их через интерактивные окна), передайте аргумент -subj. Обязательно отредактируйте условные значения, указав вместо них свои.

openssl req -new -key 8host-server.key -out server.req -subj /C=US/ST=New York/L=New York City/O=MyOrganization/OU=Community/CN=8host-server

Чтобы проверить содержимое вашего запроса, вы можете просмотреть файл запроса:

openssl req -in 8host-server.req -noout -subjectsubject=C = US, ST = New York, L = New York City, O = MyOrganization, OU = Community, CN = 8host-server

Если вы довольны вашим тестовым запросом на сертификат, скопируйте файл 8host-server.req на свой сервер ЦС, используя утилиту scp:

scp 8host-server.req 8host@your_ca_server_ip:/tmp/8host-server.req

Вы создали запрос на подпись сертификата для условного сервера 8host-server. В реальном сценарии запрос может быть предназначен для промежуточного веб-сервера или сервера разработки, который нуждается в TLS сертификате для целей тестирования. Также запрос может исходить от сервера OpenVPN, которому нужен сертификат, чтобы пользователи могли подключаться к VPN. Далее мы перейдем к подписанию запроса с помощью закрытого ключа сервера ЦС.

Создание ключа и ssl-сертификата

Использование самоподписанных сертификатов хоть и защищает от пассивного прослушивания, тем не менее не гарантирует клиентам, что сервер является именно тем сервером, который им нужен. Преймуществом самоподписанных сертификатов является их бесплатность. Сертификат, подписанных компанией-сертификатором (Certificate authority) стоит денег.

Для создания ключа и сертификата вводим команду:

openssl req -new-x509-days30-keyout server.key -out server.pem

На вопрос «Enter PEM pass phrase:» отвечаем паролем, подтверждаем и запоминаем.
На все последующие вопросы отвечаем произвольно, можно просто щелкать по Enter соглашаясь с предложенными вариантами, только на вопрос «Common Name (eg, YOUR name) []:» отвечаем именем сайта, для которого создаем сертификат, например www.example.com.

После ответа на все вопросы в директории должны появиться два новых файла – server.pem и server.crt (ключ и сертификат, соответственно).

Про сертификаты:  РЕКУЛЬТ - СЕРТИФИКАТ "РАЗБОР ГАРДЕРОБА СО СТИЛИСТОМ" 6 000р., подробнее по телефону и в WhatsApp 7 909 633 79 22

Чтобы использовать сгенерированный ключ нужно знать пароль введенный нами, и Apache будет спрашивать его у нас при загрузке, а к чему нам лишние вопросы от демонов? 🙂 Поэтому снимаем пароль с ключа:

cp server.key{,.orig}
openssl rsa -in server.key.orig -out server.key
rm server.key.orig

Скопируем их в /etc/ssl и назначим файлу ключа права чтения только администратору:

sudocp server.pem /etc/ssl/certs/sudocp server.key /etc/ssl/private/sudochmod 0600 /etc/ssl/private/server.key

Создание сниппета конфигурации apache с надежными настройками шифрования

Прежде всего, мы создадим сниппет конфигурации Apache для определения некоторых параметров SSL. При этом в Apache будет настроен надежный пакет шифров SSL и будут включены расширенные функции, которые обеспечат безопасность нашего сервера. Настраиваемые нами параметры смогут использовать любые виртуальные хосты с SSL.

Создайте новый сниппет в каталоге /etc/apache2/conf-available. Мы назовем файл ssl-params.conf, чтобы сделать его назначение очевидным:

Для безопасной настройки Apache SSL мы используем рекомендации Реми ван Эльста на сайте Cipherli.st. Этот сайт создан для предоставления удобных настроек шифрования для популярного программного обеспечения.

Рекомендованные настройки на вышеуказанном сайте обеспечивают высокий уровень безопасности. Иногда это достигается за счет совместимости клиентских систем. Если вам требуется поддержка старых версий клиентов, вы можете использовать альтернативный список, нажав на странице ссылку «Да, мне нужны настройки шифрования для устаревшего / старого программного обеспечения». Этот список можно заменить для копируемых ниже элементов.

Выбор конфигурации в основном зависит от того, какие системы вам нужно поддерживать. Оба варианта обеспечивают высокий уровень безопасности.

Для наших целей мы скопируем предоставленные настройки полностью. Мы внесем только одно небольшое изменение. Мы отключим заголовок Strict-Transport-Security (HSTS).

Предварительная загрузка HSTS повышает безопасность, но может иметь далеко идущие последствия, если ее включить случайно или неправильно. В этом обучающем модуле мы не будем включать настройки, но вы можете изменить их, если понимаете возможные последствия.

Установка крипто-про

Крипто-Про самый распространенный и популярный отечественный криптопровайдер. Это коммерческое ПО и для установки вам понадобится серийный номер, без него будет активирована триальная версия на три месяца. Обычно лицензия на Крипто-Про выдается вместе с ЭЦП, либо использующим его ПО (например, система сдачи отчетности), поэтому если вы затрудняетесь найти лицензию, то обратитесь к своему поставщику ЭЦП.

Теперь пару слов о ключах, если они располагаются на токене или флеш-карте, то ничего делать не надо, а вот если они находятся в реестре, то их нужно скопировать на переносной носитель (флешку). Для этого откройте Крипто-Про и перейдите на вкладку Сервис, в разделе Контейнер закрытого ключа нажмите Скопировать и в открывшемся окне выберите нужный контейнер из реестра.

Затем укажите новый носитель для закрытого ключа, в этом качестве можно использовать любую флеш-карту, в т.ч. с данными, также рекомендуем установить на контейнер ключа надежный пароль.

e-sign-linux-005.pngофициального сайта, нажав на ссылку в правой колонке.

Установка сертификатов используя криптопро в linux

Описание процесса установки приведено на примере дистрибутива семейства Debian (x64).
Названия файлов и директорий могут варьироваться от системы к системе.

При установке личных сертификатов не нужны права суперпользователя, и наоборот, при установке сертификатов УЦ
(корневых и промежуточных) могут потребоваться такие права.

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

/opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -fqcn -verifyc
    CSP (Type:80) v4.0.9009 KC1 Release Ver:4.0.9797 OS:Linux CPU:AMD64 FastCode:READY:AVX.
    AcquireContext: OK. HCRYPTPROV: 16188003
    \.FLASHivanov\.FLASHpetrov\.FLASHsidorov\.FLASHvasiliev\.FLASHsmirnov
    OK.
    Total: SYS: 0,020 sec USR: 0,060 sec UTC: 0,180 sec

Можно сразу установить личные сертификатов из всех доступных контейнеров одной командой:

/opt/cprocsp/bin/amd64/csptestf -absorb -certs
Произойдет установка сертификатов, находящихся во всех доступных в момент запуска команды контейнерах
(съемных флэш-носителях, жесткого диска и т. д.) в хранилище uMy.

При необходимости скопируйте ключевой контейнер \.FLASH.sidorov на жесткий диск:

/opt/cprocsp/bin/amd64/csptest -keycopy -contsrc '\.FLASHsidorov' -contdest '\.HDIMAGEsidor'
    CSP (Type:80) v4.0.9009 KC1 Release Ver:4.0.9797 OS:Linux CPU:AMD64 FastCode:READY:AVX.
    CryptAcquireContext succeeded.HCRYPTPROV: 38556259
    CryptAcquireContext succeeded.HCRYPTPROV: 38770755
    Total: SYS: 0,000 sec USR: 0,100 sec UTC: 14,920 sec
    [ErrorCode: 0x00000000]

Наличие [ErrorCode: 0x00000000] в завершении каждой команды КриптоПРО говорит о ее успешном выполнении.

Проверьте наличие нового контейнера \.HDIMAGEsidor:

/opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -fqcn -verifyc
    CSP (Type:80) v4.0.9009 KC1 Release Ver:4.0.9797 OS:Linux CPU:AMD64 FastCode:READY:AVX.
    AcquireContext: OK. HCRYPTPROV: 34554467
    \.FLASHivanov
    \.FLASHpetrov
    \.FLASHsidorov
    \.FLASHvasiliev
    \.FLASHsmirnov
    \.HDIMAGEsidor
    OK.
    Total: SYS: 0,010 sec USR: 0,050 sec UTC: 0,130 sec
    [ErrorCode: 0x00000000]

Установите личный сертификат:

/opt/cprocsp/bin/amd64/certmgr -inst -cont '\.HDIMAGEsidor'
    Certmgr 1.0 (c) "CryptoPro",  2007-2021.
    program for managing certificates, CRLs and stores

    Install:
    =============================================================================
    1-------
    Issuer              : OGRN=1234567890123, INN=1234567890, STREET=Арбат, E=info@berkut.ru, C=RU, S=77 г.Москва, L=Москва, O=ООО 'Беркут', OU=Удостоверяющий центр, CN=UCESTP
    Subject             : SNILS=12345678901, OGRN=1234567890123, INN=0011234567890, E=sidorov@mail.ru, C=RU, S=10 Республика Карелия, L=Петрозаводск, O=ООО Ромашка, CN=Сидоров Николай Павлович, T=Администратор, G=Николай Павлович, SN=Сидоров
    Serial              : 0x12C40953000000000019
    SHA1 Hash           : 0xdd0ea8db46a372571c55315cd7e4d8e2de8fb9b6
    SubjKeyID           : 5fc37e578cce0abe739c4da227f68a2f9abcb128
    Signature Algorithm : ГОСТ Р 34.11/34.10-2001
    PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
    Not valid before    : 09/08/2021  06:07:00 UTC
    Not valid after     : 09/11/2021  06:17:00 UTC
    PrivateKey Link     : No
    CA cert URL         : http://cert1.ucestp.ru/estp.crt
    Extended Key Usage  : 1.3.6.1.5.5.7.3.4
    1.3.6.1.5.5.7.3.2
    =============================================================================
    [ErrorCode: 0x00000000]

Скачайте корневой сертификат по ссылке выше (из поля CA cert URL):
http://cert1.ucmy-sertif.ru/estp.crt
и перенесите его, например, в домашнюю папку:

cp ~/Загрузки/estp.crt ~/estp.crt

Установите корневой сертификат (возможно потребуются права суперпользователя):

/opt/cprocsp/bin/amd64/certmgr -inst -store uroot -file ~/estp.crt
    Certmgr 1.0 (c) "CryptoPro",  2007-2021.
    program for managing certificates, CRLs and stores

    Install:
    =============================================================================
    1-------
    Issuer              : OGRN=1234567890123, INN=1234567890, STREET=Арбат, E=info@berkut.ru, C=RU, S=77 г.Москва, L=Москва, O=ООО 'Беркут', OU=Удостоверяющий центр, CN=UCESTP
    Subject             : OGRN=1234567890123, INN=1234567890, STREET=Арбат, E=info@berkut.ru, C=RU, S=77 г.Москва, L=Москва, O=ООО 'Беркут', OU=Удостоверяющий центр, CN=UCESTP
    Serial              : 0x50D7BC0E4A3EC9994454EB83013EE5F5
    SHA1 Hash           : 0xd2144a3e098b6f2decb224257f48e2b7c6d85209
    SubjKeyID           : 07b753cd561dee8e5e83407be4575ecc05bfec14
    Signature Algorithm : ГОСТ Р 34.11/34.10-2001
    PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
    Not valid before    : 17/06/2021  13:15:21 UTC
    Not valid after     : 17/06/2021  13:25:01 UTC
    PrivateKey Link     : No
    =============================================================================
    [ErrorCode: 0x00000000]

Проверьте установку личного сертификата:

/opt/cprocsp/bin/amd64/certmgr -list -store uMy
    Certmgr 1.0 (c) "CryptoPro",  2007-2021.
    program for managing certificates, CRLs and stores
    =============================================================================
    1-------
    Issuer              : OGRN=1234567890123, INN=1234567890, STREET=Арбат, E=info@berkut.ru, C=RU, S=77 г.Москва, L=Москва, O=ООО 'Беркут', OU=Удостоверяющий центр, CN=UCESTP
    Subject             : SNILS=12345678901, OGRN=1234567890123, INN=0011234567890, E=sidorov@mail.ru, C=RU, S=10 Республика Карелия, L=Петрозаводск, O=ООО Ромашка, CN=Сидоров Николай Павлович, T=Администратор, G=Николай Павлович, SN=Сидоров
    Serial              : 0x12C40953000000000019
    SHA1 Hash           : 0xdd0ea8db46a372571c55315cd7e4d8e2de8fb9b6
    SubjKeyID           : 5fc37e578cce0abe739c4da227f68a2f9abcb128
    Signature Algorithm : ГОСТ Р 34.11/34.10-2001
    PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
    Not valid before    : 09/08/2021  06:07:00 UTC
    Not valid after     : 09/11/2021  06:17:00 UTC
    PrivateKey Link     : Yes
    Container           : HDIMAGE\sidor.0002B01
    Provider Name       : Crypto-Pro GOST R 34.10-2021 KC1 CSP
    Provider Info       : ProvType: 80, KeySpec: 1, Flags: 0x0
    CA cert URL         : http://cert1.ucestp.ru/estp.crt
    Extended Key Usage  : 1.3.6.1.5.5.7.3.4
    1.3.6.1.5.5.7.3.2
    =============================================================================
    [ErrorCode: 0x00000000]

Шаг 1 – установите клиент let’s encrypt

Первый шаг к использованию Let’s Encrypt. это получить сертификат SSL, чтобы установить программное обеспечение Let’s Encrypt на сервере. В настоящее время, лучший способ установить Let’s Encrypt, это просто клонировать его из официального репозитория GitHub.

Про сертификаты:  Сертификация телефонов | сертификация средств связи | Сертификация домофонов

Установка Git и bc

Начнем сейчас установку Encrypt Git и bc, так что мы можем клонировать репозиторий Let’s Encrypt.

Обновление менеджера пакетов вашего сервера, а затем установить пакеты Git и bc с apt-get:

sudo apt-get update
sudo apt-get -y install git bc

Клонирование Let’s Encrypt

Теперь мы можем клонировать репозиторий Let’s Encrypt в каталог /opt с помощью следующей команды:

Шаг 2 – получение сертификата

Let’s Encrypt предоставляет множество способов получения SSL-сертификатов, с помощью различных плагинов. В отличие от плагина Apache, большинство плагинов только поможет вам получить сертификат, потом необходимо вручную настроить веб-сервер для использования.

Предлагаю использовать плагин standalone. Это довольно просто:

service nginx stop
/opt/letsencrypt/letsencrypt-auto certonly --standalone
service nginx start

Просто следуйте инструкциям!

Вместо этого вы можете использовать плагин WebRoot для получения сертификата SSL. И мы покажем вам, как это сделать.

Как использовать плагин Webroot

Плагин Webroot работает, помещая специальный файл в каталог /.well-known в корневом каталоге документов, который может быть открыт (через веб – сервер) службой Let’s Encrypt для проверки. В зависимости от конфигурации, вам может потребоваться явным образом разрешить доступ к каталогу /.well-known.

Шаг 4 — активация изменений в apache

Мы внесли изменения и настроили брандмауэр, и теперь можем включить в Apache модули SSL и заголовков, активировать наш виртуальный хост SSL и перезапустить Apache.

Мы можем активровать mod_ssl, модуль Apache SSL, и модуль mod_headers, необходимый для некоторых настроек нашего сниппета SSL, с помощью команды a2enmod:

Теперь мы можем активировать виртуальный хост SSL с помощью команды a2ensite:

Также нам нужно будет активировать файл ssl-params.conf для считывания заданных значений:

Мы активировали наш сайт и все необходимые модули. Теперь нам нужно проверить наши файлы на наличие ошибок в синтаксисе. Для этого можно ввести следующую команду:

Если проверка будет успешно пройдена, мы получим результат, выглядящий примерно так:

Output

AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message Syntax OK

Первая строка — это сообщение о том, что директива ServerName не задана глобально. Если вы хотите избавиться от этого сообщения, вы можете задать для ServerName доменное имя вашего сервера или IP-адрес в каталоге /etc/apache2/apache2.conf. Это необязательно, потому что данное сообщение не наносит никакого вреда.

Если в результатах есть сообщение Syntax OK, в вашей конфигурации нет синтаксических ошибок. Мы можем безопасно перезапустить Apache для внесения изменений:

Отзыв сертификата

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

Общий процесс отзыва сертификата состоит из таких этапов:

  1. Отзыв сертификата с помощью команды ./easyrsa revoke client_name.
  2. Создание нового запроса на сертификат с помощью команды ./easyrsa gen-crl.
  3. Перенос обновленного файла crl.pem на сервер или серверы, которые зависят от вашего ЦС; копирование файла в требуемый каталог или каталоги в этих системах для программ, которые к нему обращаются.
  4. Перезапуск всех сервисов, которые используют ваш ЦС и файл запроса.

Вы можете использовать этот процесс для отзыва любых ранее выданных сертификатов. Ниже мы подробно рассмотрим каждый шаг, начиная с команды revoke.

Чтобы отозвать сертификат, перейдите в каталог easy-rsa на вашем сервере ЦС:

cd ~/easy-rsa

Затем запустите скрипт easyrsa с опцией revoke, после нее укажите имя клиента, сертификат которого вы хотите отозвать. Следуя нашему примеру, Common Name сертификата – это 8host-server:

./easyrsa revoke 8host-server

Команда попросит вас подтвердить отзыв, введя yes:

Please confirm you wish to revoke the certificate with the following subject:subject=commonName                = 8host-serverType the word ‘yes’ to continue, or any other input to abort.Continue with revocation: yes. . .Revoking Certificate 8348B3F146A765581946040D5C4D590A. . .

Обратите внимание на значение в строке Revoking Certificate. Оно представляет собой уникальный серийный номер отзываемого сертификата. Если вы хотите проверить список отозванных сертификатов (об этом чуть ниже), чтобы убедиться, что в нем есть этот сертификат, вам понадобится это значение.

После подтверждения действия ЦС отзовет сертификат. Однако удаленные системы, которые используют ваш ЦС, не могут проверить, были ли отозваны какие-либо сертификаты. Пользователи и серверы по-прежнему смогут использовать отозванный сертификат до тех пор, пока список отзыва сертификатов ЦС (Certificate Revocation List, CRL) не будет распространен на все системы, использующие ваш ЦС.

Давайте создадим CRL или обновим существующий файл crl.pem.

Обновив список отзыва, вы сможете указать, какие пользователи и системы имеют действительные сертификаты в вашем ЦС.

Чтобы создать CRL, запустите команду easy-rsa с параметром gen-crl, находясь в каталоге ~/easy-rsa:

./easyrsa gen-crl

Если при создании файла ca.key вы использовали парольную фразу, вам будет предложено ввести ее. Команда gen-crl создаст файл crl.pem, содержащий обновленный список отозванных сертификатов для этого ЦС.

Затем вам нужно будет передать обновленный файл crl.pem на все серверы и клиенты, которые используют ваш ЦС. В противном случае клиенты и системы будут по-прежнему иметь доступ к сервисам и системам, которые используют ваш ЦС, поскольку они не будут знать об аннулированном статусе сертификата.

Чтобы передать файл на серверы, которые доверяют вашему ЦС, вы можете использовать команду scp.

Примечание: В этом мануале показано, как создавать и распространять CRL вручную. Но существуют и более надежные, автоматизированные методы для распространения и проверки списков отзыва, например OCSP-Stapling.

Убедитесь, что вы вошли на сервер ЦС как пользователь sudo, и запустите следующую команду, указав свой IP-адрес или DNS-имя своего сервера вместо your_server_ip:

scp ~/easy-rsa/pki/crl.pem 8host@your_server_ip:/tmp

Теперь, когда файл находится в удаленной системе, нам остается только обновить все сервисы, чтобы предоставить им новую копию списка отзыва. Мы не будем подробно останавливаться на этом этапе. В общих чертах: вам нужно скопировать файл crl.pem в то место, где сервис будет его искать, а затем перезапустить сервис с помощью systemctl.

Как только сервисы получат новый файл crl.pem, они смогут отклонять соединения от клиентов или серверов, которые используют отозванный сертификат.

Если вы хотите проверить файл CRL (например, чтобы просмотреть список отозванных сертификатов), используйте следующую команду openssl в каталоге easy-rsa на вашем сервере ЦС:

cd ~/easy-rsaopenssl crl -in pki/crl.pem -noout -text

Вы также можете запустить эту команду на любом сервере или системе, где установлен инструмент openssl с копией файла crl.pem. Например, если вы перенесли файл crl.pem в вашу вторую систему и хотите убедиться, что сертификат 8host-server отозван, вы можете использовать команду openssl, как показано ниже (но укажите свой серийный номер отзыва сертификата):

openssl crl -in /tmp/crl.pem -noout -text |grep -A 1 8348B3F146A765581946040D5C4D590ASerial Number: 8348B3F146A765581946040D5C4D590ARevocation Date: Apr  1 20:48:02 2020 GMT

Обратите внимание: команда grep используется для проверки уникального серийного номера, который вы получили при отзыве. Теперь вы можете проверить свой список отозванных сертификатов в любой системе, которая использует его для ограничения доступа пользователей и сервисов.

Оцените статью
Мой сертификат
Добавить комментарий