Создание ssl openssl windows

Выпустить самоподписанный SSL сертификат может каждый, для этого достаточно сделать 2 простых шага:

  1. Установить OpenSSL на Windows;
  2. Выполнить парочку команд в командной строке.

Самоподписанный SSL сертификат прежде всего нужен тем, кто ведет тестовые работы и впоследствии не хочет работать с переписью урлов в базе данных. Ведь если вы начнете делать ваш проект на без сертификата, то есть на HTTP протоколе, а потом решите перейти на HTTPS, что однозначно будет верным решением, то вы столкнетесь с проблемой Mixed Content на сайте.

Это означает, что часть урлов будет по-прежнему в http формате, а другая часть в https. Чтобы этого избежать и создают самоподписанный SSL сертификат, если нет возможности выпустить пока что полноценный.

Устанавливаем OpenSSL Light

Эта утилита позволит нам быстро создать самоподписанный ssl сертификат для всех наших дальнейших работ.

Вам нужно сделать несколько простых шагов:

1. Скачать OpenSSL Light по ссылочке тут (https://slproweb.com/products/Win32OpenSSL.html), в соответствии с разрядностью вашей системы (у большинство уже 64 бита, но бывают и исключения);

OpenSSL

2. Выполнить несложную установку программы без самодеятельности, просто нажимая «Далее», «Принять» и так далее;

3. Далее вам необходимо придумать и создать папку куда будет создан самоподписанный SSL сертификат утилитой OpenSSL, например, в моем случае это будет не системный диск C, а вспомогательный – D:\My Сerts;

Папка для генерации самоподписанного SSL сертификата

4. Запустить от имени администратора командную строку (CMD) и выполнить команду cd /d D:\My Certs – она отправит нас в созданную ранее нами папку для выпуска самоподписанного SSL сертификата;

Запуск командной строки CMD

5. Финальный шаг! Осталось выполнить еще одну команду:

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

6. После отправки команды на генерацию самоподписанного SSL сертификата система предложит вам заполнить несколько полей, сделать это можно в произвольном формате.

Ну вот и все! Далее нам остается перейти в созданную нами папку, в моем случае это D:\My Сerts и проверить их наличие. В папке должен корректно создаться 2 файла:

  1. certificate.crt
  2. privateKeykey

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

Вот таким нехитрым способом буквально за 10 минут с первой попытки мы создали самоподписанный SSL сертификат на Windows 10. В дальнейшем, такая генерация займет у вас не более 2-х минут, что не может не радовать!

Заключение

Данный способ считается продвинутым, но и само использование самоподписанного сертификата уже говорит о повышенном уровне подготовки и компетенциях. Если вы столкнулись с трудностями и у вас не получается создать самоподписанный SSL сертификат самостоятельно, то правильным решением будет прибегнуть к помощи панелей администрирования сервером, отличным и бесплатным вариантом является FastPanel – ее можно поставить на сервер одной командой и прямо внутри интерфейса создать самоподписанный ssl сертификат без всех этих кодов и прочего.

Я же пишу эту статью, так как столкнулся с проблемой генерации самоподписанного сертификата ssl внутри новой и набирающей популярность AAPanel. Панель отличная, в чем то даже удобнее вышеупомянутой FastPanel, но вот с самоподписанными SSL есть нюансы и сложности – нужно генерировать самостоятельно или уже ставить полноценный Let’s Encrypt, если есть такая возможность.

Что такое SSL-сертификат и как его сгенерировать и использовать для локальной разработки, в том числе — для тестирования на мобильных устройствах, разбирает старший веб-разработчик Noveo Антон.

Немного теории

SSL-сертификат — это цифровой сертификат, позволяющий убедиться в том, что сервер, передавший данные клиенту, не подменен и данные передал именно он.

Сертификат состоит из закрытого ключа, который держится в секрете и с помощью которого данные шифруются сервером, и самого сертификата с открытым ключом, с помощью которого данные расшифровываются клиентом. Не имея закрытого ключа, невозможно зашифровать данные таким образом, чтобы клиент расшифровал их тем же открытым ключом. Главная информация в сертификате — это то, кому он выдан, то есть доменное имя.

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

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

Для чего это нужно?

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

  • PWA-приложения,
  • приложения, использующие WebRTC.

Есть два способа выполнить эту задачу:

  1. Сгенерировать самоподписанный сертификат и добавить его в список доверенных корневых центров сертификации; таким образом устройство будет считать его валидным. Как следует из названия, это сертификат, который подписан закрытым ключом его самого же.
  2. Сгенерировать корневой сертификат и добавить его в список доверенных корневых центров сертификации, далее сгенерировать сертификат сервера и подписать его ранее созданным корневым сертификатом.

Подготовка

Нам понадобится OpenSSL. Инсталляторы-бинарники для Windows.

Файл конфигурации openssl.cfg

			[ req_distinguished_name ]
countryName         = CO
stateOrProvinceName = ST
localityName        = ST
organizationName    = O

####################################################################
# Extensions for when we sign normal certs (specified as default)
[ usr_cert ]
basicConstraints = CA:false
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
subjectAltName = email:move

####################################################################
# Same as above, but cert req already has SubjectAltName
[ usr_cert_has_san ]
basicConstraints = CA:false
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer

####################################################################
# Extensions to use when signing a CA
[ v3_ca ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer:always
basicConstraints = CA:true
subjectAltName=email:move

####################################################################
# Same as above, but CA req already has SubjectAltName
[ v3_ca_has_san ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer:always
basicConstraints = CA:true

[ req ]
prompt             = no
default_bits       = 4096
distinguished_name = req_distinguished_name
req_extensions = req_ext

[ req_ext ]
subjectAltName = @alt_names

[ alt_names ]
DNS.0 = example.com
DNS.1 = *.example.com
		

Генерируем самоподписанный сертификат

1. Генерируем приватный ключ:

			mkdir example.com
openssl genrsa -out example.com/example.com.key
		

Результат:

			Generating RSA private key, 2048 bit long modulus (2 primes)
........................+++++
..........................................................+++++
e is 65537 (0x010001)
		

2. Создаем запрос на сертификат:

			openssl req -new -key example.com/example.com.key -out
example.com/example.com.csr -config openssl.cfg -subj
"/CN=example.com certificate"
		

3. В файле конфигурации openssl.cfg нужно прописать доменное имя или несколько имен в блоке [alt_names].Раньше поддерживалось только одно имя, которое задавалось в поле CN, но сейчас можно указать несколько имен, а также сделать wildcard-сертификат на все поддомены.

			[ alt_names ]
DNS.0 = example.com
DNS.1 = *.example.com
		

4. Генерируем сертификат:

			openssl x509 -req -in example.com/example.com.csr -extensions
req_ext -extfile openssl.cfg -signkey
example.com/example.com.key  -out example.com/example.com.crt
-days 1825
		

5. Проверяем результат:

			openssl x509 -in example.com/example.com.crt -text
		

Результат:

			Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            0f:63:6b:b8:76:27:71:d1:e9:f3:53:01:11:11:7c:52:d6:c7:ea:c6
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN = example.com certificate
        Validity
            Not Before: Sep 27 05:08:48 2022 GMT
            Not After : Sep 26 05:08:48 2027 GMT
        Subject: CN = example.com certificate
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    00:c9:...:3b:24:
                    26:0f
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Alternative Name:
                DNS:example.com, DNS:*.example.com
    Signature Algorithm: sha256WithRSAEncryption
         20:a9:...:fe:fd:
         5f:30:e8:4a
-----BEGIN CERTIFICATE-----
MIIC+zCCAeO…8w6Eo=
-----END CERTIFICATE-----
		

Теперь у вас есть сам сертификат example.com.crt и файл ключа example.com.key, которые можно использовать в ваших приложениях.

Генерируем корневой сертификат + сертификат сервера

1. Генерируем приватный ключ корневого сертификата:

			mkdir ca
openssl genrsa -out ca/ca.key
		

Результат:

			Generating RSA private key, 2048 bit long modulus (2 primes)
...........................................+++++
...................................+++++
e is 65537 (0x010001)
		

2. Создаем сертификат:

			openssl req -x509 -new -key ca/ca.key -days 1825 -out ca/ca.crt
-extensions v3_ca_has_san -config openssl.cfg -subj "/CN=Root CA
		

3. Повторяем шаги 1-5 инструкции про самоподписанный сертификат.

4. Генерируем сертификат, подписанный нашим корневым сертификатом:

			openssl x509 -req -in example.com/example.com.csr -CA ca/ca.crt
-CAkey ca/ca.key -CAcreateserial -extensions req_ext -extfile
openssl.cfg -out example.com/example.com.ca.crt -days 1825
		

5. Проверяем результат:

			openssl x509 -in example.com/example.com.ca.crt -text
		

Результат:

			Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            27:f4:ec:08:a8:36:b8:38:81:53:d9:8f:b5:fe:91:13:79:f0:9e:dc
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN = Root CA
        Validity
            Not Before: Sep 27 05:46:19 2022 GMT
            Not After : Sep 26 05:46:19 2027 GMT
        Subject: CN = example.com certificate
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    00:c9:...:26:0f
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Alternative Name:
                DNS:example.com, DNS:*.example.com
    Signature Algorithm: sha256WithRSAEncryption
         9e:72:...:57:17
-----BEGIN CERTIFICATE-----
MIIC…JXFw==
-----END CERTIFICATE-----
		

Теперь у вас есть сертификат сервера example.com.crt в комплекте с ключом example.com.key, а также корневой сертификат ca.crt в комплекте с ключом ca.key. Если добавить корневой сертификат в хранилище корневых сертификатов в вашей системе или браузере, то это сделает валидными все сертификаты, подписанные им.

Браузер Chrome использует системное хранилище сертификатов:

Генерируем SSL-сертификаты для Windows и Android 1

Добавляем корневой сертификат в браузере Mozilla

Генерируем SSL-сертификаты для Windows и Android 2

Генерируем SSL-сертификаты для Windows и Android 3

Возможно, придется отключить DNS over HTTPS, чтобы браузер использовал системный DNS, который, в свою очередь, использует файл hosts.

Генерируем SSL-сертификаты для Windows и Android 4

Генерируем SSL-сертификаты для Windows и Android 5

Использование на примере create-react-app

1. Добавляем в .env следующие переменные:

			HTTPS=true
SSL_CRT_FILE=certs/example.com.crt
SSL_KEY_FILE=certs/example.com.key
HOST=example.com
		

2. Добавляем в файл host (C:WindowsSystem32Driversetchosts для Windows, /etc/hosts для Ubuntu) строку:

			192.168.2.116 example.com
		

чтобы example.com резолвился на локальный адрес компьютера (свой можно посмотреть в свойствах подключения).

3. Запускаем приложение и видим, что соединение защищено и сертификат валидный:

Генерируем SSL-сертификаты для Windows и Android 6

Как установить сертификат на мобильное устройство Android?

1. Поместить телефон и ПК в одну локальную сеть.

2. Использовать create-react-app.

3. Положить в папку public ca.crt.

4. Прописать в .env адрес компьютера в локальной сети:

5. Запустить create-react-app без https.

6. Открыть на телефоне http://192.168.2.116:3000/ca.crt и установить сертификат:

Генерируем SSL-сертификаты для Windows и Android 7

Как прописать домен на Android устройстве?

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

1. Имея root-доступ на смартфоне, отредактировать файл hosts.

2. Если прав root нет, то есть более элегантное решение — воспользоваться приложением Postern. Это VPN-сервер, запускаемый на вашем устройстве и способный модифицировать трафик, в том числе перехватывать DNS-запросы и отвечать на них. Через него можно установить соответствие доменного имени example.com ip-адресу вашего компьютера в локальной сети, где запущен webpack-dev-server:

Генерируем SSL-сертификаты для Windows и Android 8

То, что Postern запущен, можно понять по иконке замка в статус-баре (VPN включен, все запросы идут через него).

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

Генерируем SSL-сертификаты для Windows и Android 9

Готово! Теперь вы не только знаете в теории, что такое SSL-сертификат, но и умеете с ним работать на практике.

Самоподписанные сертификаты часто используются для разработки, тестирования или внутреннего использования, когда нет необходимости в сертификатах, выданных доверенными центрами сертификации (CA). В этой статье мы пошагово разберём, как создать такой сертификат с помощью OpenSSL.

Что потребуется

  • OpenSSL (предустановлен в большинстве дистрибутивов Linux и macOS, на Windows можно установить вручную)
  • Терминал

Шаг 1: Создание приватного ключа

Приватный ключ используется для подписи сертификата и защищает соединение.

openssl genrsa -out private.key 2048
  • private.key — имя файла с приватным ключом
  • 2048 — длина ключа в битах (можно указать 4096 для большей надёжности)

Шаг 2: Создание запроса на сертификат (CSR)

Хотя мы не будем отправлять CSR центру сертификации, он нужен для создания сертификата.

openssl req -new -key private.key -out request.csr

В процессе выполнения команды OpenSSL задаст вам вопросы:

  • Country Name (код страны)
  • State or Province Name (регион)
  • Locality Name (город)
  • Organization Name (название компании)
  • Common Name (домен, например: example.com или localhost)

⚠️ Важно: в поле Common Name укажите домен или IP-адрес, для которого вы создаёте сертификат.

Шаг 3: Создание самоподписанного сертификата

Теперь, используя ключ и CSR, создаём сертификат, действительный, например, один год (365 дней):

openssl x509 -req -days 365 -in request.csr -signkey private.key -out certificate.crt

certificate.crt — итоговый сертификат

Шаг 4 (опционально): Объединение сертификата и ключа в .pem

Некоторые приложения (например, Nginx) используют формат PEM:

cat private.key certificate.crt > fullchain.pem

Проверка содержимого сертификата

Убедитесь, что всё сработало:

openssl x509 -in certificate.crt -text -noout

Вы увидите информацию о сроке действия, алгоритмах и субъекте сертификата.

Где можно использовать самоподписанный сертификат

  • Локальные серверы (например, localhost)
  • Тестовые среды
  • Внутренние сервисы, доступные только по VPN

Важное замечание

Браузеры и системы не доверяют самоподписанным сертификатам, и будут показывать предупреждения при открытии таких сайтов. Это нормально для тестирования, но для продакшена рекомендуется использовать сертификаты от Let’s Encrypt или другого CA.

Заключение

Создание самоподписанного SSL-сертификата — простой и быстрый способ обеспечить HTTPS для разработки и тестирования. OpenSSL предоставляет все необходимые инструменты, и при правильном подходе вы можете безопасно работать даже в изолированных средах.

Как сгенерировать самоподписанный сертификат

Мы уже рассказывали как сгенерировать SSL-сертификат от Let’s Encrypt в операционных системах Windows и Linux. Это полноценные сертификаты, предназначенные для использования в рабочем окружении. Но для тестирования может потребоваться создание большого их количества, а процесс верификации нескольких сертификатов Let’s Encrypt может быть неудобным. Для массовой генерации больше подходят самоподписанные сертификаты.

В TrueConf Server можно генерировать самоподписанные сертификаты прямо в панели управления сервером. Но если по каким-то причинам этот способ вам не подходит или нужно создать самоподписанный сертификат для других продуктов TrueConf (например, TrueConf Group), то это можно сделать с помощью криптографической библиотеки OpenSSL.

Установка OpenSSL и создание сертификата на Windows

  • Перейдите на страницу загрузки OpenSSL, скачайте необходимый инсталлятор версии Light в зависимости от разрядности ОС и запустите его.
  • После установки программы, необходимо добавить путь к ней как системную переменную. Для этого перейдите в Панель управления → Система → Дополнительные параметры системы → Переменные среды.
    Как сгенерировать самоподписанный сертификат 3

    В разделе Системные переменные выберите переменную Path и нажмите Изменить. В открывшемся окне нажмите Создать и введите путь к папке bin установленного приложения (C:\Program Files\OpenSSL-Win64\bin по умолчанию). Нажмите ОК.

    Для применения настроек может понадобиться перезагрузка компьютера.

  • Создайте папку, куда вы бы хотели сохранить созданные сертификаты (например, C:\cert).
  • Откройте командную строку (cmd) от имени администратора и перейдите в ранее созданную папку (cd /d C:\cert).
  • Выполните следующую команду:

    openssl req x509 sha256 nodes days 365 newkey rsa:2048 keyout privateKey.key out certificate.crt

    где:
    -x509 — уточнение, что нам нужен именно самоподписанный сертификат;
    -newkey — автоматическое создание ключа сертификата;
    -days — срок действия сертификата в днях;
    -keyout — путь (если указан) и имя файла ключа;
    -out —  путь (если указан) и имя файла сертификата.

  • Последовательно введите: код страны, её название, город, название компании, название отдела, FQDN сервера или ваше имя и адрес электронной почты.
    Как сгенерировать самоподписанный сертификат 4

  • В папке C:\cеrt сгенерируются 2 файла:
    • certificate.crt — сам сертификат;
    • privateKey.key — файл ключа.

Установка OpenSSL и создание сертификата на Linux

Для примера мы рассмотрим генерацию самоподписанного сертификата на сервере с развёрнутой ОС Debian 10.

Для выполнения перечисленных далее команд в ОС должна присутствовать программа sudo и пользователь, под которым они запускаются, должен быть в соответствующей группе. В Debian по умолчанию sudo может отсутствовать, проверьте её наличие командой sudo -V и установите при необходимости с помощью команды apt install sudo (выполняется под учётной записью root). А для добавления пользователя с логином user в группу sudo выполните sudo usermod -a -G sudo user.

Некоторые Linux дистрибутивы поставляются с уже установленным пакетом openssl. Чтобы проверить, установлен ли этот пакет у вас, в терминале выполните в терминале команду openssl version. Если в ответ появится текст вида OpenSSL 1.1.0l  10 Sep 2019, то перейдите к шагу 3.

  • Обновите установленные в системе пакеты с помощью консольной команды:

    sudo apt update && sudo apt y upgrade

  • Установите OpenSSL, введя команду:
  • Создайте каталог, куда вы бы хотели сохранить созданные сертификаты с помощью команды  mkdir (например,  mkdir /home/$USER/cert).

    $USER – переменная окружения ОС семейства Linux, при использовании в командах она автоматически заменяется на логин текущего пользователя в системе.

  • Перейдите в ранее созданный каталог с помощью команды cd (например, cd /home/$USER/cert).
  • Выполните шаги 5-6 раздела создания сертификата для Windows.
  • В каталоге /home/$USER/cert сгенерируются 2 файла:
    • certificate.crt — сам сертификат;
    • privateKey.key — файл ключа.

Попробуйте безопасную ВКС-платформу Труконф!

ВКС-решение TrueConf Server работает внутри вашей закрытой сети без подключения к интернету
и позволяет собирать до 1500 человек в одной конференции!

Крупнейшее ВКС-сообщество в России

Живой диалог с разработчиками, помощь с настройкой ВКС-систем, полезные материалы, ранние доступы и бета-версии — всё в специальном чате @trueconf_talks.

Подписаться

Актуальные новости из мира ВКС

Подписывайтесь на канал нашего информационного партнёра «Видео+Конференция», чтобы быть в курсе последних новостей в сфере видеоконференцсвязи и AV-оборудования.

  • Главная
  •  — 
  • Статьи 1С
  •  — 
  • Статьи и инструкции по 1С
  •  — 
  • Техподдержка

В статье рассмотрим как создать самоподписанный SSL сертификат с помощью OpenSSL на Windows Server, а также установка сертификата в IIS и привязка к сайту.

Что такое SSL-сертификат и для чего он нужен?

По сути, SSL-сертификат — это цифровая подпись вашего сайта, подтверждающая его подлинность. Использование сертификата позволяет защитить как владельца сайта, так и его клиентов.

SSL-сертификат даёт возможность владельцу применить к своему сайту технологию SSL-шифрования.

Таким образом, назначение SSL-сертификата — обеспечить безопасное соединение между сервером и браузером пользователя, надёжно защитить данные от перехвата и подмены.

Как создать самоподписанный SSL сертификат и установить его на Windows Server (IIS)

Прежде всего нужно установить утилиту OpenSSL. Как ее установить рассказано в отдельной статье.

Далее, создаем отдельную папку в которой будем создавать файлы сертификата (к примеру C:\OpenSSL)

Открыть командную строку в режиме Администратор

Правой кнопкой по кнопке ПУСК — Командная строка (Администратор)

Перейдем в нашу папку

Команда cd «c:\OpenSSL»

Генерируем приватный ключ

Команда openssl genrsa -out server.key 2048

Выполняем запрос на сертификат

Команда: openssl req -new -key server.key -out server.csr

Вводим информацию и компании и домене

Генерируем самоподписанный сертификат

Команда openssl req -new -x509 -days 365 -key server.key -out server.crt

Преобразуем сертификат и ключ в файл .pfx

Команда openssl pkcs12 -inkey server.key -in server.crt -export -out server.pfx

придумайте пароль и вводите его два раза, при этом не будет видно что он вводится

Импортируем сертификат в наш веб-сервер

Открываем Диспетчер служб IIS

Приязываем сертификат к сайту

Делаем перезапуск

Готово.

После этих действий ваш сайт будет доступен по протоколу HTTPS

Назад к списку статей


Павел4 декабря 2021 13:46

Добрый день.  А в чем разника созданного в Open SSL  сертификате  и  просто  созданного  из  самого ISS в  разделе Сертификаты Сервера  самозаверенного сертификата ?  

ИмяЦитировать0

Комментировать

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Floor plan creator для windows
  • Как перезагрузить windows 10 в безопасный режим с поддержкой сети
  • Ошибка 0 000000d1 windows 7
  • Серийный код windows xp
  • Создание своего веб сервера на windows