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

Генерация и использование SSL-сертификатов в Linux

В целях безопасности, в частности во избежание перехвата конфиденциальных, персональных или важных данных. Многие владельцы сайтов в сети защищают трафик с помощью SSL-сертификатов. Естественно, защите подлежит только тот трафик, который связан непосредственно с запросами и передачей данных с определённым адресом — адресом сайта. Системные администраторы, сотрудники техподдержки должны ориентироваться в вопросах, касающихся создания и внедрения SSL-сертификатов для хостов. Поскольку предоставляют соответствующие услуги. Для этих целей в системах Linux существует утилита openssl. Она является свободной реализацией методов защиты, протокола SSL, а также генерации сертификатов.

Как SSL-сертификат помогает защитить данные?

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

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

Обе эти составляющие и представляют собой то, что принято обозначать понятием SSL-сертификат. Подпись является гарантией, поскольку выдаётся авторитетным центрами сертификации. Это доступные всем онлайн-сервисы (достаточно воспользоваться любой поисковой системой), которым можно отправить свой ключ, заполнив соответствующую анкету. Далее сервис (центр сертификации) обрабатывает данные из анкеты и сам ключ и высылает уже подписанный ключ обратно его владельцу. Среди самых популярных на сегодняшний день центров сертификации являются такие как Comodo.
Важно заметить, что зашифрованный открытым ключом трафик возможно расшифровать только соответствующим ему закрытым ключом. В свою очередь подпись для открытого ключа от авторитетного цента говорит, что зашифрованный трафик пришёл от «своего» или подлинного узла и его можно принять в обработку, т. е. расшифровать закрытым ключом.

Общий порядок создания SSL-сертификата, ключи и подпись

Во время создания SSL-сертификата происходит последовательная обработка следующих видов ключей:

  • *.key – это сами ключи шифрования, открытий и/или закрытый;
  • *.csr – ключ, содержащий сформированный запрос для получения подписи сертификата от центра сертификации, а сам запрос — это открытый ключ и информация о домене и организации, связанной с ним;
  • *.crt, *.cer, *.pem – это, собственно, сам сертификат, подписанный центром сертификации по запросу из файла *.csr.

Для начала нужно создать закрытый ключ:

Здесь команда genrsa генерирует RSA-ключ, опция -des3 указывает алгоритм шифрования ключа. А опция -out указывает, что ключ должен быть получен в виде файла server.key. Число 2048 — это сложность шифрования. При выполнении этой команды пользователю будет предложено ввести пароль для шифрования. Поскольку указан его алгоритм опцией -des3. Если это личный ключ и его планируется использовать на сервере, который можно настроить в собственных целях, то естественно шифрование обязательно. Однако, многие серверы требуют закрытые ключи без шифрования (например хостинг-площадки, поскольку предоставляют универсальную услугу по заказу SSL-сертификатов). Поэтому перед генерацией закрытого ключа нужно определиться, как он будет использоваться.

Читайте также:  Windows 10 pro programming

Теперь нужно создать запрос на подпись — CSR-файл, который будет включать только что сгенерированный ключ server.key:

При выполнении этой команды пользователю необходимо ввести информацию о домене и организации. Причём наименование домена следует вводить точно, например, если идентификатор URL сайта https://mycompany.com, то ввести нужно mycompany.com. Для URL-идентификатора www.mycompany.com уже необходим отдельный сертификат.
Теперь файл server.csr со сформированным запросом на подпись можно отправить в выбранный центр сертификации.

Подписание SSL-сертификатов

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

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

Параметр -x509 задаёт формат генерируемого сертификата. Он является самым распространённым и используется в большинстве случаев. Опция -new позволяет запрашивать информацию для запроса у пользователя.

Важно отметить, что сертификаты, подписанные авторитетными центрами сертификации известны веб-браузерам. Самоподписанные сертификаты необходимо импортировать в хранилище доверенных сертификатов веб-браузера вручную. Поскольку соединения с доменами, обслуживаемыми такими сертификатами по-умолчанию блокируются.

Использование SSL-сертификатов для домена

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

