Как установить сертификат windows на linux

Как при помощи внутреннего центра сертификации Certificate Services выдать сертификат для компьютеров с Linux. В статье описан процесс создания файла запроса на Linux и выдачу сертификата в центре AD CS.

Обновлено Обновлено: 10.06.2019
Опубликовано Опубликовано: 07.06.2017

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

В этой статье мы создадим правильный сертификат с указанием альтернативного DNS-имени, без которого программы могут возвращать ошибку сертификата.

1. Формируем файл запроса (на компьютере с Linux)

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

mkdir -p /etc/ssl/adcs

cd /etc/ssl/adcs

Создаем закрытый ключ:

openssl genrsa -out private.key 2048

* в данном примере создан 2048-и битный ключ с именем private.key

Создаем файл с описанием запроса:

vi openssl.conf

[req]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_extensions
distinguished_name = dn

[dn]
C=RU
ST=SPb
L=SPb
O=Global Security
OU=IT Department
emailAddress=hostmaster@dmosk.ru
CN = *.dmosk.local

[req_extensions]
subjectAltName = @alter_name

[alter_name]
DNS.1 = *.dmosk.local

* где стоит обратить внимание на следующее:

  • sha256 (или SHA-2) — алгоритм шифрования;
  • *.dmosk.local — имя узла, к которому мы будем обращаться. Это очень важный пункт — нужно, чтобы имя совпадало с именем, по которому будут выполняться обращения. В данном примере создается wildcart (домен и все его поддомены)
  • subjectAltName — альтернативные имена стали иметь значение с 2017 года, когда некоторые браузеры перестали принимать сертификаты без указания альтернативных DNS-имен.

Далее создаем ключ запроса сертификата:

openssl req -new -key private.key -out request.csr -config openssl.conf

* где private.key — закрытый ключ, который был сформирован на предыдущем шаге; request.csr — файл, который будет сформирован. В нем будет запрос на открытый ключ;

После выполнения команды, в каталоге появится файл request.csr. Выведем его содержимое, чтобы посмотреть запрос:

cat request.csr

Должны увидеть что-то на подобие:

——BEGIN CERTIFICATE REQUEST——
MIIC1jCCAb4CAQAwgZAxCzAJBgNVBAYTAlJVMQwwCgYDVQQIDANTUGIxDDAKBgNV
BAcMA1NQYjEYMBYGA1UECgwPR2xvYmFsIFNlY3VyaXR5MRYwFAYDVQQLDA1JVCBE
ZXBhcnRtZW50MR4wHAYDVQQDDBVzaW1wbGVwbGFuLnNhdHMubG9jYWwxEzARBgNV
BAMMCnNpbXBsZXBsYW4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ
ze/WOQgnlbfzlEsQUsmfUTnkYq0rCpzgjY360lFvqek5Y8NIFX/25PRbUy4N3D8r
c/7mXt2dXmcnn7zeRQOB2g0AY8Wmeg3R6C+JH7TwxtkMj7FO8R59URxFN84lu9Sj
26Aw+Ax7474XnAoUBMSmUXbV2mAP5Xm83sjvjE1OcHXN8SPbc+EchZuLVLsIGXHz
Emz7V4D/ecahfSc2hCRG2Pc7SeFIADYdjyoLtykz5WyiIoXkpEfSNQHlt2/A1kJ5
h9/GPXMVJVL02FgsI5HIGZyGnYWA+cP7sHoEDZNpLHHuEtfwx3bLxJPFnZDa0rPO
LhV/ux1e6b9ikrge0xp9AgMBAAGgADANBgkqhkiG9w0BAQsFAAOCAQEAPVD2aVH8
ZDz+6s8ecKr08eT3mA9cRCa7dZYFj4/vO/ZYrDH9QS45gd0sYG+RN+JMGaFaY+X7
faE4m0BysPIbhEYLRY5GJYxmOGm05gM2HfPrcnnWXZbPQu/n5pR4ptvPYL7bilGb
z6hXb8ZtXUXwz1F2OgTPOPu4+w8lI23pzHRHlCXcVSoZxe/A2XwusB5MrtyMEYtj
rB2kcOqQRkt9uIv5IobwnYaVGDk/7wl/zkb9K+RKZt4izKfFaSSyPn7wvpKSIaAf
S3SQjJ0tBckLbtwKrxdFB0B8bpyIKUtHmpX/zOmityC8PLXe6/vQ/DmM3B6QC4Ba
KdnRkOSPv8BGog==
——END CERTIFICATE REQUEST——

2. Выпускаем сертификат

Копируем содержимое файла запроса (request.csr) и открываем веб-страницу центра сертификации — как правило, это имя сервера или IP-адрес + certsrv, например, http://192.168.0.15/certsrv/.

В открывшемся окне переходим по ссылкам Запроса сертификатарасширенный запрос сертификата.

В поле «Сохраненный запрос» вставляем скопированный запрос, в а поле «Шаблон сертификата» выбираем Веб-сервер:

Нажимаем Выдать и скачиваем сертификат по ссылке Загрузить сертификат:

3. Установка сертификата на Linux

Переносим полученный сертификат на компьютер с Linux, например, при помощи WinSCP.

После необходимо сконвертировать DER-сертификат (от AD CS) в PEM-сертификат (для Linux). Для этого вводим следующую команду:

openssl x509 -inform der -in certnew.cer -out public.pem

* где certnew.cer — файл, который мы получили от центра сертификации AD CS (как правило, у него такое имя); public.pem — имя PEM-сертификата.

Сертификат готов к использованию. Мы сформировали:

  1. private.key — закрытый ключ.
  2. public.pem — открытый ключ.

Дмитрий Моск — частный мастер

Была ли полезна вам эта инструкция?

Да            Нет

В этой статье мы покажем, как добавить (установить) новый сертификат в список доверенных корневых сертификатов в Linux.

Содержание:

  • Установка корневого сертификата в Linux
  • Добавить корневой доверенный сертификат для браузеров Mozilla, Chrome

Например, вы используете на своем сайте самоподписанный SSL/TLS сертификат и не хотите, чтобы на клиентах при открытии сайта появлялась ошибка SEC_ERROR_UNKNOWN_ISSUER.

недоверенные сертификат в браузере на linux

Чтобы проверить, что ваш хост Linux не может проверить (и соответственно не доверяет) SSL сертификату на определенном сайте, выполните команду:

$ curl –I https://www.sberbank.ru

curl: (60) SSL certificate problem: unable to get local issuer certificate. More details here: https://curl.haxx.se/docs/sslcerts.html
curl failed to verify the legitimacy of the server and therefore could not establish a secure connection to it. To learn more about this situation and how to fix it, please visit the web page mentioned above.

curl - не могу проверить сертификат

В данном случае нам нужно добавить корневой центр сертификации этого сайта в список доверенных корневых сертификатов Linux.

Установка корневого сертификата в Linux

Для обновления хранилища доверенных сертификатов в Linux вам нужен файл сертификата в формате PEM с расширением файла .crt. PEM сертификат представляет собой текстовый файл в формате base64, который содержит в начале файла строку —-BEGIN CERTIFICATE—- и в конце ——END CERTIFICATE——.

PEM формат сертификата

Если ваш файл сертификата в формате DER, вы можете конвертировать его в PEM формат с помощью утилиты openssl:

$ openssl x509 -in my_trusted_sub_ca.der -inform der -out my_trusted_sub_ca.cer

Сначала рассмотрим, как добавит корневой сертификат вашего CA в доверенные в дистрибутивах Linux на базе DEB (Ubuntu, Debian, Mint, Kali Linux).

Скопируйте файлы ваших сертификаты в хранилище сертификатов в каталог usr/local/share/ca-certificates/:

$ sudo cp my_trusted_sub_ca.crt /usr/local/share/ca-certificates/
$ sudo cp my_trusted_root_ca.crt /usr/local/share/ca-certificates/

Обновите хранилище сертификатов командой:

$ sudo update-ca-certificates -v

Если команда не найдена, установите пакет в Ubuntu:

$ sudo apt-get install -y ca-certificates

обновить хранилище сертфикатов в linux

Если сертификаты успешно добавлены, появится сообщение о том, что сертфикат скопирован в /etc/ssl/certs/:

Updating certificates in /etc/ssl/certs…
2 added, 9 removed; done.
Running hooks in /etc/ca-certificates/update.d

Также вы можете добавить новые сертификаты в хранилище с помощью команды:

$ sudo dpkg-reconfigure ca-certificates

Выберите из списка сертификаты, которые нужно добавить в доверенные.

