Саздание сертификатов SSL (TLS) для сайта
Генерация корневого приватного ключа
openssl genpkey -algorithm RSA -out rootCA.key
-out используется для вывода ключа в файл
Использование дополнительных параметров шифрования, AES 128 бит и дополнительный пароль шифрования:
openssl genpkey -algorithm RSA -out rootCA.key -aes-128-cbc -pass pass:test
Список алгоритмов шифрования можно получить командой:
man enc
По умолчанию при генерации ключа используется 2048 бит, это число можно изменить дополнительным параметром команды:
openssl genpkey -algorithm RSA -out rootCA.key -pkeyopt rsa_keygen_bits:4096
Создание самодписанного корневого сертификата CA:
Данный сертификат (rootCA.crt) генерируется на основе уже созданного корневого ключа: rootCA.key
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.crt
Созданный сертификат нужен для всех узлов, которые хотят доверять CA.
Последнюю команду необходимо выполнять для каждого клиента которому нужен доверенный сертификат CA.
Создать приватный ключ для сертификата web-сервера
openssl genpkey -algorithm RSA -out mydomain.com.key
Создать файл csr-запрос на получение сертификата и подпись CA
На основе приватного(закрытого) ключа можно отправить Certificate Signing Request (CSR) - запрос на подпись в центр сертификации. Этот файл содержит публичный(открытый) ключ подписанный соответствующим ему закрытым ключом и другую информацию узла(отличительные признаки).
Создание CSR требует вводить в интерактивном режиме отличительные признаки сертификата(домен, страна, почта ...). Чтобы не оставлять поле пустым, необходимо оставить хотябы точку.
При генерации CSR необходимо указать common name доменное имя для которого создается сертификат.
openssl req -new -key mydomain.com.key -out mydomain.com.csr
Следующая команда не требует ввода, так отличительные признаки передаются в команде
openssl req -new -sha256 -key mydomain.com.key -subj "/C=US/ST=CA/O=MyOrg, Inc./CN=mydomain.com" -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "\n[SAN]\nsubjectAltName=DNS:mydomain.com,DNS:www.mydomain.com")) -out mydomain.com.csr
Проверка запроса csr
Может понадобиться перед отправкой на подпись в CA
openssl req -in mydomain.com.csr -noout -text
Создание сертификата
1.У меня есть CA(центр сертификации или самоподписанный сертификат) и его корневой приватный ключ(закрытый ключ)
2.Есть приватный ключ сервера и созданный на его основе csr(mydomain.com) файл.
Отправить запрос созданный csr на подпись в CA и получить .crt для сервера.
openssl x509 -req -in mydomain.com.csr -CA ../rootCA.crt -CAkey ../rootCA.key -CAcreateserial -out mydomain.com.crt -days 500 -sha256
Подытожим
rootCA.key — закрытый(приватный ключ) CA(Центра Сертификации)
rootCA.crt — открытый(публичный) корневой сертификат CA(Центра Сертификации) — должен быть установлен на всех клиентах
mydomain.com.key — приватный ключ веб-сайта, храниться на web-сервере.
mydomain.com.csr — запрос(csr) на подпись сертификата
mydomain.com.crt — публичный сертификат сайта
Продолжение
Проверить валидность сертификата для домена можно здесь: https://www.ssllabs.com/ssltest/analyze.html?d=netbash.ru
Создание CSR из существующего сертификата
openssl x509 -req -in mydomain.com.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out mydomain.com.crt -days 500 -sha256
Источники
Связанные темы
Конфигурация vsftpd в ОС Linux Ubuntu
Установка и конфигурация samba в Linux
Оптимизация запросов в Postgresql
Оператор разрешения видимости в php
Структура каталогов linux(Debian)
Позднее статическое связывание
Язык программирования C в Linux
Буферный кэш и журнал в Postgresql
Установка и настройка MS SQL Server 2008 на Windows Server 2008 r
Методы создания экземпляра класса в php
Удаление файлов из bash linux с возможностью восстановления
Использование команды tee в Linux
Использование модуля pg_stat_statements в postgresql
Поиск уязвимостей и следов взлома в Linux
Системный каталог в Postgresql
Конфигурация openvpn сервера в Linux Alpine
Конфигурация почтового сервера
Использование iptables в linux
Табличные пространства в Postgresql
Определение данных в Postgresql
Изменение временной зоны в Postgresql
Сценарий инициализации в Linux
Управление планировщиком в Postgresql
Выполнение html и js кода в php
Программирование на языке Assembler в Linux
Основные команды psql и sql Postgresql
Методы формирования соединений наборов строк
Оптимизация производительности
Использование wget и curl в Linux
Агрегирование и группировка в Postgresql
Основные понятия реляционной модели
Автоматическая загрузка классов
Команда chattr и lsattr в Linux
Сброс пароля root в grub (Linux)
Лексическая структура в Postgresql
Базовые понятие о настройках и безопасности в сети
Использование awk Linux Alpine
Изменить часовой пояс в Linux Alpine
Перенести кластер Postgresql-10 на Postgresql-12
Наследование с помощью extends в php
Конфигурация Postgresql-12 для удаленного подключения
Использование ifconfig в Linux
IP-телефония в компьютерных сетях
Создание и управление кластером postgresql
Системные каталоги в Postgresql
Обновление кластера Postgresql
Этапы запроса и получения результата в postgresql
Проверка и восстановление файловой системы в Linux
Настройка репликации в postgresql
Полнотекстовый поиск в Postgresql
Блокировка пользователя в Linux
Анализ производительности виртуальной машины
Мониторинг событий в linux с помощью auditd
Использование RAID массивов в Linux
Настройка виртуального сервера Nginx
Оптимизация производительности Postgresql
Конфигурация Postfix в Linux Alpine
Проверка на необходимость перезапуска после обновления пакетов
Стандартные потоки и перенаправление ввода/вывода в Linux
Конструкторы и деструкторы в php
Устройство и принцип работы Postgresql
Архивирование и сжатие файлов в Linux
Сценарии инициализации в Linux Ubuntu
Полезные команды и скрипты Linux
Условная конструкция if в Linux
Ковариантность и контравариантность
Использование оператора select в языке shell
Внутренние и внешние команды linux
Использование командной строки bash
Использование конструкции case в Linux
Настройка openvpn сервера в Linux
Полезные сетевые утилиты Linux
Использование fail2ban в Linux
Установка сервера Apache Linux Alpine
Конфигурация сети в Alpine Linux
Compression and Decompression Nginx
Настройка ведения журнала Nginx и поиск ошибок
Преодоление разрыва соединения
Мониторинг системы Linix с помощью getconf
Использование бота Telegram в Linux
Использование ANCI последовательностей в Linux
Работа в командной строке Linux
Подключение к серверу Postgresql
Создание deb пакета в Linux Ubuntu
Проблемный сертификат IdenTrust DST Root CA X3
Установка и настройка tftp сервера в Linux Ubuntu
Тест производительности с помощью pgbench в postgresql
Многоверсионность в Postgresql