/ssl/certs/ нужно поместить файл server.crt, в

/ssl/private/ — файл server.key. Далее, в конфигурационном файле виртуального хоста нужно определить следующие директивы:

Важно заметить, что для SSL-соединений домена должен быть отдельный конфигурационный файл (или просто отдельная конфигурация в одном файле) виртуального хоста для него. Это необходимо, поскольку обычные HTTP-соединения обрабатываются по порту 80, а HTTPS (SSL) — по 443. Это отдельные конфигурации одного виртуального хоста (хотя это не совсем верное определение). Также для Apache должен быть включен модуль SSL. Типичная конфигурация может выглядеть следующим образом:

Как подключить ssl сертификата в nginx читайте в этой статье.

Заключение

В заключение следует заметить, что генерация и подключение SSL-сертификатов к домену — далеко не самая сложная задача. Однако она требует очень внимательного выполнения отдельных её этапов, поскольку от ошибки зависит безопасность для домена.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

SSL сертификат в Linux

В интернет можно найти сотни статей о том как выпустить и устанавить ssl сертификат в linux. Эта шпаргалка из личного опыта, самое важное, что может пригодится для генерации сертификатов в корпоративной среде. А именно создание ключа, запроса сертификата, подпись сертификата доменным центром сертификации. Помимо этого сертификат должен отвечать современным требованиям браузеров, а поэтому содержать дополнительные поля.

Читайте также:  Драйвера для оптической мыши windows 10

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

Настройка дополнительных полей SSL сертификата в Linux

Первым делом необходимо настроить список и значения дополнительных полей в сертификате, а именно Subject Alternative Names. Указывать их необходимо, чтобы избежать ошибки [missing_subjectAltName] и NET::ERR_CERT_COMMON_NAME_INVALID в Google Chrome и других браузерах. В данных полях необходимо перечислить все dns имена и ip адреса, по которым может быть открыт сайт.

Задаются параметры через файл /etc/ssl/openssl.cnf. Если у вас данный конфигурационный файл не изменялся то необходимо внести следующие изменения:

  1. В разделе [req] добавить строку: req_extensions = v3_req
  2. В разделе [v3_req] добавить строку: subjectAltName = @alt_names
  3. Создать раздел [ alt_names ] и добавить в него все альтернативные имена в формате:

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

Запрос SSL сертификата в Linux

После того как отредактировали файл создаем ключ и запрос в одной команде:

Эта команда создаст файл закрытого ключа типа rsa длиной 2048 бит. Вы можете изменить эти параметры по своему усмотрению. Далее последует диалог, в котором необходимо указать основные поля сертификата.

Поле Common Name должно совпадать с именем хоста к которому вы выпускаете сертификат

Обратите внимание на поле Common Name такое же имя стоит прописать в конфиге выше в качестве одного из полей в alt_names.

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

Подпись ssl сертификата linux в доменном центре сертификации

Копируем содержимое csr файла в буфер, затем идем на веб сайт доменного центра сертификации.

В поле шаблон сертификата выбираем Веб-сервер и кликаем по кнопке «Выдать».

Переключаем формат сертификата в Base64

Кликаем по ссылке «Загрузить сертификат» и сохраняем файл сертификата. После этого его можно загрузить на сервер и настроить на использование вебсервером.

Поскольку доменный центр сертификации по умолчанию распространяет свой корневой сертификат на все машины в домене Active Directory, либо вы сделали это с помощью GPO, то все подписанные им сертификаты на машинах в домене будут валидными. Таким образом и SSL сертификат в Linux подписанный доменным центром сертификации прикрученный к внутрикорпоративному веб-серверу тоже не вызовет ошибок в браузере на рабочей машине пользователя.

Данная инструкция пригодится при выпуске сертификата например для установки на Proxmox Mail Gateway или любой другой веб-сервер.

Другие полезные команды openssl

Создание закрытого ключа:

Создание запроса на основе имеющегося ключа:

Генерация паролей с помощью openssl:

Как всегда дополнения и конструктивная критика приветствуются в комментариях.

Источник

Добавление доверенного самоподписанного SSL-сертификата в Nginx на Debian/Ubuntu