добавить сертификаты в доверенные CA в Linux

В Linux список доверенных сертификатов содержится в файле /etc/ssl/certs/ca-certificates.crt. Обе рассмотренные выше команды обновят этот файл и добавят в информацию о новых сертификатах.

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

$ awk -v cmd='openssl x509 -noout -subject' ' /BEGIN/{close(cmd)};{print | cmd}' < /etc/ssl/certs/ca-certificates.crt | grep -i YourCASubj

Укажите часть Common Name вашего сертификата вместо YourCASubj для поиска в хранилище по subject.

awk вывести доверенные сертификаты

Вы можете убедиться, что ваша ОС доверяет сертификату с помощью команду:

$ openssl verify my_trusted_sub_ca.crt

openssl verify - проверить доверяет ли linux сертификату

Если Linux не доверяет сертификату, появится ошибка:

error 20 at 0 depth lookup: unable to get local issuer certificate
error my_trusted_sub_ca.crt: verification failed

Теперь проверьте, что на сайте используется доверенный SSL сертификат с помощью curl:

$ curl –I https://www.sberbank.ru

Все ок, сертификат доверенные {
HTTPOnly: secure
}.

curl проверка ssl сертификата secure

Можно также вручную добавить путь к сертификату:

$ sudo mkdir /usr/share/ca-certificates/extra

$ sudo cp my.crt /usr/share/ca-certificates/extra/mycert1.crt
$ sudo vim /etc/ca-certificates.conf

exta/mycert1.crt

$ sudo update-ca-certificates

Чтобы удалить сертификат, удалите ваш crt файл:

$ sudo rm /usr/local/share/ca-certificates/yourcert.crt

И обновите хранилище:

$ sudo update-ca-certificates --fresh

В дистрибутивах Linux на базе RPM (CentOS, Oracle, RHEL, Rocky Linux, Fedora) для добавления сертификата в доверенные:

  1. Установите пакет ca-certificates:
    # yum install ca-certificates
  2. Скопируйте файл сертификата в каталог /etc/pki/ca-trust/source/anchors/:
    # cp mycert.crt /etc/pki/ca-trust/source/anchors/
  3. Обновите хранилище:
    # update-ca-trust force-enable
    # update-ca-trust extract

Добавить корневой доверенный сертификат для браузеров Mozilla, Chrome

Теперь все системные утилиты будут доверять сайтам, использующим данный CA. Но это не повлияет на веб браузеры Mozilla Firefox или Google Chrome. Они по-прежнему будут показывать предупреждение о недоверенном сертификате.

Дело в том, что браузеры Firefox, Chromium, Google Chrome, Vivaldi и даже почтовый клиент Mozilla Thunderbird не используют системное хранилище сертификатов Linux. Хранилище сертификатов для этих программ находится в директории пользователя в файле cert8.db (для Mozilla) или cert9.db (для Chromium и Chrome). Для обновления этих хранилищ сертификатов используется утилита certutil из пакета libnss3-tools.

Установите пакет:

$ sudo apt install libnss3-tools

установка libnss3-tools

Теперь выполните следующие скрипты для добавления ваших сертификатов в хранилище через NSS:

#!/bin/bash
certfile="my_rusted_root_ca.crt"
certname="My Root CA1"
for certDB in $(find ~/ -name "cert8.db")
do
certdir=$(dirname ${certDB});
certutil -A -n "${certname}" -t "TCu,Cu,Tu" -i ${certfile} -d dbm:${certdir}
done
for certDB in $(find ~/ -name "cert9.db")
do
certdir=$(dirname ${certDB});
certutil -A -n "${certname}" -t "TCu,Cu,Tu" -i ${certfile} -d sql:${certdir}
done

После запуска скрипта, сайтам с данным CA будут доверять все браузеры.


Offline

Sheremetev_Konstantin

 


#1
Оставлено
:

30 июня 2020 г. 15:06:54(UTC)

Sheremetev_Konstantin

Статус: Активный участник

Группы: Участники

Зарегистрирован: 08.04.2020(UTC)
Сообщений: 48

Сказал(а) «Спасибо»: 4 раз

Добрый день. Подскажите пожалуйста как правильно перенести сертификат с Windows на Ubuntu. В Windows через КриптоАРМ я попробовал экспортировать файл с закрытым ключом в pfx формат, дал человеку, он попробовал установить его командой /opt/cprocsp/bin/<архитектура процессора>/certmgr -install -pfx -file <путь к .pfx файлу> -pin <пароль к .pfx файлу>, но получил ошибку [ErrorCode: 0x80092003]


Вверх


Offline

Александр Лавник

 


#2
Оставлено
:

30 июня 2020 г. 15:12:46(UTC)

Александр Лавник

Статус: Сотрудник

Группы: Участники

Зарегистрирован: 30.06.2016(UTC)
Сообщений: 3,201
Мужчина
Российская Федерация

Сказал «Спасибо»: 53 раз
Поблагодарили: 722 раз в 674 постах

Автор: Sheremetev_Konstantin Перейти к цитате

Добрый день. Подскажите пожалуйста как правильно перенести сертификат с Windows на Ubuntu. В Windows через КриптоАРМ я попробовал экспортировать файл с закрытым ключом в pfx формат, дал человеку, он попробовал установить его командой /opt/cprocsp/bin/<архитектура процессора>/certmgr -install -pfx -file <путь к .pfx файлу> -pin <пароль к .pfx файлу>, но получил ошибку [ErrorCode: 0x80092003]

Здравствуйте.

Посмотрите этот ответ.

Техническую поддержку оказываем тут
Наша база знаний


Вверх


Offline

Sheremetev_Konstantin

 


#3
Оставлено
:

30 июня 2020 г. 15:44:15(UTC)

Sheremetev_Konstantin

Статус: Активный участник

Группы: Участники

Зарегистрирован: 08.04.2020(UTC)
Сообщений: 48

Сказал(а) «Спасибо»: 4 раз

Добрый день.

При попытке установить происходит следующая ошибка. Экспорт делал как на той ссылке что вы мне прислали
Не знаю как вставить картинку, ошибка следующая
-Ошибка при импорте PFX
-Отказано в доступе
[ErrorCode: 0x80090010]
Пин-код верный

Отредактировано пользователем 30 июня 2020 г. 15:44:55(UTC)
 | Причина: Не указана


Вверх


Offline

Sheremetev_Konstantin

 


#4
Оставлено
:

30 июня 2020 г. 15:45:53(UTC)

Sheremetev_Konstantin

Статус: Активный участник

Группы: Участники

Зарегистрирован: 08.04.2020(UTC)
Сообщений: 48

Сказал(а) «Спасибо»: 4 раз

image.png (40kb) загружен 8 раз(а).


Вверх


Offline

Sheremetev_Konstantin

 


#5
Оставлено
:

30 июня 2020 г. 16:33:30(UTC)

Sheremetev_Konstantin

Статус: Активный участник

Группы: Участники

Зарегистрирован: 08.04.2020(UTC)
Сообщений: 48

Сказал(а) «Спасибо»: 4 раз

Добрый день.

Пробуем установить сертификат формата .cer . Закинули папку с контейнерами в корень ключевого носителя, выполняем команду /opt/cprocsp/bin/csptestf -absorb -certs появляется ошибка No cert for AT_KEYEXCHANGE key. Подскажите пожалуйста


Вверх


Offline

Александр Лавник

 


#6
Оставлено
:

30 июня 2020 г. 17:04:37(UTC)

Александр Лавник

Статус: Сотрудник

Группы: Участники

Зарегистрирован: 30.06.2016(UTC)
Сообщений: 3,201
Мужчина
Российская Федерация

Сказал «Спасибо»: 53 раз
Поблагодарили: 722 раз в 674 постах

Автор: Sheremetev_Konstantin Перейти к цитате

Добрый день.

Пробуем установить сертификат формата .cer . Закинули папку с контейнерами в корень ключевого носителя, выполняем команду /opt/cprocsp/bin/csptestf -absorb -certs появляется ошибка No cert for AT_KEYEXCHANGE key. Подскажите пожалуйста

Это сообщение говорит о том, что в ключевом контейнере присутствует ключ обмена (AT_KEYEXCHANGE key), но в ключевом контейнере нет соответствующего этому ключу сертификата.

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

Код:

/opt/cprocsp/bin/amd64/csptest -keys -enum -verifyc -fqcn

Установите сертификат в ключевой контейнер (inst_to_cont) и в личное хранилище сертификатов (-inst) командой:

Код:

