- Обновление корневых сертификатов на Linux
- Установка из репозитория
- Загрузка пакета с сертификатами
- Установка вручную
- Как заставить Ubuntu доверять новому корневому сертификату неинтерактивно?
- 2 ответа 2
- Работа с КриптоПро на linux сервере
- Ссылки
- Лицензия
- Корневые сертификаты
- Сертификаты
- Список установленных сертификатов
- Добавление реального сертификата
- Добавление реального сертификата с привязкой к закрытому ключу и возможностью подписывать документы
- Способ с дискетой или флешкой
- С жесткого диска
- Проверка успешности установки закрытого ключа
- Добавление тестового сертификата
- Удаление сертификата
- Проверка сертификата
- Просмотр всех атрибутов сертификата
- Экспорт сертификатов на другую машину
- Подписание документа ЭЦП
- Проверка подписи ЭЦП
- Получение исходного файла
- Вики IT-KB
- Инструменты пользователя
- Инструменты сайта
- Боковая панель
- Добавление в Linux корневых сертификатов X.509 локального корпоративного Центра сертификации
- Обсуждение
Обновление корневых сертификатов на Linux
От корневых сертификатов в системе может зависеть правильная работа при обращении к ресурсам, которые работают по зашифрованному каналу связи. Если данные сертификаты устареют, мы можем столкнуться с рядом проблем:
- Не открываются или выдают предупреждение безопасности некоторые (или все) сайты, работающие по https.
- Некорректная работа отдельных приложений.
- Ошибки при подключении по ssh.
Это пример ошибок, который не претендует на свою полному. Чаще всего, проблемы встречаются на системах, снятых с обслуживания.
Установка из репозитория
Самый простой способ, который нужно попробовать, установить сертификаты из официального репозитория системы. В зависимости от ее типа, наши команды будут немного отличаться.
а) для систем на базе DEB (Debian, Ubuntu, Mint):
apt install ca-certificates
б) для систем на базе RPM (Rocky Linux, CentOS):
yum install ca-certificates
Если нам повезет и в репозитории будут обновленные корневые центры, наша работа закончена. Иначе, устанавливаем сертификаты вручную.
Загрузка пакета с сертификатами
Установка из репозитория может не дать нужного эффекта, если в нем находятся не самые свежие сертификаты или наша система сильно устарела или не имеет выхода в Интернет.
В этом случае нам нужно загрузить пакет с корневыми сертификатами вручную. Разберем пример на системе Ubuntu. В официальном репозитории или в поисковой системе находим пакет для загрузки, например, по ссылке ftp.ru.debian.org/debian/pool/main/c/ca-certificates копируем ссылку на файл с последней версией сертификатов, и загружаем его на наш компьютер:
Полученный пакет устанавливаем в системе:
dpkg -i ca-certificates_20210119_all.deb
И обновляем корневые сертификаты:
Установка вручную
Выше рассмотрены самые удобные способы обновления корневых сертификатов. Но мы можем столкнуться с ситуацией, когда в предоставляемых официальных пакетах не окажется обновленного сертификата. Например, на момент написания данной инструкции у систем на базе Deb не оказалось нового сертификата для Let’s Encrypt, а старый закончил свое действие 30 сентября 2021 года.
В данном случае, мы можем установить любой нужный нам сертификат руками. Для этого скачала находим его и копируем — приведем пример с Let’s Encrypt. На странице letsencrypt.org/ru/certificates мы можем увидеть ссылки на корневые сертификаты. Допустим, нам нужен Let’s Encrypt Authority X3 (Signed by ISRG Root X1), который доступен по ссылке letsencrypt.org/certs/letsencryptauthorityx3.pem.txt. Копируем последовательность и создаем файл на компьютере:
——BEGIN CERTIFICATE——
MIIFjTCCA3WgAwIBAgIRANOxciY0IzLc9AUoUSrsnGowDQYJKoZIhvcNAQELBQAw
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTYxMDA2MTU0MzU1
WhcNMjExMDA2MTU0MzU1WjBKMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
RW5jcnlwdDEjMCEGA1UEAxMaTGV0J3MgRW5jcnlwdCBBdXRob3JpdHkgWDMwggEi
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCc0wzwWuUuR7dyXTeDs2hjMOrX
NSYZJeG9vjXxcJIvt7hLQQWrqZ41CFjssSrEaIcLo+N15Obzp2JxunmBYB/XkZqf
89B4Z3HIaQ6Vkc/+5pnpYDxIzH7KTXcSJJ1HG1rrueweNwAcnKx7pwXqzkrrvUHl
Npi5y/1tPJZo3yMqQpAMhnRnyH+lmrhSYRQTP2XpgofL2/oOVvaGifOFP5eGr7Dc
Gu9rDZUWfcQroGWymQQ2dYBrrErzG5BJeC+ilk8qICUpBMZ0wNAxzY8xOJUWuqgz
uEPxsR/DMH+ieTETPS02+OP88jNquTkxxa/EjQ0dZBYzqvqEKbbUC8DYfcOTAgMB
AAGjggFnMIIBYzAOBgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADBU
BgNVHSAETTBLMAgGBmeBDAECATA/BgsrBgEEAYLfEwEBATAwMC4GCCsGAQUFBwIB
FiJodHRwOi8vY3BzLnJvb3QteDEubGV0c2VuY3J5cHQub3JnMB0GA1UdDgQWBBSo
SmpjBH3duubRObemRWXv86jsoTAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vY3Js
LnJvb3QteDEubGV0c2VuY3J5cHQub3JnMHIGCCsGAQUFBwEBBGYwZDAwBggrBgEF
BQcwAYYkaHR0cDovL29jc3Aucm9vdC14MS5sZXRzZW5jcnlwdC5vcmcvMDAGCCsG
AQUFBzAChiRodHRwOi8vY2VydC5yb290LXgxLmxldHNlbmNyeXB0Lm9yZy8wHwYD
VR0jBBgwFoAUebRZ5nu25eQBc4AIiMgaWPbpm24wDQYJKoZIhvcNAQELBQADggIB
ABnPdSA0LTqmRf/Q1eaM2jLonG4bQdEnqOJQ8nCqxOeTRrToEKtwT++36gTSlBGx
A/5dut82jJQ2jxN8RI8L9QFXrWi4xXnA2EqA10yjHiR6H9cj6MFiOnb5In1eWsRM
UM2v3e9tNsCAgBukPHAg1lQh07rvFKm/Bz9BCjaxorALINUfZ9DD64j2igLIxle2
DPxW8dI/F2loHMjXZjqG8RkqZUdoxtID5+90FgsGIfkMpqgRS05f4zPbCEHqCXl1
eO5HyELTgcVlLXXQDgAWnRzut1hFJeczY1tjQQno6f6s+nMydLN26WuU4s3UYvOu
OsUxRlJu7TSRHqDC3lSE5XggVkzdaPkuKGQbGpny+01/47hfXXNB7HntWNZ6N2Vw
p7G6OfY+YQrZwIaQmhrIqJZuigsrbe3W+gdn5ykE9+Ky0VgVUsfxo52mwFYs1JKY
2PGDuWx8M6DlS6qQkvHaRUo0FMd8TsSlbF0/v965qGFKhSDeQoMpYnwcmQilRh/0
ayLThlHLN81gSkJjVrPI0Y8xCVPB4twb1PFUd2fPM3sA1tJ83sZ5v8vgFv2yofKR
PB0t6JzUA81mSqM3kxl5e+IZwhYAyO0OTg3/fs8HqGTNKd9BqoUwSRBzp06JMg5b
rUCGwbCUDI0mxadJ3Bz4WxR6fyNpBK2yAinWEsikxqEt
——END CERTIFICATE——
Открываем на редактирование файл:
И добавляем в него строку с указанием на созданный файл:
Источник
Как заставить Ubuntu доверять новому корневому сертификату неинтерактивно?
После создания нового центра сертификации, ручного импорта цепочки CA в браузер и проверки того, что браузеры могут доверять новым сертификатам, подписанным посредником, мы скопировали цепочку сертификатов CA (в формате pem и crt) на наши серверы Ubuntu в следующих каталогах:
- / И т.д. / SSL / сертификаты /
- / USR / местные / доли / CA-сертификаты /
Однако после этого приложения на компьютерах с Ubuntu, такие как wget/curl/java, все еще не доверяют соединениям, использующим новые сертификаты. Согласно другому посту, нам нужно запускать неинтерактивные ca-сертификаты или dpkg-reconfigure -f noninteractive ca-certificates на каждом компьютере, на котором есть сертификат, update-ca-certificates . Эти команды не только не работают, но и нецелесообразно запускать их на тысячах серверов. Мы используем CFEngine для управления конфигурацией, но, насколько я могу судить, у него, похоже, нет возможности для такого рода вещей.
Есть ли способ написать в Ubuntu неинтерактивное обновление доверенных сертификатов CA таким образом, чтобы это могло работать на тысячах компьютеров?
2 ответа 2
Я согласен со всем, что упомянул БиллТор, но добавлю, что может потребоваться полная перестройка хранилища сертификатов, потому что иногда кажется, что update-ca-Certificates слишком старается, чтобы быть ленивым, и фактически не обновляет то, что должно ,
Кроме того, обратите внимание, что после завершения update-ca-Certificates он должен связать файлы /etc/ssl/certs/*.pem с соответствующими сертификатами в /usr/local/share/ca-certificates/ или /usr/share/ca-certificates/ . Как упомянул BillThor, также будет символическая ссылка на файл с отпечатком в виде имени — он будет похож на 349f2832.0 .
Ls -l может подтвердить это:
Также обратите внимание, что * .crt и * .pem — это один и тот же файл. Это означает, что исходный файл .crt должен быть в формате .pem.
Файл формата .pem выглядит так:
Вы можете проверить установку сертификата, запустив openssl для сертификата: openssl x509 -in /etc/ssl/certs/[certname].pem -noout -text и openssl x509 -in /usr/local/share/ca-certificates/[certname].pem -noout -text (конечно, заменяя [certname])
Вы должны увидеть обширную информацию о вашем сертификате, и оба должны совпадать (так как с символической ссылкой они должны быть в одном файле).
Если они не совпадают, вы должны повторно запустить update-ca-certificates —fresh
Если они вообще не выводят полезную информацию, то вам нужно проверить свой сертификат и убедиться, что он в правильном формате PEM.
РЕДАКТИРОВАТЬ: BillThor упомянул, что это не будет работать для Java, но похоже, что по крайней мере на Debian, хранилище сертификатов Java также обновляется с помощью инструмента update-ca-Certificates. Я не знаю о других вещах в linux, которые используют альтернативное хранилище сертификатов, кроме, возможно, Wine с приложением Adobe Air.
Источник
Работа с КриптоПро на linux сервере
Ссылки
Лицензия
Для установки другой лицензии (под root):
Корневые сертификаты
Просмотр корневых сертификатов
Добавление корневых сертификатов (под root) из файла cacer.p7b
Необходимо последовательно добавить все сертификаты
Сертификаты
Список установленных сертификатов
certmgr -list , например:
Добавление реального сертификата
Добавить только сертификат (только проверка ЭЦП):
Добавление реального сертификата с привязкой к закрытому ключу и возможностью подписывать документы
Закрытый ключ состоит из шести key-файлов:
Способ с дискетой или флешкой
Скопировать в корень дискеты или флэшки сертификат и приватный ключ (из каталога 999996.000 , 999996 — название (alias) контейнера):
Выполнить команду по копированию ключа с флэшки на диск, ключ попадет в пользовательское хранилище My .
gate@example.com — то, что прописано в поле E сертификата (можно посмотреть командой keytool —printcert -file /path/to/cert/client.cer ):
С жесткого диска
Скопировать приватный ключ в хранилище (контейнер), где — имя пользователя linux:
Поставить «минимальные» права:
Узнать реальное название контейнера:
Ассоциировать сертификат с контейнером, сертификат попадет в пользовательское хранилище My :
Если следующая ошибка, нужно узнать реальное название контейнера (см. выше):
Установить сертификат УЦ из-под пользователя root командой:
Проверка успешности установки закрытого ключа
Добавление тестового сертификата
Ввести пароль на контейнер test123 .
Ввести пароль на контейнер. По-умолчанию: 12345678
Удаление сертификата
Проверка сертификата
Просмотр всех атрибутов сертификата
В cryptcp нет необходимых инструментов для получения всех атрибутов сертификата. Поэтому следует использовать openssl , но настроив его.
Получаем SHA 1 хеши:
В цикле извлекаем сертификаты:
Настройка openssl для поддержки ГОСТ:
В файл /etc/ssl/openssl.cnf
Экспорт сертификатов на другую машину
Закрытые ключи к сертификатам находятся тут: /var/opt/cprocsp/keys . Поэтому эти ключи переносятся просто: создаем архив и переносим на нужную машину в тот же каталог.
Экспорт самих сертификатов (если их 14):
Переносим эти файлы на машину и смотрим, какие контейнеры есть:
И как обычно, связываем сертификат и закрытый ключ:
Если закрытый ключ и сертификат не подходят друг к другу, будет выведена ошибка:
Если все успешно:
Если нет закрытого ключа, то просто ставим сертификат:
Подписание документа ЭЦП
Пример создания ЭЦП (по SHA1 Hash):
[ReturnCode: x] | Описание | Возвращаемый код завершения в баше $? |
---|---|---|
0 | успешно | 0 |
0x8010006b | Введен неправильный PIN | 107 |
0x2000012d | Сертификат не найден | 45 |
0x20000065 | Не удалось открыть файл | 101 |
Проверка подписи ЭЦП
Для верифицирования сертификатов нужен сертификат удостоверяющего центра и актуальный список отзыва сертификатов, либо настроенный для этого revocation provider.
Корневой сертификат УЦ, список отзыва сертификата является одним из реквизитов самого сертификата.
Контрагенты когда открывают подписи в КриптоАРМ используют revocation provider, он делает проверки отзыва сертификата онлайн. Как реализована проверка в Шарепоинте не знаю. Знаю только что используется библиотека Крипто.Net
Проверка конкретной подписи из локального хранилища по его хешу:
Проверить, взяв сертификат из file1.sig , подпись файла file2.sig . Практически, надо использовать один и тот же файл:
[ReturnCode: x] | Текст | Описание | Возвращаемый код завершения в баше $? |
---|---|---|---|
0 | Успешно | 0 | |
0x80091004 | Invalid cryptographic message type | Неправильный формат файла | 4 |
0x80091010 | The streamed cryptographic message is not ready to return data | Пустой файл | 16 |
Получение исходного файла
Получение исходного файла (сообщения):
Будет ругаться на сертификат (так как не будет проверки), но подпись удалит. Вариант с проверкой:
Источник
Вики IT-KB
Пошаговые руководства, шпаргалки, полезные ссылки.
Инструменты пользователя
Инструменты сайта
Боковая панель
Добавление в Linux корневых сертификатов X.509 локального корпоративного Центра сертификации
Некоторые службы и приложения в Linux могут использовать в своей работе сетевые соединения, защищаемые с помощью SSL/TLS. Иногда требуется, чтобы цифровой сертификат, используемый для защиты соединений и предоставляемый каким-то удалённым сервером из локальной сети, принимался локальной Linux-системой как доверенный. Для этого в Linux-систему может потребоваться добавить корневой сертификат Центра сертификации (ЦС), которым были выданы сертификаты, используемые для защиты соединений. Типичный пример, когда локальная Linux-система для механизмов аутентификации и авторизации подключается с помощью ldap-клиента (например OpenLDAP) к контроллеру домена Active Directory (AD) и контроллер домена предоставляет ldap-клиенту для защиты соединения сертификат, выданным локальным корпоративным ЦС.
Здесь мы рассмотрим простой пример того, как в Linux-систему добавить корневые сертификаты локального корпоративного ЦС.
О том, как «выуживать» корневые сертификаты ЦС, которыми подписаны сертификаты контроллеров домена AD, я приводил пример ранее. Если под руками есть доменная Windows-машина, то можно выгрузить корневой сертификат из оснастки управления сертификатами из раздела корневых сертификатов доверенных ЦС. Если корневой сертификат не один, а несколько (цепочка), то каждый корневой сертификат цепочки выгрузим в файл в кодировке Base-64, сразу присвоив им расширение PEM вместо CER
В результате такой выгрузки в нашем примере получится пара файлов AD-RootCA.pem (корневой сертификат ЦС верхнего уровня) и AD-SubCA.pem (корневой сертификат подчинённого ЦС). Скопируем полученные pem-файлы на наш Linux-сервер, например с помощью утилиты pscp, во временный каталог.
Перейдём на консоль Linux-сервера и переместим файлы коневых сертификатов из временного каталога в каталог, который мы создадим специально для хранения наших корневых сертификатов и подправим на эти сертификаты права (если требуется)
Теперь обработаем содержимое каталога с нашими сертификатами утилитой OpenSSL — c_rehash:
В результате выполнения этой команды в этом же каталоге будут созданы специальные хеш-ссылки на файлы сертификатов.
Помните про то, что если в дальнейшем в данный каталог потребуется снова добавить дополнительный сертификат, то команду c_rehash нужно будет выполнить для каталога заново, чтобы сгенерировались хеш-ссылки для добавленных сертификатов. И напротив, если из каталога будут удаляться какие-то сертификаты, то нужно будет выполнить команду, которая вычистит все хеш-ссылки на уже несуществующие файлы сертификатов:
Итак, каталог с сертификатами подготовлен, теперь можно его указывать в качестве источника доверенных корневых сертификатов для разных служб и приложений в нашей Linux-системе.
В качестве примера рассмотрим клиента OpenLDAP, для которого можно указать созданный нами каталог в конфигурационном файле ldap.conf ( /etc/ldap/ldap.conf ) в дополнительной опции TLS_CACERTDIR, таким образом, чтобы эта опция шла после имеющейся по умолчанию опции TLS_CACERT (подробнее об этих опциях можно найти в man ldap.conf ):
Примечание.
В Debian GNU/Linux параметр TLS_CACERTDIR может игнорироваться, о чём сказано в man ldap.conf .
Specifies the path of a directory that contains Certificate Authority certificates in separate individual files. The TLS_CACERT is always used before TLS_CACERTDIR. This parameter is ignored with GnuTLS. On Debian openldap is linked against GnuTLS…
В таком случае используйте для хранения доверенных корневых сертификатов отдельный файл (бандл, в который собраны все доверенные корневые сертификаты) и указывайте его расположение через параметр TLS_CACERT.
Собрать все нужные доверенные корневые сертификаты Центров сертификации в бандл можно простой склейкой содерживого PAM-файлов в колировке Base-64:
Соответственно, применительно к ранее упомянутому клиенту OpenLDAP в Debian GNU/Linux настройка конфигурации будет такой:
Автор первичной редакции:
Алексей Максимов
Время публикации: 25.03.2017 17:36
Обсуждение
Пытаюсь проделать такие же операции на CentOS, но нет такой команды «c_rehash»:
Источник