Ssl сертификат самоподписанный что это
Как выпустить самоподписанный SSL сертификат и заставить ваш браузер доверять ему
Все крупные сайты давно перешли на протокол https. Тенденция продолжается, и многие наши клиенты хотят, чтобы их сайт работал по защищенному протоколу. А если разрабатывается backend для мобильного приложения, то https обязателен. Например, Apple требует, чтобы обмен данными сервера с приложением велся по безопасному протоколу. Это требование введено с конца 2016 года.
На production нет проблем с сертификатами. Обычно хостинг провайдер предоставляет удобный интерфейс для подключения сертификата. Выпуск сертификата тоже дело не сложное. Но во время работы над проектом каждый разработчик должен позаботиться о сертификате сам.
В этой статье я расскажу, как выпустить самоподписанный SSL сертификат и заставить браузер доверять ему.
Чтобы выпустить сертификат для вашего локального домена, понадобится корневой сертификат. На его основе будут выпускаться все остальные сертификаты. Да, для каждого нового top level домена нужно выпускать свой сертификат. Получить корневой сертификат достаточно просто.
Сначала сформируем закрытый ключ:
Затем сам сертификат:
Нужно будет ввести страну, город, компанию и т.д. В результате получаем два файла: rootCA.key и rootCA.pem
Переходим к главному, выпуск самоподписанного сертификата. Так же как и в случае с корневым, это две команды. Но параметров у команд будет значительно больше. И нам понадобится вспомогательный конфигурационный файл. Поэтому оформим все это в виде bash скрипта create_certificate_for_domain.sh
Первый параметр обязателен, выведем небольшую инструкцию для пользователя.
Создадим новый приватный ключ, если он не существует или будем использовать существующий:
Запросим у пользователя название домена. Добавим возможность задания “общего имени” (оно используется при формировании сертификата):
Чтобы не отвечать на вопросы в интерактивном режиме, сформируем строку с ответами. И зададим время действия сертификата:
В переменной SUBJECT перечислены все те же вопросы, который задавались при создании корневого сертификата (страна, город, компания и т.д). Все значение, кроме CN можно поменять на свое усмотрение.
Сформируем csr файл (Certificate Signing Request) на основе ключа. Подробнее о файле запроса сертификата можно почитать в этой статье.
Формируем файл сертификата. Для этого нам понадобится вспомогательный файл с настройками. В этот файл мы запишем домены, для которых будет валиден сертификат и некоторые другие настройки. Назовем его v3.ext. Обращаю ваше внимание, что это отдельный файл, а не часть bash скрипта.
Да, верно, наш сертификат будет валидным для основного домена, а также для всех поддоменов. Сохраняем указанные выше строки в файл v3.ext
Возвращаемся в наш bash скрипт. На основе вспомогательного файла v3.ext создаем временный файл с указанием нашего домена:
Переименовываем сертификат и удаляем временный файл:
Скрипт готов. Запускаем его:
Получаем два файла: mysite.localhost.crt и device.key
Теперь нужно указать web серверу пути к этим файлам. На примере nginx это будет выглядеть так:
Запускаем браузер, открываем https://mysite.localhost и видим:
Браузер не доверяет этому сертификату. Как быть?
Нужно отметить выпущенный нами сертификат как Trusted. На Linux (Ubuntu и, наверное, остальных Debian-based дистрибутивах) это можно сделать через сам браузер. В Mac OS X это можно сделать через приложение Keychain Access. Запускаем приложение и перетаскиваем в окно файл mysite.localhost.crt. Затем открываем добавленный файл и выбираем Always Trust:
Обновляем страницу в браузере и:
Успех! Браузер доверяет нашему сертификату.
Сертификатом можно поделиться с другими разработчиками, чтобы они добавили его к себе. А если вы используете Docker, то сертификат можно сохранить там. Именно так это реализовано на всех наших проектах.
Делитесь в комментариях, используете ли вы https для локальной разработки?
Максим Ковтун,
Руководитель отдела разработки
Создание самоподписанного сертификата SSL
Creating a Self-Signed SSL Certificate
В этом руководстве объясняется, как создать самозаверяющий сертификат SSL с помощью инструмента openssl.
Что такое самоподписанный сертификат SSL?
Самозаверяющие сертификаты, признанные действительными в любом браузере. Если вы используете самозаверяющий сертификат, веб-браузер покажет посетителю предупреждение о том, что сертификат веб-сайта невозможно проверить.
Самозаверяющие сертификаты в основном используются для целей тестирования или внутреннего использования. Вы не должны использовать самозаверяющий сертификат в производственных системах, которые подключены к Интернету.
Предпосылки
Инструментарий openssl необходим для создания самозаверяющего сертификата.
Если пакет openssl не установлен в вашей системе, вы можете установить его, выполнив следующую команду:
Создание самоподписанного SSL-сертификата
Чтобы создать новый самоподписанный сертификат SSL, используйте openssl req команду:
Давайте разберем команду и разберемся, что означает каждая опция:
Для получения дополнительной информации о параметрах openssl req команды посетите страницу документации OpenSSL req.
Как только вы нажмете Enter, команда сгенерирует закрытый ключ и задаст вам ряд вопросов, которые она будет использовать для генерации сертификата.
Введите запрашиваемую информацию и нажмите Enter.
Сертификат и закрытый ключ будут созданы в указанном месте. Используйте команду ls, чтобы убедиться, что файлы были созданы:
Это оно! Вы создали новый самозаверяющий сертификат SSL.
Всегда полезно создать резервную копию нового сертификата и ключа для внешнего хранилища.
Создание самоподписанного SSL-сертификата без запроса
Вывод
В этом руководстве мы показали, как создать самозаверяющий сертификат SSL с помощью инструмента openssl. Теперь, когда у вас есть сертификат, вы можете настроить приложение для его использования.
Что такое самоподписанный SSL-сертификат
В этой статье расскажем, что будет, если установить на сайт самоподписанный SSL-сертификат. Если для вас это новая тема, прочитайте также, что такое SSL и центры сертификации.
Самоподписанный или самозаверенный сертификат — это SSL-сертификат, который пользователь создал самостоятельно. Технически он ничем не отличается от платных сертификатов, но при переходе на сайт с таким сертификатом посетитель увидит предупреждение:
Самоподписной сертификат может создать кто угодно, даже мошенник. Поэтому браузер подсказывает: на сайте стоит сертификат от неизвестного производителя, мы не уверены, что ему можно доверять. Даже если сайт надёжный, неподготовленный человек может испугаться ошибки и закрыть вкладку.
Таких ситуаций не бывает с платными SSL-сертификатами. Их выпускают специальные организации — центры сертификации. Они проверяют каждый заказ и берут на себя риск, что сертификат получит мошенник. С годами несколько центров сертификации заработали репутацию надёжных компаний, поэтому популярные браузеры распознают их сертификаты автоматически.
Хотели бы получить Wildcard SSL в Украине? Мы предлагаем доступные сертификаты от центров сертификации Comodo и GeoTrust.
Обзор SSL-сертификатов: типы, выбор, приемущества.
Многие задавали себе вопрос, чем различаются разные SSL-сертификаты, зачем его получать и почему нельзя использовать самоподписанный.
Здесь я попытаюсь ответить на эти вопросы, рассмотрев:
Я не претендую за 100% верность данной статьи, она основана только на моем мнении и личном опыте 🙂
SSL — Secure Sockets Layer — стандарт передачи защифрованных данных через сеть. Касательно web-индустрии это протокол HTTPS.
О сертификатах вообще и зачем их нужно подписывать.
Здесь и далее речь пойдет приемущественно о web-сайтах. Вопросы SSL + FTP, Email, цифровых подписей исходного кода и пр. до поры оставим в стороне.
SSL-сертификат, это индивидуальная цифровая подпись вашего домена. Он может быть:
Разберем их более подробно.
Самоподписанный сертификат не гарантирует ничего. Любой человек может взять и выдать себе такой сертификат. Все браузеры выдают клиенту предпреждение о том, что сертификат не надежен.
Подписанный не доверенным ЦС сертификат тоже не подтверждает ничего, т.к. существуют ЦС, продающие сертификаты всем желающим и без проверок. Большинство браузеров реагирует на такие сертификаты аналогично самоподписанным.
Сертификат, подписанный доверенным источником (как пример — Thawte или VerySign) подтверждает, что:
На доверенные сертификаты браузеры ошибку не выдают.
Но это технически. А теперь о том, что показывает доверенный сертификат посетителю вашего сайта.
Многих пользователей (особенно зарубежных — наши пока к этому не привыкли) самоподписанный сертификат (или отсутствие SSL в вещах, касающихся услуг\финансов\privacy) может если и не отпугнуть, то поставить жирный минус в вашу пользу.
Мой личный вывод: на всех сайтах, связанных с онлайн-коммерцией, платежами, личной информацией SSL должен быть.
Типы сертификатов.
Допустим, руководствуясь соображениями из 1 части статьи вы решили купить подписанный сертификат. Каково же будет ваше удивление, когда на сайте ЦС вы узнаеете, что они бывают разные 🙂
Esential SSL — самый не дорогой и быстро оформляемый сертификат. Доступен как для юридических, так и для физических лиц. Проверяется только право владения доменным именем, личные данные или регистрация компании не проверяются. Выдается на 1 домен.
Instant SSL — доступен и для физ. лиц, и для юр. лиц. Проверяется право владения доменом, регистрационные данные компании либо личность физ. лица. Выдается на 1 домен.
SGC SSL-сертификат. — Аналогично Instant SSL, но с поддержкой 40-битных расширений (актуально для старых ОС и браузеров). Выдается на 1 домен, либо wildcard (см. ниже).
Обычный Wildcard. — тоже самое, что и обычный сертификат, но выдается не на 1 домен, а на все поддомены корневого домена. Т.е. не только на domain.com, a и на www.domain.com, bill.domain.com и т.д. Стоит на порядок дороже.
EV (Extended Validation) сертификат. — сертификат расширенной проверки, доступен только юридическим лицам. Проверяется владение доменом, компания, нотариально заверенные переводы документов на английский язык, требует подтверждения данных третьей стороной. Позволяет установить на сайте картинку-подтверждение владением и отображается в браузерах как гарантированно доверенный (зеленым цветом), против желтого у обычных сертификатов. Стоит в 2-3 раза дороже обычного, регистрация занимает продолжительное время.
В браузере выглядит так:
EV Wildcard и EV SGC. — аналогично Wildcard и SGC, но с расширенной проверкой.
Instant и Essential сертификаты позиционируются как продукт для сайтов частных лиц и органзаций, не связанных с электронной коммерцией.
Extended Validation — для сайтов, связанных с финансами, услугами (интернет-банкинг, платежные системы, интернет-магазины и пр.).
В следующей статье я напишу, как выбрать регистратора и получить сертификат.
🔐 Как создать самоподписанный сертификат SSL
Сертификаты SSL используются для облегчения аутентификации и шифрования в Интернете.
Обычно эти сертификаты выдаются доверенными сторонними центрами сертификации, такими как Let’s Encrypt.
Самоподписанный сертификат – это сертификат, который формируется без подтверждения стороннего центра сертификации.
TLS/SSL – это комбинация открытого сертификата и закрытого ключа.
Закрытый ключ надежно хранится на сервере или на балансировщике нагрузки, тогда как сертификат общедоступен.
В этом руководстве мы объясним, как создать самоподписанный сертификат SSL с помощью инструмента OpenSSL.
Предпосылки
Машина Linux и пользователь с привилегиями sudo.
Установка OpenSSL
OpenSSL доступен по умолчанию во всех основных дистрибутивах Linux.
Выполните приведенную ниже команду, чтобы убедиться, что OpenSSL уже установлен на вашем компьютере с Linux.
На Ubuntu и Debian:
На Red Hat дистрибутивах:
Синтаксис команды openssl:
Создадим самоподписанный сертификат SSL с помощью OpenSSL
Убедившись, что инструмент OpenSSL установлен на вашем компьютере с Linux, вы можете приступить к созданию сертификата.
Информация CSR требуется для создания закрытого ключа.
Поскольку мы генерируем самоподписанный сертификат, на самом деле не требуется выводить файл CSR, поскольку он требуется только в том случае, если вы отправляете информацию CSR в сторонний удостоверяющий центр.
Чтобы создать самоподписанный сертификат SSL, введите:
Эта команда создаст самоподписанный сертификат, который будет действителен в течение 365 дней.
Сертификат и файл ключа будут созданы в текущем каталоге, если явно не указан другой каталог.
Вот что обозначает каждый флаг:
Создадим самоподписанный сертификат, используя существующий закрытый ключ и CSR
В некоторых ситуациях, когда у вас есть закрытый ключ и csr, будет достаточно следующих шагов.
Как создать закрытый ключ OpenSSL
Сначала выполните команду, показанную ниже, чтобы создать и сохранить свой закрытый ключ.
Этот закрытый ключ необходим для подписи вашего SSL-сертификата.
Вы можете изменить my_key в приведенной ниже команде на свое собственное значение.
Вот что означают флаги команды:
Если вы не указали другое местоположение, ваш закрытый ключ будет храниться в текущем рабочем каталоге.
Как создать запрос на подпись сертификата
Следующим шагом является создание запроса на подпись сертификата (CSR).
CSR – это то, что вы обычно отправляете в УЦ.
Но в этом случае вы собираетесь подписать его самостоятельно.
При создании CSR вас попросят предоставить некоторую информацию.
Некоторые поля можно оставить пустыми, нажав клавишу ETCD_CLIENT_CERT_AUTH
Теперь запустите команду, показанную ниже, чтобы начать создание CSR.
Вот что обозначает каждый флаг команды
Подпишем сертификат самостоятельно
Когда вы запустите команду, показанную ниже, будет создан самоподписанынй сертификат, который будет действителен в течение 365 дней.
Проверим сертификат
Вы можете проверить детали сертификата в текстовом формате с помощью команды:
Заключение
В этом руководстве мы описали, как создать самоподписанный сертификат SSL с помощью инструмента openssl.
Учитывая, что основные браузеры не доверяют самоподписанным сертификатам, рекомендуется использовать его только для внутренних целей или в целях тестирования.