/opt/cprocsp/bin/amd64/certmgr -inst -inst_to_cont -cont '\.HSMDBcontname' -pin пин-код -file ~/user.cer

где

\.HSMDBcontname — имя нужного ключевого контейнера из вывода предыдущей команды,

пин-код — пин-код нужного ключевого контейнера (при наличии),

~/user.cer — полный путь к сертификату, соответствующему нужному ключевому контейнеру.

Техническую поддержку оказываем тут
Наша база знаний


Вверх

thanks 1 пользователь поблагодарил Александр Лавник за этот пост.

Sheremetev_Konstantin

оставлено 02.07.2020(UTC)


Offline

Sheremetev_Konstantin

 


#7
Оставлено
:

2 июля 2020 г. 10:51:01(UTC)

Sheremetev_Konstantin

Статус: Активный участник

Группы: Участники

Зарегистрирован: 08.04.2020(UTC)
Сообщений: 48

Сказал(а) «Спасибо»: 4 раз

Добрый день.

Спасибо, это помогло. Но при подписи файла возникает ошибка
*-Папка ‘./file/’:
Неизвестная ошибка.
/dailybuildsbranches/CSP_5_0r2i/CSPbuild/CSP/samples/CPCrypt/Files.cpp:246: 0x20000070
[ErrorCode: 0x20000070]-*,
Запрос подписи следующий
/opt/cprocsp/bin/amd64/cryptcp -signf -dn mail@mail.ru -cert -der -nochain -dir ./file/xxx.xml ./file/xxx.xml.sgn


Вверх


Offline

Sheremetev_Konstantin

 


#8
Оставлено
:

2 июля 2020 г. 12:45:04(UTC)

Sheremetev_Konstantin

Статус: Активный участник

Группы: Участники

Зарегистрирован: 08.04.2020(UTC)
Сообщений: 48

Сказал(а) «Спасибо»: 4 раз

В базе знаний данную ошибку найти не удалось. На форуме ее упоминание встречается минимум раз.


Вверх


Offline

Андрей *

 


#9
Оставлено
:

2 июля 2020 г. 16:12:12(UTC)

Андрей *

Статус: Сотрудник

Группы: Участники

Зарегистрирован: 26.07.2011(UTC)
Сообщений: 11,749
Мужчина
Российская Федерация

Сказал «Спасибо»: 451 раз
Поблагодарили: 1840 раз в 1423 постах

Автор: Sheremetev_Konstantin Перейти к цитате

Добрый день.

Спасибо, это помогло. Но при подписи файла возникает ошибка
*-Папка ‘./file/’:
Неизвестная ошибка.
/dailybuildsbranches/CSP_5_0r2i/CSPbuild/CSP/samples/CPCrypt/Files.cpp:246: 0x20000070
[ErrorCode: 0x20000070]-*,
Запрос подписи следующий
/opt/cprocsp/bin/amd64/cryptcp -signf -dn mail@mail.ru -cert -der -nochain -dir ./file/xxx.xml ./file/xxx.xml.sgn

-dir — для чего?

Необходимо использовать параметры в соответствии с документацией.

Цитата:

/opt/cprocsp/bin/amd64/cryptcp -sign -dn mail@mail.ru -detach -der «/home/andrey/file.xml» «/home/andrey/file.xml.p7s» -nochain -norev

Техническую поддержку оказываем тут
Наша база знаний


Вверх

WWW


Offline

Sheremetev_Konstantin

 


#10
Оставлено
:

2 июля 2020 г. 16:14:27(UTC)

Sheremetev_Konstantin

Статус: Активный участник

Группы: Участники

Зарегистрирован: 08.04.2020(UTC)
Сообщений: 48

Сказал(а) «Спасибо»: 4 раз

Спасибо, подписать получилось


Вверх

Пользователи, просматривающие эту тему

Guest

Быстрый переход
 

Вы не можете создавать новые темы в этом форуме.

Вы не можете отвечать в этом форуме.

Вы не можете удалять Ваши сообщения в этом форуме.

Вы не можете редактировать Ваши сообщения в этом форуме.

Вы не можете создавать опросы в этом форуме.

Вы не можете голосовать в этом форуме.

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

Введение

Само-подписанные ssl-сертификаты бывают нужны в некоторых случаях:

  • При работе с тестовыми веб-серверами. Когда вам всё равно требуется протокол https. Или не требуется, но вам просто хочется использовать https вместо http. То удобно иметь свой центр сертификации и для каждого тестового сайта выпускать ssl-сертификаты.
  • При работе с внутренними web-серверами. Если у компании есть свой внутренний сайт или веб-приложение. И этот сайт доступен только из внутренней сети компании. То, вероятно, вам захочется использовать протокол https вместо http. А так как доступ к сайту есть у ограниченного числа компьютеров, то на них можно добавить свой корневой ssl-сертификат. И тогда, эти компьютеры начнут доверять внутренним сайтам компании.

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

На этом скриншоте, браузер не доверяет сайту, но если нажать на кнопку “Дополнительные“, то вы всё равно сможете перейти на сайт:

Браузер не доверяет сертификату сайта

Браузер не доверяет сертификату сайта

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

Браузер доверяет сертификату сайта

Браузер доверяет сертификату сайта

В этой статье я проделаю следующее:

  • На Debian 11 установлю apache2 и настрою его работу на https (с сертификатами по умолчанию для localhost).
  • Покажу что клиенты пока не доверяют этому сертификату.
  • Создам центр сертификации на этом же сервере. А именно:
    • создам закрытый корневой ключ и открытый корневой ключ (он же корневой сертификат);
    • с помощью этой пары ключей буду выпускать сертификаты для доменов;
    • установлю выпущенный корневой сертификат на компьютер клиента (на windows);
    • с помощью корневого ключа и сертификата, я выпущу ключ и сертификат для домена (для веб-сервера).
  • Затем я настрою apache2 на использование созданных мною закрытого ключа и сертификата для веб-сервера. И продемонстрирую вам что клиентский браузер начал доверять сертификату сайту.
  • Дальше я установлю и настрою другой веб-сервер – nginx. Настрою его на работу по протоколу https. И продемонстрирую доверие браузера к сайту.

Устанавливаю apache2

Устанавливаю web-сервер apache2:

$ sudo apt install apache2

Настраиваю его работу по протоколу https:

$ sudo a2enmod ssl
$ sudo a2ensite default-ssl.conf
$ sudo systemctl restart apache2

Проверяю доверие к ssl-сертификату сайта, открыв его по https:

Браузер Chrome не доверяет сертификату с которым работает сайт

Браузер Chrome не доверяет сертификату с которым работает сайт

Как видите, доверия нет.

Создаю центр сертификации

Теория

Протокол HTTPS это объединение протоколов HTTP + SSL/TLS. А протокол TLS это асинхронное шифрование. То есть создаётся пара ключей. И то, что один ключ может зашифровать, другой может расшифровать и наоборот. В протоколе HTTPS эти ключи не равнозначные:

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

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

Корневая пара ключей обычно не подтверждает никакой домен. А используется для создания промежуточных сертификатов или сертификатов для доменов (для web-серверов).

Обычно, когда создают ssl-сертификат для домена, то для безопасности отнимают у него право создания дочерних сертификатов.

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

Сервер на котором создают корневые сертификаты, а затем с их помощью выпускают сертификаты для доменов называют – центр сертификации.

Создаю корневой закрытый ключ

Для создания ssl/tls сертификатов можно использовать утилиту openssl, она не требует админских прав.

Создаю корневой закрытый ключ:

$ openssl genpkey -algorithm RSA -out rootCA.key -aes-128-cbc
   ....................................+++++
   ......................+++++
   Enter PEM pass phrase:
   Verifying - Enter PEM pass phrase:

Разберу эту команду:

  • genpkey – команда для создания закрытого ключа;
  • -algorithm RSA – алгоритм асинхронного шифрования, именно он используется для выделения открытого ключа из этого закрытого;
  • -out rootCA.key – получаемый файл закрытого ключа;
  • -aes-128-cbc – алгоритм симметричного шифрования, которым мы зашифруем файл закрытого ключа с помощью пароля. Пароль нужно будет ввести.

Создаю корневой сертификат

Теперь создаю корневой сертификат (открытый ключ):

