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

Обновление корневых сертификатов на 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 года.

Читайте также:  Таблица fat ос windows это

В данном случае, мы можем установить любой нужный нам сертификат руками. Для этого скачала находим его и копируем — приведем пример с 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——

Открываем на редактирование файл:

И добавляем в него строку с указанием на созданный файл:

Источник

Выпуск и продление сертификатов Let’s encrypt и конфигурирование NGINX

Оглавление

Для чего нужен Let’s Encrypt wildcard сертификат

SSL-сертификаты (англ. Secure Sockets Layer) необходимы для организации защищенного доступа к сайту по https. Как правило, выдача SSL-сертификата не бесплатна, но существует такой сервис, как Lets Encrypt с помощью которого можно совершенно бесплатно выпустить сертификат для своего сайта.

В последнее время Lets Encrypt позволяет также выпускать и бесплатные wildcard сертификаты, которые мы можем получить не на один домен (например, на site.org), а на целую группу поддоменов *. site.org (к примеру, example1. site.org, example2. site.org и т.д.). В общем, для веб-мастера значительно упрощена процедура получения и продления сертификата ssl.

В этой статье мы покажем, как выпустить и продлить ssl сертификат на веб-сервере Nginx под Linux (Ubuntu 20) с помощью утилиты ACME.sh, расскажем как с помощью сервиса Cloudflare DNS API можно получить токен для нашего домена. Остановимся и на способах обновления ssl сертификата.

Подготовительные работы по установке и конфигурированию веб-сервера Nginx

Все действия будем проводить с тестовым доменом letsencrypt.co.ua. Перед тем, как начать процесс установки, необходимо выполнить обновления на серверной ОС Ubuntu:

Затем установим веб-сервер Nginx:

1) Команда для OC Ubuntu:

2) Команда для OC CentOS:

Затем наш домен нужно добавить в качестве виртуального хоста на веб-сервер Nginx, для этого проделаем следующие действия:

1) Создаем каталог для нового сайта, вместо letsencrypt.co.ua подставьте имя своего домена (параметр -p необходим для автоматической генерации каталогов):

2) Выставим права на папку, чтобы у нас была возможность чтения файлов в ней:

3) В редакторе nano создаем новый файл index.html в уже созданном нами каталоге:

4) Помещаем в файл следующий исходный код:

Читайте также:  Windows обновит без потери данных

5) Сейчас отредактируем файл с настройками ngnix:

Необходимо вписать следующие строки в файл (указать имя домена, корневую папку и т.д.):

6) Теперь отредактируем файл nano /etc/hosts (пропишем соответствие нашего домена IP-адресу VPS):

7) Для того, чтобы все наши настройки вступили в силу, выполним рестарт Nginx командой:

8) Чтобы проверить, работает ли наш сайт и привязан ли он к IP, откроем браузер и наберем:

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

Пошаговый процесс первичного выпуска wildcard сертификата Let’s Encrypt

1. Получаем Cloudflare API токен

Для начала, нам необходимо зарегистрироваться в Cloudflare и получить там API токен. Эти действия нам необходимы для свидетельства нашего права на владение доменом (для Let’s Encrypt). После регистрации в сервисе, заходим в панель управления Cloudflare и получим API токен, выполнив следующие действия (см. скриншоты ниже):

Убедитесь, что вы настроили DNS разрешения для редактирования и включили зону для своего доменного имени, (например, для letsencrypt.co.ua), см. скриншот:

После этого, нажмите “Continue to summary”, чтобы увидеть “Edit zone DNS API token summary”.

В конце, скопируйте токен, который вы увидите на экране, для получения доступа к Cloudflare API. Держите этот токен в секрете.

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

2. Инсталлируем acme.sh клиент

На следующем этапе, необходимо установить клиент acme.sh, для этого выполним следующие команды (клонируем репозиторий acme.sh с помощью команды git):

Для дальнейших действий необходимо работать, как пользователь с правами root, для этого выполните:

На скриншоте ниже показан процесс инсталляции acme.sh.

Посмотреть параметры сервиса acme.sh можно с помощью следующих команд:

3. Выпускаем Let’s Encrypt wildcard сертификат

После установки и конфигурации веб-сервера Nginx, получения Cloudflare API токена и инсталляции acme.sh, самое время приступить к выпуску wildcard сертификата для домена letsencrypt.co.ua.

Перейдем в каталог cd /root/.acme.sh для дальнейших действий.

Сначала настроим CF_Token с помощью команды экспорта следующим образом:

Определять переменные оболочки CF_Account_ID и CF_Zone_ID нам не нужно, так как они будут автоматически извлечены файлом acme.sh. Затем запросим сертификат для домена:

Если вы работаете с криптографией на основе эллиптических кривых (ECC/ECDSA) вместо RSA, то синтаксис команды будет следующим:

Наш ключ Cloudflare DNS API находится в файле /root/.acme.sh/account.conf, проверить его возможно с помощью команды cat или grep:

4. Конфигурируем веб-сервер Ngnix

На этом этапе нам необходимо убедиться в том, что файл обмена ключами Диффи-Хеллмана уже создан:

Затем создадим и отредактируем файл конфигурации для нашего домена letsencrypt.co.ua:

Читайте также:  Линукс минт версии чем отличаются

Занесем туда следующие строки:

5. Инсталлируем Let’s Encrypt wildcard сертификат

Сейчас необходимо приступить к установке сертификата (при необходимости, замените команду systemctl reload nginx, в соответствии с инструкцией к вашему дистрибутиву Linux):

Если вы используете ECC/ECDSA, то синтаксис команды будет выглядеть следующим образом:

6. Проверяем работу сайта по https

Перед проверкой убедимся, что TCP-порт 443 сервера Nginx у нас открыт, если он еще не открыт, то это можно сделать с помощью команды (для Ubuntu или Debian Linux):

Запускаем веб-браузер и вводим URL:

7. Автоматическое продление Let’s Encrypt wildcard сертификата

Обновление будет происходить автоматически через cronjob, чтобы просмотреть все задания в cron, введите команду:

Отобразится примерно следующая информация (см. скриншот ниже):

Если возникнет необходимость, мы можем произвести обновление вручную:

В следующем разделе мы опишем подробнее как продлить ssl сертификат.

Принудительное обновление сертификата Let’s Encrypt

Для ОС Линукс существуют несколько способов выпуска и обновления сертификата Let’s Encrypt, ниже рассмотрим наиболее популярные способы продления сертификата ssl.

Как продлить сертификат https автоматически через cronjob, мы описали в предыдущем разделе статьи.

Итак, мы всегда можем принудительно обновить наш сертификат Let’s Encrypt, даже если его срок действия еще не истек. Для этого можно использовать следующие сервисы:

  • certbot, необходимо выполнить команду certbot Renew —force-Renewal
    (для указания конкретного домена, нужно использовать параметр -d):
  • acme.sh, для принудительного обновления ssl сертификата используется команда:

Если срок действия вашего сертификата для домена истек, то вы получите уведомление от сервиса Let’s Encrypt.

Системный администратор обязан следить за сертификатами Let’s Encrypt, полученных для всех доменов, принадлежащих компании, а именно:

  • выпускать сертификаты для новых доменов;
  • обновлять сертификаты ssl, если у них истек срок действия или принудительно продлять сертификаты (по необходимости);
  • при необходимости отзывать сертификаты.

Ниже покажем примеры синтаксиса команд для принудительного обновления сертификатов Let’s Encrypt, как с помощью сервиса certbot, так и используя утилиту acme.sh.

Команды certbot для обновления сертификатов Let’s Encrypt

Общий синтаксис команды:

Синтаксис команды с использованием параметра -d:

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

Использовать команды grep или egrep (для поиска и фильтрации нужных нам данных) можно следующим образом:

Команды acme.sh для обновления сертификатов Let’s Encrypt

Пример использования команды для нашего домена:

После проведения работ по выпуску или принудительному продлению сертификата необходимо перезапустить веб-сервер (Nginx или Apache) с помощью следующих команд (в соответствии с инструкцией к вашему дистрибутиву Линукс).

Источник

Оцените статью