Саздание сертификатов SSL (TLS) для сайта

Саздание сертификатов 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
    Источники
    Последнее изменение: 07.10.2024 15:28


    Связанные темы

    Что такое tty

    Конфигурация vsftpd в ОС Linux Ubuntu

    Передача аргументов по ссылке

    Установка и конфигурация samba в Linux

    Оптимизация запросов в Postgresql

    Оператор разрешения видимости в php

    Перечисления

    test1

    Типы данных в Postgresql

    Структура каталогов linux(Debian)

    Разделы диска Linux

    Ключевое слово static в php

    Позднее статическое связывание

    Модификация таблиц

    Язык программирования C в Linux

    Буферный кэш и журнал в Postgresql

    Установка и настройка MS SQL Server 2008 на Windows Server 2008 r

    Исключения

    Использование strace в Linux

    Очистка базы данных

    Шаблоны template в Postgresql

    Методы создания экземпляра класса в php

    Конфигурация сервиса SSHFS

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

    Команда exec linux

    Представления в Postgresql

    Значения по умолчанию

    Подзапросы в Postgresql

    Инструкция return в php

    Удаление файлов из bash linux с возможностью восстановления

    Использование команды tee в Linux

    Использование модуля pg_stat_statements в postgresql

    Поиск уязвимостей и следов взлома в Linux

    Транзакции в Postgresql

    Схемы в Postgresql

    Системный каталог в Postgresql

    Структура пакета deb

    Функции переменных в PHP

    Конфигурация openvpn сервера в Linux Alpine

    Dialog в Linux Alpine

    Конфигурация ssl в Nginx

    Конфигурация почтового сервера

    Создание Unit в Linux Ubuntu

    Использование iptables в linux

    Монтирование в linux

    Язык shell в Linux

    Процессы и потоки в Linux

    Использование curl в Linux

    Табличные пространства в Postgresql

    Определение данных в Postgresql

    Изменение временной зоны в Postgresql

    Nginx content caching

    Балансировка нагрузки в Nginx

    Создание демона в среде Linux

    Сценарий инициализации в Linux

    Копирование в ssh

    Конфигурация nginx

    Адаптивная верстка

    Индексы в Postgresql

    Systemd в Linux

    Использование apt

    Менеджер пакетов dpkg

    Библиотеки Linux

    Анализ rdp

    Управление планировщиком в Postgresql

    Настройка swap в Linux

    Sysvinit в Linux Ubuntu

    Использование EXPLAIN

    Информация о системе

    Выполнение html и js кода в php

    Запросы в Postgresql

    Резервная копия postgresql

    Ядро Linux

    Основы тестирования

    История команд в Linux

    Использование md5sum

    Изменение данных в Postgresql

    Программирование на языке Assembler в Linux

    Основные команды psql и sql Postgresql

    Методы формирования соединений наборов строк

    Оптимизация производительности

    RabbitMQ

    Использование wget и curl в Linux

    ssh в Linux

    Возможности ssh в Linux

    Агрегирование и группировка в Postgresql

    Основные понятия реляционной модели

    Замыкание в PHP

    Присваивание объектов в php

    Автоматическая загрузка классов

    Команда chattr и lsattr в Linux

    Сброс пароля root в grub (Linux)

    Лексическая структура в Postgresql

    Анонимные функции

    Константы классов

    Подготовленные операторы

    dmesg

    Почтовые протоколы

    DNS

    Базовые понятие о настройках и безопасности в сети

    Шпаргалка php

    Использование awk Linux Alpine

    Использование sed в Linux

    Изменить часовой пояс в Linux Alpine

    Отладка в php

    Логирование в postgresql

    Перенести кластер Postgresql-10 на Postgresql-12

    Наследование с помощью extends в php

    Symfony

    Применение getopt в Linux

    Введение в docker

    Переменные окружения в Linux

    Конфигурация Postgresql-12 для удаленного подключения

    tmpfs в Linux

    Возможности шифрования

    Использование ifconfig в Linux

    Команды IMAP в Linux

    Команды SMTP в Linux

    Использование tshark в Linux

    IP-телефония в компьютерных сетях

    Роли и атрибуты в Postgresql

    Memcached

    Конфигурация

    Создание и управление кластером postgresql

    Системные каталоги в Postgresql

    Обновление кластера Postgresql

    HTTP cookies

    Типы данных в php

    Переменные в php

    Объекты и ссылки

    Использование psql

    Использование lsof в Linux

    Этапы запроса и получения результата в postgresql

    Проверка и восстановление файловой системы в Linux

    Настройка репликации в postgresql

    Полнотекстовый поиск в Postgresql

    Блокировка пользователя в Linux

    Анализ производительности виртуальной машины

    Операторы в php

    Мониторинг событий в linux с помощью auditd

    Создание RAID массивов

    Использование RAID массивов в Linux

    Конфигурация пула php-fpm

    Использование opcache в php

    Управляющие структуры

    Классы символов в Linux

    Настройка виртуального сервера Nginx

    Использование tar в Linux

    Абстрактные классы в php

    Оптимизация производительности Postgresql

    Интерфейсы объектов в php

    Подстановка имен файлов

    Конфигурация Postfix в Linux Alpine

    Проверка на необходимость перезапуска после обновления пакетов

    Стандартные потоки и перенаправление ввода/вывода в Linux

    Мониторинг Postgresql

    Конструкторы и деструкторы в php

    Устройство и принцип работы Postgresql

    Подстановочные символы bash

    Файлы в Linux

    Функции в языке Shell

    Низкий уровень Postgresql

    Использование grep в Linux

    Архивирование и сжатие файлов в Linux

    Трейты в PHP

    Редактор vim

    Анализ дисковой активности

    Константы в php

    Использование find Linux

    Сценарии инициализации в Linux Ubuntu

    Права пользователей и групп

    Константы в php

    Полезные команды и скрипты Linux

    Переменные в Linux

    foreach for do-while

    Стрелочные функции в php

    Область видимости в php

    Условная конструкция if в Linux

    Анонимные классы в PHP

    Ковариантность и контравариантность

    Использование tr в linux

    Использование grep в Linux

    Использование xargs в Linux

    Фигурные скобки в bash

    Конфигурация NFS Linux

    Циклы в языке shell

    Использование оператора select в языке shell

    Внутренние и внешние команды linux

    Использование командной строки bash

    Полезные функции ООП в PHP

    Перезагрузка в php

    Использование конструкции case в Linux

    Использование audit

    Подстановка команд в Linux

    switch и match

    Настройка openvpn сервера в Linux

    Полезные сетевые утилиты Linux

    Поиск уязвимостей в сети

    Использование fail2ban в Linux

    Свойства в php

    Сравнение файлов в Linux

    Установка сервера Apache Linux Alpine

    Конфигурация Apache2 в Linux

    Конфигурация сети в Alpine Linux

    Compression and Decompression Nginx

    Функция declare в php

    Магические методы в PHP

    Базовые возможности Nginx

    Ограничение доступа http

    Мониторинг активности в Nginx

    Настройка ведения журнала Nginx и поиск ошибок

    include и require

    Сериализация

    openssl в Linux Alpine

    Работа с модулями в Linux

    Преодоление разрыва соединения

    Оператор goto в php

    Классы только для чтения

    Perf

    Мониторинг системы Linix с помощью getconf

    Comet сервер

    Использование acme в Linux

    RDP в Linux

    Callable-объекты в php

    Использование netstat Linux

    Использование бота Telegram в Linux

    Использование ANCI последовательностей в Linux

    Серверная пищалка beep

    Работа в командной строке Linux

    Подключение к серверу Postgresql

    Создание deb пакета в Linux Ubuntu

    Проблемный сертификат IdenTrust DST Root CA X3

    Команды POP3 в Linux

    Подключение по ключу (ssh)

    Ключевое слово Final

    Установка и настройка tftp сервера в Linux Ubuntu

    Тест производительности с помощью pgbench в postgresql

    Многоверсионность в Postgresql

    Изменение кодировки базы данных в Postgresql

    Клонирование объектов

    Пространство имен

    Блокировки в Postgresql

    Здесь пока нет комментариев
    Добавлять комментарии могут только авторизованные пользователи

    Авторизоваться
    Я буду рекламой
    Я тоже буду рекламой
    И я
    ВВЕРХ