$ openssl req -x509 -new -key rootCA.key -sha256 -days 3650 -out rootCA.crt
   Enter pass phrase for rootCA.key:
   You are about to be asked to enter information that will be incorporated
   into your certificate request.
   What you are about to enter is what is called a Distinguished Name or a DN.
   There are quite a few fields but you can leave some blank
   For some fields there will be a default value,
   If you enter '.', the field will be left blank.
   -----
   Country Name (2 letter code) [AU]:RU
   State or Province Name (full name) [Some-State]:Moscow
   Locality Name (eg, city) []:Moscow
   Organization Name (eg, company) [Internet Widgits Pty Ltd]:Sysadminium
   Organizational Unit Name (eg, section) []:.
   Common Name (e.g. server FQDN or YOUR name) []:Sysadminium

Разберу команду:

  • req – создаёт сертификаты или запросы на сертификаты;
  • -x509 – будем создавать сертификат а не запрос;
  • -new – создаём новый сертификат (нужно будет ввести значения некоторых полей в сертификате);
  • -key rootCA.key – используемый закрытый ключ, из которого нужно создать открытый;
  • -sha256 – алгоритм хеширования, чтобы создать подпись ключа;
  • -days 3650 – выпускаем сертификат на 10 лет (обратите внимание что закрытые ключи не имеют срока жизни а сертификаты имеют);
  • -out rootCA.crt – получаемый сертификат.

Итак, я создал пару ключей:

$ ls -l root*
-rw-r--r-- 1 alex alex 1306 сен  9 11:26 rootCA.crt
-rw------- 1 alex alex 1874 сен  9 11:19 rootCA.key

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

Создаю файл порядковых номеров для выпуска сертификатов, в нём следует указать два нуля:

$ nano rootCA.srl
00

Дальше нужно передать корневой сертификат на клиентские компьютеры и установить его в доверенные корневые центры сертификации. Я забираю корневой сертификат по протоколу sftp, показывать этот процесс думаю не нужно.

Установка корневого сертификата на Winows

Устанавливаются сертификаты на Windows очень просто. Дважды щелкаем по сертификату и открывается окно с его свойствами. Дальше нажимаем на кнопку “Установить сертификат“:

Установка сертификата на Windows 10

Установка сертификата на Windows 10

Установить можно для текущего пользователя или для всего компьютера. Так как у меня это тестовая установка, я выберу “Текущий пользователь“:

Установка сертификата на Windows 10 для Текущего пользователя

Установка сертификата на Windows 10 для Текущего пользователя

После нажатия на кнопку “Далее” нужно выбрать “Поместить все сертификаты в следующее хранилище” и нажать кнопку “Обзор“:

Установка сертификата на Windows 10. Выбор хранилища

Установка сертификата на Windows 10. Выбор хранилища

В открывшемся окне выбираем “Доверенные корневые центры сертификации“:

Установка сертификата на Windows 10. Выбор хранилища

Установка сертификата на Windows 10. Выбор хранилища

Затем нажимаем кнопку “ОК“, “Далее” и “Готово“.

И наконец, подтверждаем установку сертификата:

Подтверждение установки корневого сертификата

Подтверждение установки корневого сертификата

И затем нужно будет ещё раз нажать кнопку “ОК“.

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

Просмотр свойств сертификата

Просмотр свойств сертификата

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

Теперь, с помощью корневых ключей мы можем создать ключи для домена. У меня будет домен – site.sysadminium.ru.

Утилита openssl не может без конфигурационного файла добавлять некоторые поля. А нам нужно будет в сертификат добавить поле subjectAltName. Без этого поля браузер Chrome не доверяет сертификату.

Поэтому вначале я создаю следующий конфиг:

$ nano sysadminium.cnf
[ req ]
default_bits = 2048
distinguished_name  = req_distinguished_name
req_extensions     = req_ext

[ req_distinguished_name ]
countryName                  = Country Name (2 letter code)
countryName_default          = RU
stateOrProvinceName          = State or Province Name (full name)
stateOrProvinceName_default  = Moscow
localityName                 = Locality Name (eg, city)
localityName_default         = Moscow
organizationName             = Organization Name (eg, company)
organizationName_default     = Sysadminium
commonName                   = Common Name (eg, YOUR name or FQDN)
commonName_max               = 64
commonName_default           = site.sysadminium.ru

