- Генерация и использование SSL-сертификатов в Linux
- Как SSL-сертификат помогает защитить данные?
- Общий порядок создания SSL-сертификата, ключи и подпись
- Подписание SSL-сертификатов
- Использование SSL-сертификатов для домена
- Заключение
- Своё Certificate Authority — в 5 OpenSSL команд
- Зачем это нужно?
- Создаем наше CA
- Создаем сертификат подписаный нашим СА
- Установка корневого сертификата
- Importing SSL Certificates in Linux
- See also:
- Добавление доверенного SSL-сертификата для локальной среды в Nginx на Debian/Ubuntu (используя корневой ЦС)
- Создание конфигурации OpenSSL
- Создание корневого центра сертификации (ЦС)
- Создание SSL-сертификатов
- Настройка Nginx для использования SSL
- Добавление центра сертификации в браузер
- Тестирование шифрования
Генерация и использование 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-сертификатов). Поэтому перед генерацией закрытого ключа нужно определиться, как он будет использоваться.
Теперь нужно создать запрос на подпись — 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.
Источник
Своё Certificate Authority — в 5 OpenSSL команд
Зачем это нужно?
Представим, у нас есть два сервера, работают они себе, и переодически они хотят, что-то друг у друга спросить по протоколу HTTP/HTTPS.
Протокол HTTP не безопасен и логично использовать протокол HTTPS для общения меду серверами.
Для организации такого общения нам нужно 2 SSL сертификата.
Если сервера пренадлежат одной организации, то может быть проще и безопасней подписывать сертификаты самостоятельно, а не покупать.
Создаем наше CA
Первая команда создаёт корневой ключ
Для меня ключ 2048 bit достаточен, если вам хочется, вы можете использовать ключ 4096 bit.
Вторая команда создаёт корневой сертификат.
Отвечать на вопросы тут можно как душе угодно.
10000 дней срок его годности, примерно столько живет сертификат, которым google требует подписывать андроид приложения для Google Play. Если вы паникер, подписывайте на год или два.
Все! Теперь мы можем создавать сертификаты для наших серверов и устанавливать корневой сертификат на наши клиентские машины.
Создаем сертификат подписаный нашим СА
Создаем запрос на сертификат.
Тут важно указать имя сервера: домен или IP (например домен server101.mycloud)
и подписать запрос на сертификат нашим корневым сертификатом.
Теперь на клиенты нужно установить корневой сертификат rootCA.crt
rootCA.crt — можно давать друзьям, устанавливать, копировать не сервера, выкладывать в публичный доступ
rootCA.key — следует держать в тайне
Установка корневого сертификата
Windows
IE, Chrome — используют репозиторий сертификатов Windows.
Мой путь к нему таков:
Chrome — Settings — Manage Certificates…
Выбрать таб Trusted Root Certificate Authorities — Import — rootCA.crt
перезапустить Chrome
FireFox на виндоус имеет свой репозиторий.
Java имеет свой репозиторий.
Mac OS X
Safari, FireFox, Chrome — используют системный репозиторий.
Запускаем KeyChain Access.
Идём в меню File — Import Items (login или System) — выбираем файл rootCA.crt.
Когда нас спросят, отвечаем — Always Trust.
Для вашего личного Safari достаточно выбрать login.
В Ubuntu
Программа сервера на Go
Программа сервера на Go myserver.go, которая использует наш подписаный сертификат.
запустив программу на сервере server101.mycloud, ваш броузер не будет ругаться на страничку https://server101.mycloud:8443/, и откроет её как родную, если перед этим вы установили rootCA.crt в систему как корневой сертификат.
Источник
Importing SSL Certificates in Linux
This article lists the commands used to import your existing SSL certificates into PaperCut when running on Linux. This will allow the certificates to be used for accessing the web interfaces via HTTPS.
Many thanks to Matt Peacock of Belper School for contributing the steps for this Knowledge Base article!
Please note before following these instructions that all references to files with a specific version number will change with every PaperCut NG/MF update. If you specify the wrong file name you will get an error. Before starting we recommend that you navigate your lib folder by entering ls
papercut/server/lib or use tab completion to find the version shipped with your installation.
1. If you have separate PEM encoded key and certificate files, you will first need to convert them to a PKCS12 bundle as follows:
2. Import the PKCS12 bundle into PaperCut as follows:
papercut/server/lib/jetty-pkcs12–8.1.16.v20140903.jar org.mortbay.jetty.server.ssl.PKCS12Import /tmp/pccert.pfx
3. To set up PaperCut to use the new certificate:
papercut/client/client.properties” to reflect the name of the server that is specified in your web server certificate. This may simply be a case of supplying the fully qualified domain name instead of the ‘simple’ server name (i.e. ‘server.domain.com’ instead of just ‘server’).
See also:
Keywords: JSSE keystore, Jetty, Secure Socket Extension, certificate warning, browser security
Источник
Добавление доверенного SSL-сертификата для локальной среды в Nginx на Debian/Ubuntu (используя корневой ЦС)
В этой статье я объясню, как добавить доверенный SSL-сертификат для локальной среды разработки в Nginx сервер на операционной системе Debian/Ubuntu. Я всегда использую HTTPS протокол для локальной среды разработки. Но браузер отображает уведомление о том, что он не доверяет самоподписанному (самозаверяющему) SSL-сертификату. Я уже писал статью о том, как добавить доверенный самоподписанный SSL-сертификат в Nginx на Debian/Ubuntu, но это решение не всегда работает. В какой-то момент у меня снова возникли ошибки в браузерах: NET::ERR_CERT_AUTHORITY_INVALID (Google Chrome), MOZILLA_PKIX_ERROR_SELF_SIGNED_CERT (Firefox). Возможно, после обновления системы произошли какие-то изменения. И снова мне пришлось разбираться, как решить эту проблему. На этот раз мы будем использовать корневой центр сертификации (ЦС). Я надеюсь, что эта улучшенная инструкция поможет вам тоже.
Эта инструкция была выполнена на операционных системах: Debian 10, Debian 9, Ubuntu 20.10, Ubuntu 20.04, Ubuntu 19.10.
Создание конфигурации OpenSSL
Давайте начнем с этого важного раздела. Нам нужно создать файл конфигурации для OpenSSL, выполнив команду в терминале:
Скопируйте и вставьте следующую подготовленную конфигурацию в новый файл, где DNS.1 — это название вашего сервера (укажите DNS.2, если вам нужна поддержка поддоменов):
Сохраняем изменения и закрываем файл.
Создание корневого центра сертификации (ЦС)
Мы будем использовать корневой центр сертификации (ЦС) для создания всех SSL-сертификатов. Но сначала нам нужно создать корневой сертификат. Давайте создадим приватный ключ rootCA.key, выполнив команду в терминале:
или используя парольную фразу
Теперь давайте создадим файл сертификата rootCA.pem, используя приватный ключ rootCA.key, выполнив команду в терминале:
В процессе генерации сертификата будет задано несколько вопросов. Вы можете пропустить их:
Создание SSL-сертификатов
Уже можно создавать новые сертификаты, используя корневой сертификат rootCA.pem. Но сначала нам нужно создать приватный ключ и ключ (CSR) для запроса подписи, выполнив команду в терминале:
Теперь мы создадим наш файл сертификата, используя корневой центр сертификации, который мы создали ранее, запустив команду в терминале:
Настройка Nginx для использования SSL
Давайте включим SSL в конфигурации сервера Nginx. Мы укажем прослушивание порта 443 (HTTPS) и пути к файлам сертификата и приватного ключа. Отредактируем файл конфигурации сервера /etc/nginx/sites-available/default:
Сохраняем изменения и закрываем файл. Проверим конфигурацию на валидность, выполнив команду в терминале:
Теперь применим изменения конфигурации, выполнив команду в терминале:
Добавление центра сертификации в браузер
Чтобы браузер доверял созданным сертификатам, вы должны добавить свой корневой центр сертификации rootCA.pem в список доверенных центров сертификации браузера:
- Google Chrome
Настройки -> Дополнительные -> Конфиденциальность и безопасность -> Настроить сертификаты -> Центры сертификации -> Импорт (выберите файл rootCA.pem и установите все настройки доверия) - Mozilla Firefox
Настройки -> Настройки и Защита -> Сертификаты -> Просмотр сертификатов -> Центры сертификации -> Импортировать (выберите файл rootCA.pem и установите все настройки доверия) - Opera
Настройки -> Дополнительно -> Конфиденциальность и безопасность -> Настроить сертификаты -> Издатели -> Импортировать (выберите файл rootCA.pem и установите все настройки доверия)
Центр сертификации будет называться как «Internet Widgits Pty Ltd«. Если вы захотите отредактировать настройки доверия или удалить ЦС, ищите по этому названию.
Тестирование шифрования
Давайте проверим, что наш сервер доступен по протоколу HTTPS, введя следующий адрес в браузере:
Если вы все сделали правильно, вы увидите, что браузер начал доверять вашему SSL сертификату. Теперь ваше соединение будет зашифровано с использованием протокола HTTPS без отображения предупреждения о незащищенном соединении:
Источник