В этой статье я объясню, как добавить доверенный самоподписанный (самозаверяющий) SSL-сертификат в Nginx сервер на операционной системе Debian/Ubuntu. Я всегда использую HTTPS протокол для локальной среды разработки. Но меня всегда раздражало, что браузер не доверяет самоподписанному SSL-сертификату и отображает уведомление об этом. Несколько раз я пытался с этим разобраться. Я пробовал разные инструкции, но ни одна из них не решила мою проблему. И вот однажды я решил подробно разобраться с этой проблемой и наконец решить ее. Я надеюсь, что эта инструкция поможет вам тоже.

Читайте также:  Nvidia drivers linux terminal

В какой-то момент у меня снова возникли ошибки в браузерах: NET::ERR_CERT_AUTHORITY_INVALID (Google Chrome), MOZILLA_PKIX_ERROR_SELF_SIGNED_CERT (Firefox). И снова мне пришлось разбираться, как решить эту проблему. Я написал новую статью о том, как добавить доверенный SSL-сертификат для локальной среды в Nginx на Debian/Ubuntu. На этот раз мы будем использовать корневой центр сертификации (ЦС).

Эта инструкция была выполнена на операционных системах: Debian 10, Debian 9, Ubuntu 20.10, Ubuntu 20.04, Ubuntu 19.10.

Создание конфигурации OpenSSL

Давайте начнем с этого важного раздела. Нам нужно создать файл конфигурации для OpenSSL, выполнив команду в терминале:

Скопируйте и вставьте следующую подготовленную конфигурацию в новый файл, где DNS.1 — это название вашего сервера (укажите DNS.2, если вам нужна поддержка поддоменов):

Сохраняем изменения и закрываем файл.

Создание доверенного самоподписанного SSL-сертификата

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

  • req — это команда, которая указывает на использование X.509 (управление запросом подписи сертификата);
  • -x509 — это команда управления данными сертификата, указывающая на создание самоподписанного сертификата;
  • -nodes — это команда, которая пропускает использование парольной фразы;
  • -days 3650 — это команда, которая устанавливает срок действия сертификата в днях (мы установили его на десять лет);
  • -newkey rsa: 2048 — это команда, которая генерирует новый приватный ключ с использованием алгоритма RSA с длиной ключа 2048 бит;
  • -keyout /etc/ssl/private/localhost.key — это путь для размещения файла приватного ключа;
  • -out /etc/ssl/certs/localhost.crt — это путь для размещения файла сертификата;
  • -config /tmp/openssl.cnf — это путь к файлу конфигурации.

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

Настройка Nginx для использования SSL

Давайте включим SSL в конфигурации сервера Nginx. Мы укажем прослушивание порта 443 (HTTPS) и пути к файлам сертификата и приватного ключа. Отредактируем файл конфигурации сервера /etc/nginx/sites-available/default:

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

Теперь применим изменения конфигурации, выполнив команду в терминале:

Установка утилиты certutil

Теперь нам необходимо добавить сгенерированный SSL-сертификат в базу данных, которую использует браузер. Для управления этой базой данных используется утилита certutil, которая входит в состав пакета libnss3-tools. Если у вас нет этого пакета в системе, тогда установим его.

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

Установим пакет libnss3-tools, выполнив команду в терминале:

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

Давайте добавим сгенерированный SSL-сертификат в базу данных с помощью утилиты certutil, выполнив команду в терминале:

Эта инструкция была протестирована на браузерах: Google Chrome и Opera.

Браузер Mozilla Firefox не хочет доверять сертификату, он использует базу данных cert8.db, которую я редактировал следующим образом:
certutil -d sql:$HOME/.mozilla/firefox/xqck5xx8.default -A -t «P,,» -n localhost.crt -i /etc/ssl/certs/localhost.crt

Тестирование шифрования

Чтобы браузер мог прочитать обновленную базу данных сертификатов, вам необходимо перезапустить свой браузер (закрыть и снова открыть).

Давайте проверим, что наш сервер доступен по протоколу HTTPS, введя следующий адрес в браузере:

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

Источник

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