[ req_ext ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName          = DNS:site.sysadminium.ru

В блоке [ req ] – настраивается команда req:

  • default_bits = 2048 – длина ключа по умолчанию.
  • distinguished_name = req_distinguished_namedistinguished_name – это поля в сертификате, например Common Name, organizationName и другие. Для этих полей мы создадим блок req_distinguished_name ниже.
  • req_extensions = req_ext – расширение для req, здесь мы можем добавить дополнительные поля в сертификат. А в этом параметре мы просто указываем что ниже будет блок req_ext с дополнительными полями.

Блок [ req_distinguished_name ] – служит для конфигурации полей сертификата.

А блок в блок [ req_ext ] – можно добавить некоторые расширяющие свойства сертификата:

  • basicConstraints = CA:FALSE – полученные сертификаты нельзя будет использовать как центр сертификации. Другими словами, забираем у сертификатов для доменов право создавать дочерние сертификаты.
  • keyUsage = nonRepudiation, digitalSignature, keyEncipherment – созданный ключ будет иметь следующие свойства: неотказуемость (если ключом что-то подписали то аннулировать подпись невозможно), цифровая подпись (сертификат можно использовать в качестве цифровой подписи), шифрование ключей (сертификат можно использовать для симметричного шифрования). Об этих свойствах на английском хорошо написано здесь.
  • subjectAltName = DNS:site.sysadminium.ru – а здесь указываем поле subjectAltName и его значение. Как я уже говорил, без этого поля браузер Chrome не доверяет сертификату.

Создаю закрытый ключ для домена

Теперь я создам закрытый ключ для домена:

alex@deb-11:~$ openssl genpkey -algorithm RSA -out site.key
   .......................................+++++
   .............+++++

Создаю файл запроса для домена

С помощью закрытого ключа для домена создаю файл запроса на сертификат:

$ openssl req -new -key site.key -config sysadminium.cnf -reqexts req_ext -out site.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [RU]:
State or Province Name (full name) [Moscow]:
Locality Name (eg, city) [Moscow]:
Organization Name (eg, company) [Sysadminium]:
Common Name (eg, YOUR name or FQDN) [site.sysadminium.ru]:

Обратите внимание, все параметры были использованы из конфига, вручную мне не пришлось ничего вписывать.

Создаю сертификат для домена

Теперь, с помощью корневых ключей, подписываю файл запроса и создаю сертификат для домена:

$ openssl x509 -req -days 730 -CA rootCA.crt -CAkey rootCA.key -extfile sysadminium.cnf -extensions req_ext -in site.csr -out site.crt

Разберу команду:

  • x509 – создание сертификата путём подписывания;
  • -req – если подписывать будем файл запроса, то нужно использовать эту опцию;
  • -days 730 – сертификат я делаю на 2 года;
  • -CA rootCA.crt -CAkey rootCA.key – указываю корневую пару ключей;
  • -extfile sysadminium.cnf – файл, содержащий расширения сертификатов. Без этой опции расширения из файла запроса не попадут в сертификат;
  • -in site.csr -out site.crt – файл запроса и файл сертификата.

После проделанного у меня появились три файла связанных с сертификатом для домена:

$ ls -l site.*
-rw-r--r-- 1 alex alex 1257 сен  9 14:27 site.crt # сертификат
-rw-r--r-- 1 alex alex 1098 сен  9 14:17 site.csr # запрос
-rw------- 1 alex alex 1704 сен  9 14:15 site.key # ключ

Перенастраиваю apache2

Кинем сертификат и ключ в следующие каталоги:

$ sudo cp site.crt /etc/ssl/certs/
$ sudo cp site.key /etc/ssl/private/

И настроим apache2 на использование этих ключей:

$ sudo nano /etc/apache2/sites-enabled/default-ssl.conf
   SSLCertificateFile      /etc/ssl/certs/site.crt
   SSLCertificateKeyFile /etc/ssl/private/site.key

Применим изменение конфига apache2:

$ sudo systemctl reload apache2

И проверим как открывается наш сайт с клиента на котором установлен наш корневой сертификат:

Браузер доверяет сертификату сайта

Браузер доверяет сертификату сайта

Как видим, браузер начал доверять нашему тестовому сайту.

Смотрим на сертификат из Chrome

Нажмите на замочек возле адреса сайта (он виден на скриншоте выше). Дальше нажмите на “Безопасное подключение” и на “Действительный сертификат“. Откроются свойства сертификата:

Свойства сертификата из Chrome

Свойства сертификата из Chrome

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

Например, помните мы указывали алгоритм ассиметричного шифрования – RSA:

Алгоритм подписи сертификатов

Алгоритм подписи сертификатов

А помните, мы создали файл для серийных номеров выпускаемых сертификатов и записали в нём “00”. Давайте посмотрим на серийный номер нашего сертификата:

Серийный номер сертификата

Серийный номер сертификата

Можем посмотреть на сам открытый ключ:

Открытый ключ

Открытый ключ

А в расширениях видно альтернативное имя, которое так нужно браузеру Chrome для доверия к сертификату:

Альтернативное имя

Альтернативное имя

Раньше браузеры проверяли только CN:

Common Name

Common Name

А сейчас, если есть альтернативное имя, то они даже не смотрят в параметр Common Name. А Chrome требует это поле и вообще перестал смотреть на Common Name.

Настраиваю веб-сервер Nginx

Ну и наконец я покажу как настроить Nginx на использование наших сертификатов.

Для начала выключу apache2 и установлю nginx:

$ sudo systemctl stop apache2.service
$ sudo apt install nginx

И настрою его. Нужно рас-комментировать и поменять значения некоторых полей:

$ sudo nano /etc/nginx/sites-enabled/default
   listen 443 ssl default_server;
   listen [::]:443 ssl default_server;
   ssl_certificate     /etc/ssl/certs/site.crt;
   ssl_certificate_key /etc/ssl/private/site.key;

Применю изменения:

$ sudo systemctl reload nginx

И наконец, проверю доверие к ssl-сертификату сайта, обновив страничку в браузере.

Браузер доверяет сертификату сайта

Браузер доверяет сертификату сайта

Здесь apache2 создал свою индексную страничку, поэтому оба веб сервера (nginx и apache2) используют одну и туже страницу. Но как вы помните, я отключил apache2, так что у меня точно отвечает nginx.

Итог

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

  • rootCA.key – корневой закрытый ключ. Используется для создания дочерних сертификатов. Обычно лежит на сервере центра сертификации и зашифрован с помощью пароля.
  • rootCA.srl – корневой сертификат. Используется для создания дочерних сертификатов. Его нужно распространить на все ваши компьютеры и установить в хранилище корневых сертификатов. Его тоже можно защитить паролем, но я этого не делал.
  • site.key – ключ для домена (для веб сервера). Его можно было сгенерировать на веб-сервере и не передавать на сервер центра сертификации. Но в моём примере был один сервер и для веб-сервера и для центра сертификации.
  • site.csr – файл запроса на сертификат для домена. Его также можно было сделать на веб-сервере и передать в центр сертификации, чтобы там выпустить сертификат.
  • site.crt – сертификат для домена (для веб сервера). Этот файл создаётся из файла запроса на сертификат с помощью пары корневых ключей.

Также я показал, как использовать созданные сертификаты для настройки веб серверов: apache2 и nginx.

Если вы интересуетесь настройками веб-серверов на Linux, то возможно вам также понравится эта статья:

  • Nginx. Reverse Proxy

Сводка

Создаём свой центр сертификации на Linux

Имя статьи

Создаём свой центр сертификации на Linux

Описание

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

Вам необходимо воспользоваться любым из способов:

При помощи графического интерфейса

Установите сертификат в зависимости от формата вашего ключа:

Установка .pfx (экспортированный ключ с закрытой частью)

Необходимо:

  1. Открыть «Инструменты КриптоПро», вкладка «Сертификаты»;
  2. Нажать «Импортировать ключи».
    По умолчанию при импорте ключ копируется на ваш ПК. Если требуется использовать сертификат на съёмном носителе, его нужно скопировать на носитель и после установить;
  3. Перейти в место хранения сертификата, выбрать его и нажать «Открыть»;
  4. Ввести пароль от сертификата, заданный при выгрузке, и нажать «ОК»;
  5. В новом окне можно задать пароль на сертификат. Если пароль не нужен, оставить поля пустыми и нажать «ОК»;
  6. Сертификат появится в списке сертификатов.

Установка .cer (только открытая часть)

Необходимо:

  1. Открыть «Инструменты КриптоПро», вкладка «Сертификаты»;
  2. Нажать «Показать расширенные» и поставить галку «Отключить автовыбор хранилища (использовать текущее)».
    Если галку не ставить, «КриптоПро» автоматически будет определять хранилище для сертификатов. Личные сертификаты попадут в хранилище «Другие пользователи»;
  3. Перейти в выпадающем меню в нужное хранилище сертификатов и нажать «Установить сертификаты»;
  4. Перейти в место хранения сертификата, выбрать его и нажать «Открыть»;
  5. Окно закроется, на вкладке появится строка с установленным сертификатом.

Установка из .key (скопированные с носителя 6 файлов ключа)

Необходимо:

  1. Скопировать папку с файлами в папку локального хранения контейнеров «КриптоПро», по умолчанию «/var/opt/cprocsp/keys/имя_пользователя»;
  2. После переноса ключи автоматически появятся на вкладке «Контейнеры» в «Инструментах КриптоПро»;
  3. Выбрать на вкладке «Контейнеры» нужный сертификат и нажать «Установить сертификат». Появится сообщение «Сертификат был успешно установлен»;
  4. После установки сертификат появится на вкладке «Сертификаты».

Установка сертификата с токенафлэш-накопителя:

Необходимо:

  1. Подключить накопитель или токен к вашему ПК;
  2. В «Инструментах КриптоПро» перейти на вкладку «Контейнеры» и выбрать нужный контейнер на носителе;
  3. Нажать «Установить сертификат»;
  4. После установки сертификат появится на вкладке «Сертификаты».

Установка открытой части в контейнер закрытого ключа

Выполнить команду:

/opt/cprocsp/bin/amd64/certmgr -inst -inst_to_cont -ask-container -pin «пин-код токена» -file “путь к файлу сертификата”

Пример:

/opt/cprocsp/bin/amd64/certmgr -inst -inst_to_cont -ask-container -pin «12567» -file /path/to/certificate.cer

Установка корневых сертификатов и списков отзыва

Установка корневого сертификата удостоверяющего центра

Вам необходимо воспользоваться любым из способов:

Через терминал

Выполнить команду:

/opt/cprocsp/bin/amd64/certmgr -inst -cert -file ~/Загрузки/.cer -store uRoot

Через графический интерфейс

Необходимо:

  1. Открыть «Инструменты КриптоПро», нажать «Показать расширенные»;
  2. Поставить галку «Отключить автовыбор хранилища (использовать текущее)»;
  3. В выпадающем меню выбрать «Доверенные корневые центры сертификации»;
  4. Нажать «Установить сертификаты», в открывшемся меню найти файл сертификата центра сертификации и нажать «Открыть»;
  5. Может появиться сообщение-предупреждение о том, что установка корневых сертификатов несет риск безопасности. Нужно нажать «ОК»;
  6. Внизу окна появится сообщение «Установка завершена». Если его развернуть, появится информация о совершенном действии.

Установка списка отозванных сертификатов

Выполнить команду:

/opt/cprocsp/bin/amd64/certmgr -inst -crl -file ~/Загрузки/.crl

Установка цепочки промежуточных сертификатов

Выполнить команду:

/opt/cprocsp/bin/amd64/certmgr -inst -cert -file ~/Загрузки/.p7b -store CA

Сертификаты SSL используются для обеспечения безопасности в различных сферах. Самая распространенная — это просмотр веб-сайтов по протоколу HTTPS. Существует небольшое количество доверенных корневых сертификатов организаций, которые подписывают остальные сертификаты для всех сайтов. Эти доверенные сертификаты хранятся на каждом компьютере или смартфоне. И именно исходя из этого веб-браузер может понимать, что тому или иному сайту можно доверять.

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

Что нам понадобится?

Я хочу показать на примере как сделать сертификат доверенным в Ubuntu. Для этого можно создать свой центр сертификации CA с помощью EasyRSA, создать и подписать SSL сертификат, как это описано в статье про создание сертификатов OpenSSL. Далее использовать этот сертификат для домена localhost в Apache. Таким образом у вас получится три файла:

  • ca.crt — корневой сертификат центра сертификации;
  • localhost.crt — сертификат сайта подписанный центром сертификации;
  • localhost.key — ключ сертификата сайта.

Активируйте файл виртуального хоста Apache для сайта по умолчанию с помощью такой команды:

sudo a2ensite default-ssl

Далее откройте этот файл и найдите такие строки:

SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

Для параметра SSLCertificateFile надо передать путь к сертификату сайта, например, localhost.crt, а для SSLCertificateKeyFile — ключу сертификата сайта. Например, localhost.key. Если сертификаты находятся в папке /etc/apache/ssl, то конфигуация будет выглядеть вот так:

SSLCertificateFile /etc/apache/ssl/localhost.crt
SSLCertificateKeyFile /etc/apache/ssl/localhost.key

После этого нужно перезапустить Apache:

sudo systemctl restart apache2

Теперь у вас всё готово для того чтобы выполнить всё описанное ниже в своей системе.

1. Установка в системе

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

curl -I https://localhost

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

И так, у вас есть сертификат ca.crt. Для того чтобы система считала его доверенным, нужно скопировать его в папку /usr/local/share/ca-certificates:

cp ./ca.crt /usr/local/share/ca-certificates/losstca.crt

После этого необходимо выполнить такую команду:

sudo update-ca-certificates

После этого можно проверить что система воспринимает сертификат как доверенный выполнив команду curl:

Но этот способ будет работать только для тех программ, которые используют системное хранилище доверенных сертификатов. Веб-браузеры, такие как Firefox и Google Chrome имеют собственные хранилища сертификатов и не используют хранилище системы, поэтому в каждом браузере нужно импортировать сертификаты отдельно. Иначе вы будете получать такую ошибку:

Chrome, Firefox, Thunderbird используют nssdb для работы с сертификатами. Это значит что вы можете импортировать сертификаты как в графическом интерфейсе браузера, так и в терминале, с помощью утилиты certutil. Давайте рассмотрим как это сделать. Давайте рассмотрим как выполняется установка сертификата в Ubuntu.

2. Установка в Google Chrome

Для того чтобы добавить сертификат в Google Chrome или Chromium в графическом интерфейсе откройте настройки из главного меню:

Перейдите в Конфиденциальность и безопасность -> Безопасность -> Настроить сертификаты:

В открывшемся окне перейдите на вкладку Центры сертификации:

Здесь необходимо нажать кнопку Импорт и выбрать файл корневого сертификата:

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

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

В командной строке всё тоже довольно просто. Для работы с сертификатами вам понадобится пакет libnss3-tools, установите его с помощью команды:

sudo apt install libnss3-tools

База данных сертификатов Google Chrome находится в папке ~/.pki/nssdb. Вы можете посмотреть доступные сертификаты командой:

certutil -d ~/.pki/nssdb -L

Синтаксис команды для добавления сертификата следующий:

$ certutil -d путь/к/базе/данных -A -t «настройки_доверия» -n «имя» -i «/путь/к/файлу»

Обратите внимание на настройки доверия. Существует три группы атрибутов доверия:

  • Для SSL;
  • Для Email;
  • Для программного обеспечения и других объектов.

Каждая из групп может содержать такие атрибуты:

  • p — валидный пир;
  • P — доверенный пир;
  • c — валидный центр сертификации;
  • C — доверенный центр сертификации;
  • T — доверенный центр сертификации для авторизации клиентов.

Для SSL сертификатов можно достаточно такой последовательности «TC,,». То есть атрибуты T и C для SSL и ничего для всего остального. Вся команда для импорта ca.crt будет выглядеть вот так:

certutil -d sql:~/.pki/nssdb -A -t "TC,," -n "Losst CA" -i ./ca.crt

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

certutil -d sql:~/.pki/nssdb -L

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

3. Установка в Firefox

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

Далее перейдите в раздел Защита и безопасность и найдите там пункт Сертификаты. Здесь надо нажать кнопку Посмотреть сертификаты:

В открывшемся окне перейдите на вкладку Центры сертификации и нажмите кнопку Импортировать, для того чтобы добавить свой сертификат. Далее выберите файл сертификата и установить настройки доверия. Нужно отметить как минимум первую галочку — Доверять при идентификации веб-сайтов:

На этом установка SSL сертификата в Firefox завершена. Если вы хотите добавить сертификат в командной строке, то необходимо добавить его во все профили. Профили находятся в папке ~/.mozilla/firefox/. В данном примере, есть два профиля и только один из них заполнен:

Файлы nssdb находятся прямо в папке профиля, поэтому можно просто передать эту папку в certutil. Например, для просмотра списка сертификатов выполните:

certutil -d ~/.mozilla/firefox/k9z8sttc.default-release/ -L

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

certutil -d ~/.mozilla/firefox/k9z8sttc.default-release/ -A -t "TC,," -n "Losst" -i ./ca.crt

После этого полученный сертификат появится в списке.

Обратите внимание, что такой способ работает для Firefox, установленного как .deb пакет. Если у вас Firefox, установленный с помощью пакетного менеджера snap, то этот метод может не работать.

Для Firefox есть ещё один способ добавить сертификаты из системы автоматически без использования certutil. Это загрузка сертификатов с помощью политики. Возможно вы слышали про опцию security.enterprise_roots.enabled в about:config. Она работает только в Windows и MacOS но не в Linux. Однако, можно создать файл политики папке /usr/lib/firefox/distribution/ и там прописать какие сертификаты следует загрузить. По умолчанию Firefox будет искать сертификаты таких каталогах:

  • /usr/lib/mozilla/certificates
  • /usr/lib64/mozilla/certificates
  • ~/.mozilla/certificates

В самом файле надо указать имена файлов сертификатов если они находятся в одной из этих папок или полный путь к ним. Например, скопируйте сертификат CA в папку /usr/lib/mozilla/certificates:

cp ~/easy-rsa-ca/ca.crt /usr/lib/mozilla/certificates/losst.crt

Поддерживаются как ASCII сертификаты (CRT/PEM), так и двоичные (DER). Затем создайте файл политики со следующем содержимым:

sudo vi /usr/lib/firefox/distribution/policies.json

{
    "policies": {
        "ImportEnterpriseRoots": true,
        "Certificates": {
            "Install": [
                "losst.crt",
            ]
       }
    }
}

Перезапустите браузер и после этого Firefox должен начать видеть ваш сертификат.

Выводы

В этой статье мы рассмотрели как установить сертификаты в Ubuntu, а также как добавить их в самые популярные браузеры. Как видите, универсального решения, не существует, но всё можно настроить.

Creative Commons License

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

Содержание

  1. Добавляем корневой доверенный сертификат в Linux
  2. Установка корневого сертификата в Linux
  3. Добавить корневой доверенный сертификат для браузеров Mozilla, Chrome
  4. Как добавить доверенный сертификат в Linux?
  5. Как добавить доверенный центр сертификации в Linux?
  6. Куда мне помещать сертификаты в Linux?
  7. Как установить файл .CER в Linux?
  8. Как импортировать доверенный сертификат?
  9. Как просмотреть сертификаты в Linux?
  10. Как установить самоподписанный сертификат SSL в Linux?
  11. Как загрузить сертификат SSL в Linux?
  12. Как включить SSL на сервере Linux?
  13. Что такое SSL-сертификат в Linux?
  14. В чем разница между CER и CRT?
  15. 🧡 Как установить сертификаты CA на сервере Ubuntu
  16. Что вам нужно
  17. Установка
  18. Копирование файлов
  19. Конвертирование из PEM
  20. Обновите свой сертификат
  21. 1С и Linux
  22. пятница, 14 декабря 2018 г.
  23. Установка сертификатов используя КриптоПРО в Linux

Добавляем корневой доверенный сертификат в Linux

В этой статье мы покажем, как добавить (установить) новый сертификат в список доверенных корневых сертификатов в Linux.

Например, вы используете на своем сайте самоподписанный SSL/TLS сертификат и не хотите, чтобы на клиентах при открытии сайта появлялась ошибка SEC_ERROR_UNKNOWN_ISSUER.

Или это может быть самоподписанный сертификат с сайта IIS на Windows.

Чтобы проверить, что ваш хост Linux не может проверить (и соответственно не доверяет) SSL сертификату на определенном сайте, выполните команду:

$ curl –I https://www.sberbank.ru

В данном случае нам нужно добавить корневой центр сертификации этого сайта в список доверенных корневых сертификатов Linux.

Установка корневого сертификата в Linux

Для обновления хранилища доверенных сертификатов в Linux вам нужен файл сертификата в формате PEM с расширением файла .crt. PEM сертификат представляет собой текстовый файл в формате base64, который содержит в начале файла строку —-BEGIN CERTIFICATE—- и в конце ——END CERTIFICATE——.

Если ваш файл сертификата в формате DER, вы можете конвертировать его в PEM формат с помощью утилиты openssl:

$ openssl x509 -in my_trusted_sub_ca.der -inform der -out my_trusted_sub_ca.cer

Сначала рассмотрим, как добавит корневой сертификат вашего CA в доверенные в дистрибутивах Linux на базе DEB (Ubuntu, Debian, Mint, Kali Linux).

Скопируйте файлы ваших сертификаты в хранилище сертификатов в каталог usr/local/share/ca-certificates/:

$ sudo cp my_trusted_sub_ca.crt /usr/local/share/ca-certificates/
$ sudo cp my_trusted_root_ca.crt /usr/local/share/ca-certificates/

Обновите хранилище сертификатов командой:

$ sudo update-ca-certificates -v

$ sudo apt-get install -y ca-certificates

Если сертификаты успешно добавлены, появится сообщение о том, что сертфикат скопирован в /etc/ssl/certs/:

$ sudo dpkg-reconfigure ca-certificates

Выберите из списка сертификаты, которые нужно добавить в доверенные.

В Linux список доверенных сертификатов содержится в файле /etc/ssl/certs/ca-certificates.crt. Обе рассмотренные выше команды обновят этот файл и добавят в информацию о новых сертификатах.

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

$ awk -v cmd=’openssl x509 -noout -subject’ ‘ /BEGIN/;‘

Укажите часть Common Name вашего сертификата вместо YourCASubj для поиска в хранилище по subject.

Вы можете убедиться, что ваша ОС доверяет сертификату с помощью команду:

$ openssl verify my_trusted_sub_ca.crt

Теперь проверьте, что на сайте используется доверенный SSL сертификат с помощью curl:

$ curl –I https://www.sberbank.ru

Все ок, сертификат доверенные < HTTPOnly: secure >.

$ sudo mkdir /usr/share/ca-certificates/extra

Чтобы удалить сертификат, удалите ваш crt файл:

$ sudo rm /usr/local/share/ca-certificates/yourcert.crt

И обновите хранилище:

$ sudo update-ca-certificates —fresh

В дистрибутивах Linux на базе RPM (CentOS, Oracle, RHEL, Rocky Linux, Fedora) для добавления сертификата в доверенные:

  1. Установите пакет ca-certificates: # yum install ca-certificates
  2. Скопируйте файл сертификата в каталог /etc/pki/ca-trust/source/anchors/: # cp mycert.crt /etc/pki/ca-trust/source/anchors/
  3. Обновите хранилище:
    # update-ca-trust force-enable
    # update-ca-trust extract

Добавить корневой доверенный сертификат для браузеров Mozilla, Chrome

Теперь все системные утилиты будут доверять сайтам, использующим данный CA. Но это не повлияет на веб браузеры Mozilla Firefox или Google Chrome. Они по-прежнему будут показывать предупреждение о недоверенном сертификате.

Дело в том, что браузеры Firefox, Chromium, Google Chrome, Vivaldi и даже почтовый клиент Mozilla Thunderbird не используют системное хранилище сертификатов Linux. Хранилище сертификатов для этих программ находится в директории пользователя в файле cert8.db (для Mozilla) или cert9.db (для Chromium и Chrome). Для обновления этих хранилищ сертификатов используется утилита certutil из пакета libnss3-tools.

$ sudo apt install libnss3-tools

Теперь выполните следующие скрипты для добавления ваших сертификатов в хранилище через NSS:

#!/bin/bash
certfile=»my_rusted_root_ca.crt»
certname=»My Root CA1″
for certDB in $(find

После запуска скрипта, сайтам с данным CA будут доверять все браузеры.

Источник

Как добавить доверенный сертификат в Linux?

Как добавить доверенный центр сертификации в Linux?

Линукс (Убунту, Дебиан)

  1. Скопируйте свой ЦС в каталог / usr / local / share / ca-Certificates /
  2. Используйте команду: sudo cp foo.crt /usr/local/share/ca-certificates/foo.crt.
  3. Обновите хранилище CA: sudo update-ca-Certificates.

Куда мне помещать сертификаты в Linux?

Расположение по умолчанию для установки сертификатов: / и т.д. / SSL / сертификаты . Это позволяет нескольким службам использовать один и тот же сертификат без чрезмерно сложных прав доступа к файлам. Для приложений, которые можно настроить на использование сертификата CA, вам также следует скопировать файл / etc / ssl / certs / cacert.

Как установить файл .CER в Linux?

  1. Перейдите в / usr / local / share / ca-Certificates /
  2. Создайте новую папку, например sudo mkdir school.
  3. Скопируйте файл. crt в папку школы.
  4. Убедитесь, что разрешения в порядке (755 для папки, 644 для файла)
  5. Запустите «sudo update-ca-Certificates»

Как импортировать доверенный сертификат?

Перейдите к Сертификатам (локальный компьютер);

  1. выберите хранилище доверенных корневых центров сертификации, чтобы импортировать сертификат;
  2. щелкните правой кнопкой мыши магазин и выберите «Все задачи»> «Импорт»;
  3. Следуйте указаниям мастера и предоставьте имеющийся у вас файл сертификата.

Как просмотреть сертификаты в Linux?

Вы можете сделать это с помощью следующей команды: sudo update-ca-сертификаты . Вы заметите, что команда сообщает об установленных сертификатах, если это необходимо (в современных установках может уже быть корневой сертификат).

Как установить самоподписанный сертификат SSL в Linux?

Выполните следующую команду, чтобы установить необходимые пакеты для OpenSSL, набора инструментов SSL с открытым исходным кодом.

  1. Пользователи Debian / Ubuntu: $ sudo apt-get update $ sudo apt-get upgrade $ sudo apt-get install openssl $ mkdir / etc / ssl / localcerts.
  2. Пользователи CentOS / Fedora: $ sudo yum install openssl $ sudo mkdir / etc / ssl / localcerts.

Как загрузить сертификат SSL в Linux?

Как установить SSL-сертификат на серверы Linux, на которых нет Plesk.

  1. Первым и самым важным шагом является загрузка сертификата и важных файлов ключей. …
  2. Войдите на сервер. …
  3. Дайте Root Password.
  4. На следующем шаге можно увидеть /etc/httpd/conf/ssl.crt. …
  5. Затем переместите ключевой файл также в /etc/httpd/conf/ssl.crt.

Как включить SSL на сервере Linux?

Чтобы включить HTTPS в Apache

  1. Убедитесь, что файл ssl. conf находится в $ CPITBASE / 3rd_party / apache2 / etc / httpd / conf. d. …
  2. Убедитесь, что файл mod_ssl.so находится в каталоге $ CPITBASE / 3rd_party / apache2 / etc / httpd / modules. Если нет, скопируйте его из пути / etc / httpd / modules.

Что такое SSL-сертификат в Linux?

Согласно GlobalSign.com сертификат SSL небольшой файл данных, который в цифровом виде связывает криптографический ключ с данными организации. При установке на веб-сервере он активирует замок и протокол https и обеспечивает безопасное соединение веб-сервера с браузером.

В чем разница между CER и CRT?

CER — это сертификат X. Сертификат 509 в двоичной форме в кодировке DER. CRT — это двоичный сертификат X. 509, инкапсулированный в текстовой кодировке (base-64).

Источник

🧡 Как установить сертификаты CA на сервере Ubuntu

Возникли проблемы с установкой и распознаванием сертификатов CA на Ubuntu сервере?

Узнайте, как это делается с помощью нескольких быстрых команд.

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

Для тех, кому поручено управление сертификатами CA, вы знаете, насколько это сложно.

Надеюсь, мы сможем успокоить ваш разум (и нервы).

Почему? Потому что управление этими сертификатами на Ubuntu Server не должно быть таким уж сложным.

Давайте сделаем это простым способом.

Я собираюсь продемонстрировать, как установить сертификаты корневого CA на Ubuntu Server 18.04.

Для тех, кто не уверен о чем речь, корневым сертификатом является тот, который был подписан доверенным центром сертификации (например, приобретенным у подобных Globalsign).

У вас могут быть приложения или службы, установленные на сервере Ubuntu, для правильной работы которых требуются авторизованные SSL-соединения.

Такие приложения, как Apache, зависят от CA для обслуживания HTTPS-соединений.

Как только у вас есть CA (и он распознан), вы можете настроить эти приложения и службы на использование файлов сертификатов.

Что вам нужно

Чтобы это работало, вам нужно следующее:

  • Запущенный Ubuntu Server 18.04.
  • Корневой сертификат, приобретенный у доверенного CA
  • Учетная запись пользователя с привилегиями sudo.

Со всем этим наготове, пришло время для установки.

Установка

Первое, что нужно сделать, это установить пакет ca-Certificates, инструмент, который позволяет приложениям на основе SSL проверять подлинность соединений SSL.

Чтобы установить это программное обеспечение, откройте окно терминала и введите команду:

Копирование файлов

Затем нам нужно скопировать этот купленный файл .cer или .crt в нужное место.

Начиная работать с этим файлом сертификата на сервере Ubuntu скопируйте его в нужный каталог с помощью команды:

Где CERTIFICATE – это имя файла CA, который нужно скопировать.

Конвертирование из PEM

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

Для этого вы должны использовать команду openssl следующим образом:

Где CERTIFICATE – это имя вашего файла сертификата.

После преобразования файла PEM в формат .crt его можно скопировать в нужный каталог (как показано выше).

Обновите свой сертификат

Последний шаг – обновить ваши сертификаты.

С помощью одной команды вы можете обновить сертификаты и сгенерировать файл ca-certificate.crt (который представляет собой объединенный список всех установленных сертификатов).

Команда для запуска:

И это все, что нужно сделать.

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

Источник

1С и Linux

Пишу для себя, чтобы не забыть как делал. 95 % рабочее. На комментарии отвечаю, когда увижу.

пятница, 14 декабря 2018 г.

Установка сертификатов используя КриптоПРО в Linux

Для установки в uRoot админиских прав больше не нужно. Ради этого их с mRoot и разделили. Работает так: если ставить в uRoot — видно будет только текущему пользователю, даже если он root, но права не нужны и будет диалог с предупреждением. Если ставить в mRoot, то нужны права, видно будет всем и предупреждения не будет.

Установка корневого сертификата удостоверяющего центра:
$ /opt/cprocsp/bin/amd64/certmgr -inst -cert -file

/Загрузки/ .cer -store uRoot
$ /opt/cprocsp/bin/amd64/certmgr -inst -cert -file

/Загрузки/guts_2012.cer -store uRoot

Просмотор корневых сертификатов:
$ /opt/cprocsp/bin/amd64/certmgr -list -store uRoot

Удалить:
$ /opt/cprocsp/bin/amd64/certmgr -delete -store uRoot
$ /opt/cprocsp/bin/amd64/certmgr -delete -all -store uRoot

Установка списка отозванных сертификатов:
$ /opt/cprocsp/bin/amd64/certmgr -inst -crl -file

Установка цепочки промежуточных сертификатов:
$ /opt/cprocsp/bin/amd64/certmgr -inst -cert -file

/Загрузки/ .p7b -store uca

$ /opt/cprocsp/bin/amd64/certmgr -inst -cert -file

/Загрузки/fk_2012.cer -store uca

Просмотор промежуточных сертификатов:
$ /opt/cprocsp/bin/amd64/certmgr -list -store uca

Удалить:
$ /opt/cprocsp/bin/amd64/certmgr -delete -store uca

Установка сертификата с рутокена:
$ /opt/cprocsp/bin/amd64/certmgr -inst -cont ‘ ‘ -store uMy

Установка сертификата из контейнера:
$ /opt/cprocsp/bin/amd64/certmgr -inst -store uMy -cont ‘\.HDIMAGEtest’

Просмотор личных сертификатов:
$ /opt/cprocsp/bin/amd64/certmgr -list -store uMy

Просмотр контейнеров, рутокенов
$ /opt/cprocsp/bin/amd64/csptest -keyset -enum -verifycontext -fqcn

Экспорт в файл сертификата из хранилища
$ /opt/cprocsp/bin/amd64/certmgr -export -cert -dn «CN=» -dest ‘cert.crt’
$ /opt/cprocsp/bin/amd64/cryptcp -copycert -dn CN=’Фёдорова Галина Борисовна’ -df

$ CP_PRINT_CHAIN_DETAIL=1 /opt/cprocsp/bin/amd64/cryptcp -copycert -dn CN=’Фёдорова Галина Борисовна’ -df

$ CP_PRINT_CHAIN_DETAIL=1 /opt/cprocsp/bin/amd64/cryptcp -copycert -dn CN=’Фёдорова Галина Борисовна’ -df

$ /opt/cprocsp/bin/amd64/cryptcp -verify -f cert.crt cert.txt
$ /opt/cprocsp/bin/amd64/cryptcp -verify -u

/cert.txt
$ /opt/cprocsp/bin/amd64/cryptcp -verify -u

/cert.txt | iconv -f cp1251
$ /opt/cprocsp/bin/amd64/cryptcp -verify -errchain -f

/cert.txt | iconv -f cp1251

Установка сертификатов zakupki.gov.ru

$ /opt/cprocsp/bin/amd64/certmgr -inst -cert -file ‘Сертификат Головного удостоверяющего центра.cer’ -store uRoot
$ /opt/cprocsp/bin/amd64/certmgr -inst -cert -file ‘Сертификат Удостоверяющего центра Федерального казначейства.cer’ -store uRoot

$ /opt/cprocsp/bin/amd64/certmgr -inst -cert -file root2013.cer -store uRoot

$ CP_PRINT_CHAIN_DETAIL=1 /opt/cprocsp/bin/amd64/cryptcp -copycert -dn CN=’Фёдорова Галина Борисовна’ -df

Источник

install-RU-CA-certificates-linux-000.pngНачиная с сентября 2022 года многие российские сервисы начинают переходить на TLS-сертификаты, выпущенные российским удостоверяющим центром. В связи с чем пользователи могут испытывать проблемы при доступе к таким сайтам. Чтобы этого избежать, нам потребуется установить в систему корневые сертификаты удостоверяющего центра, что позволит системе и браузерам доверять выпущенным им сертификатам. В данной статье мы расскажем, как это сделать в среде операционных систем Ubuntu или Debian, а также в любых основанных на них дистрибутивах.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

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

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

Установка сертификатов в системное хранилище

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

cd ~

И выполним команды:

wget  https://gu-st.ru/content/lending/russian_trusted_root_ca_pem.crt
wget https://gu-st.ru/content/lending/russian_trusted_sub_ca_pem.crt

Это официальные ссылки для скачивания сертификатов с портала Госуслуг.

Затем повысим права до суперпользователя:

sudo -s

В Debian, если не установлен sudo, используйте:

su -

Затем создадим директорию:

mkdir /usr/local/share/ca-certificates/russian_trusted

И скопируем в нее сертификаты:

cp russian_trusted_root_ca_pem.crt russian_trusted_sub_ca_pem.crt /usr/local/share/ca-certificates/russian_trusted

Затем установим их командой:

update-ca-certificates -v

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

install-RU-CA-certificates-linux-001.pngТеперь можем проверить, что система доверяет сертификатам выпущенным данным УЦ, для этого попробуем соединиться с сайтом Сбербанка, который одним из первых перешел на отечественные сертификаты:

wget -qS --spider --max-redirect=0 https://www.sberbank.ru

Если вы увидите следующий вывод, то все в порядке:

install-RU-CA-certificates-linux-002.pngЧасть строки HttpOnly; secure указывает на то, что мы успешно установили защищенное соединение с сайтом.

Установка сертификатов в Mozilla Firefox

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

install-RU-CA-certificates-linux-003.pngТеперь проблем в этом браузере не возникнет, для проверки посетим тот же сайт Сбербанка.

install-RU-CA-certificates-linux-004.pngНа приведенном скриншоте видно, что сайт действительно использует сертификат от Минцифры, также обратите внимание на аббревиатуру ECDHE ниже, которая обозначает, что используются несохраняемые одноразовые сеансовые ключи на основе протокола Диффи-Хеллмана на эллиптических кривых.

Установка сертификатов в Chromium и основанные на нем браузеры

Также, как и Firefoх, Chromium и основанные на нем браузеры не используют системное хранилище и требуют отдельной установки сертификатов. Мы будем рассматривать установку на примере Chromium, в других браузерах путь к настройкам может отличаться. Переходим в Настройки — Конфиденциальность и безопасность — Безопасность — Настроить сертификаты. Затем на закладке Центры сертификации производим импорт сертификатов.

install-RU-CA-certificates-linux-005.pngЗатем точно также можем посетить сайт Сбербанка и убедиться, что сертификаты установлены успешно.

install-RU-CA-certificates-linux-006.pngКак видим, установить российские корневые сертификаты в Linux достаточно несложно. При этом вам не обязательно устанавливать их во все хранилища, можно обойтись только необходимыми, исходя из рабочих потребностей.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Понравилась статья? Поделить с друзьями:
  • Как установить свое разрешение экрана windows 10 amd
  • Как установить сертификат pem в windows 10
  • Как установить расширение для видео hevc windows 10
  • Как установить свернуть все окна на панель задач windows 10
  • Как установить сертификат isrg root x1 на windows xp