Окна Openssl, как использовать

Обновлено: 21.11.2024

Программа openssl предоставляет большое разнообразие команд, каждая из которых часто имеет множество параметров и аргументов. Многие команды используют внешний файл конфигурации для некоторых или всех своих аргументов и имеют опцию -config для указания этого файла. Переменная среды OPENSSL_CONF может использоваться для указания местоположения файла конфигурации. Если переменная среды не указана, файл по умолчанию создается в области хранилища сертификатов по умолчанию с именем openssl.cnf. Параметры в этом файле конфигурации по умолчанию зависят от флагов, установленных при сборке используемой версии OpenSSL.

Эта статья представляет собой обзор доступных инструментов, предоставляемых openssl. Для получения подробной информации об использовании и реализации вы можете найти справочные страницы, которые автоматически генерируются из исходного кода, на официальном сайте проекта OpenSSL. Точно так же сам исходный код можно найти на домашней странице проекта OpenSSL, а также на Github OpenSSL. На основном сайте OpenSSL также есть обзор утилит командной строки, а также ссылки на всю соответствующую документацию.

Содержание

Точкой входа для библиотеки OpenSSL является двоичный файл openssl, обычно /usr/bin/openssl в Linux. Общий синтаксис для вызова openssl выглядит следующим образом:

Кроме того, вы можете вызвать openssl без аргументов, чтобы войти в интерактивный режим. Затем вы можете вводить команды напрямую, выходя либо с помощью команды quit, либо с помощью сигнала завершения с помощью Ctrl+C или Ctrl+D. Ниже приведен пример интерактивного сеанса, в котором пользователь дважды вызывает основную команду перед использованием команды quit для завершения сеанса.

Этот раздел представляет собой краткое руководство по выполнению самых основных задач с использованием OpenSSL. Подробное объяснение синтаксиса и семантики приведенных здесь команд см. в разделе, посвященном командам.

Получение справки [ изменить ]

Как упоминалось ранее, общий синтаксис команды: команда openssl [параметры_команды] [аргументы_команды] . Команда справки ничем не отличается, но у нее есть свои особенности. Чтобы просмотреть меню справки верхнего уровня, вы можете вызвать openssl следующим образом.

Этот запрос выведет все доступные команды, например:

Обратите внимание, что приведенный выше вывод был усечен, поэтому отображаются только первые четыре строки вывода.

Меню справки для каждой команды можно запросить двумя способами. Во-первых, можно повторить ту же команду, что и выше, за которой следует имя команды, для которой нужно напечатать справку.

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

Второй способ запросить меню справки для конкретной команды — использовать первый параметр в выходных данных, показанных выше, а именно команду openssl -help . Обе команды дадут одинаковый результат; отображаемое меню справки будет точно таким же.

Дополнительную информацию об использовании той или иной команды можно найти на справочных страницах проекта. Еще одним отличным источником информации является проект perldocs. perldoc — это утилита, включенная в большинство, если не во все дистрибутивы Perl, и она способна отображать документацию в различных форматах, один из которых — в виде справочных страниц. Неудивительно, что документация проекта генерируется из файлов pod, расположенных в каталоге doc исходного кода.

Получение информации о версии библиотеки [ редактировать ]

Как упоминалось выше, в меню справки команды version можно запросить дополнительные параметры, например:

Использование параметра -a для отображения всей информации о версии приводит к следующему результату на моем текущем компьютере:

Создание закрытого ключа RSA [ изменить ]

Создание закрытого ключа можно выполнить различными способами в зависимости от типа ключа, алгоритма, битов и других параметров, которые могут потребоваться в вашем конкретном случае использования. В этом примере мы генерируем закрытый ключ, используя RSA и размер ключа 2048 бит.

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

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

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

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

Имейте в виду, что вышеуказанный ключ был сгенерирован исключительно в образовательных целях; никогда не давайте никому доступ к вашим личным ключам.

Создание открытого ключа [ изменить ]

Предварительно сгенерировав закрытый ключ, вы можете сгенерировать соответствующий открытый ключ с помощью следующей команды.

Вы можете еще раз просмотреть ключевые сведения, на этот раз используя немного другую команду.

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

Дополнительную информацию о создании ключей см. в документации по исходному коду, расположенной в файле doc/HOWTO/keys.txt.

Создание ключей на основе эллиптических кривых [ редактировать ]

По сути, создание ключа состоит из двух шагов:

  1. Создайте параметры для конкретной кривой, которую вы используете
  2. Используйте эти параметры для создания ключа

Чтобы просмотреть список кривых, изначально поддерживаемых openssl, вы можете использовать параметр -list_curves при вызове команды ecparam.

В этом примере я буду использовать кривую prime256v1, которая представляет собой кривую X9.62/SECG по 256-битному полю простых чисел.

Создание параметров кривой [ редактировать ]

Выбрав нашу кривую, мы теперь вызываем ecparam для создания нашего файла параметров.

Печать параметров на стандартный вывод [ редактировать ]

Вы можете распечатать сгенерированные параметры кривой на выходе терминала с помощью следующей команды:

Печать параметров в виде кода C [править]

Аналогично вы также можете вывести сгенерированные параметры кривой в виде кода C. Затем параметры можно загрузить, вызвав функцию get_ec_group_XXX(). Для вывода кода C на текущий вывод терминала можно использовать следующую команду:

А вот первые несколько строк соответствующего вывода:

Создание ключа [ изменить ]

Собираем все вместе [ изменить ]

Процесс создания кривой на основе эллиптических кривых можно упростить, вызвав команду genpkey напрямую и указав алгоритм и имя кривой, которые будут использоваться для создания параметров. В простейшем виде команда для генерации ключа на основе той же кривой, что и в примере выше, выглядит так:

Эта команда приведет к тому, что сгенерированный ключ будет напечатан на выходе терминала.

Помните, что вы можете указать алгоритм шифрования для шифрования ключа, который вы можете или не хотите делать, в зависимости от вашего конкретного случая использования. Вот немного более полный пример, показывающий ключ, сгенерированный с помощью пароля и записанный в определенный выходной файл.

Как и в предыдущем примере, вы можете использовать команду pkey для проверки только что сгенерированного ключа.

Для получения более подробной информации о криптографии на эллиптических кривых или генерации ключей посетите справочные страницы.

Строки кодировки Base64 [ редактировать ]

Для простого кодирования строк можно использовать синтаксис «здесь строка» с командой base64, как показано ниже. Интуитивно понятно, что флаг -e указывает кодируемое действие.

Аналогично флаг -d команды base64 может использоваться для указания режима декодирования.


Примечание. длина строки base64 ограничена 76 символами по умолчанию в openssl (и генерируется с 64 символами в строке).

Чтобы иметь возможность декодировать строку base64 без перевода строки, длина которой превышает стандартное ограничение в 76 символов, используйте параметр -A.

Однако рекомендуется разбивать строки base64 на несколько строк по 64 символа, поскольку параметр -A содержит ошибки, особенно при обработке длинных файлов.

Создание хэша файла [ ​​изменить ]

Одно из основных применений команды dgst (сокращение от дайджест) — просмотр хэша данного файла. Для этого просто вызовите команду с указанным алгоритмом дайджеста. В этом примере я буду хешировать произвольный файл в своей системе, используя алгоритмы MD5, SHA1 и SHA384.

Чтобы получить список доступных алгоритмов дайджеста, вы можете использовать следующую команду.

Вы также можете использовать аналогичную команду для просмотра доступных команд дайджеста:

Ниже приведены три примера вызова команд md5, sha1 и sha384 дайджеста с использованием того же файла, что и при вызове команды dgst выше.

Шифрование и дешифрование файлов [ редактировать ]

В следующем примере демонстрируется простое шифрование и дешифрование файлов с помощью команды enc. Первый аргумент — это алгоритм шифрования, используемый для шифрования файла. Для этого примера я тщательно выбрал алгоритм AES-256 в режиме CBC, просматривая доступные шифры и выбирая первый попавшийся. Чтобы увидеть список доступных шифров, вы можете использовать следующую команду.

Вы также можете использовать следующую команду:

Выбрав алгоритм шифрования, вы должны затем указать, является ли предпринимаемое вами действие шифрованием или дешифрованием, с помощью флагов -e или -d соответственно. Флаг -iter указывает количество итераций пароля, используемого для получения ключа шифрования.Более высокое количество итераций увеличивает время, необходимое для грубой силы результирующего файла. Использование этой опции подразумевает включение функции формирования ключа на основе пароля 2, обычно устанавливаемой с помощью флага -pbkdf2. Затем мы используем флаг -salt, чтобы включить использование случайно сгенерированной соли в функции получения ключа.

Собрав все вместе, вы можете увидеть команду для шифрования файла и соответствующий вывод ниже. Обратите внимание, что пароли, введенные пользователем, пусты, как обычно в сеансе терминала.

Аналогичная команда расшифровки выглядит следующим образом:

Существует три различных типа команд. Это стандартные команды, команды шифрования и команды дайджеста. Вызов команды верхнего уровня OpenSSL help без аргументов приведет к тому, что openssl распечатает все доступные команды по группам, отсортированные по алфавиту.

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

  • Перейдите на этот веб-сайт: ссылка для загрузки OpenSSL
  • Перейдите на страницу и выберите версию (в формате .EXE):
    • Win64 OpenSSL v1.X.X: если ваша ОС 64-разрядная
    • Win32 OpenSSL v1.X.X: если ваша ОС 32-разрядная

    Использование OpenSSL на компьютере с Windows

    По умолчанию OpenSSL для Windows устанавливается в следующий каталог:

    • если вы установили Win64 OpenSSL v1.X.X: C:\Program Files\OpenSSL-Win64\
    • если вы установили Win32 OpenSSL v1.X.X: C:\Program Files (x86)\OpenSSL-Win32\

    Чтобы запустить OpenSSL, откройте командную строку с правами администратора.

    b) Сгенерируйте закрытый ключ (.key) и CSR (запрос на подпись сертификата)

    В рамках получения (обновления или повторного выпуска) сертификата вам потребуется создать закрытый ключ и соответствующий CSR. Для этого советуем воспользоваться нашим онлайн-мастером для выполнения команды OpenSSL с соответствующими параметрами.
    Откройте командную строку с правами администратора (щелкните правой кнопкой мыши - Запуск от имени . ). Перейдите в подкаталог «bin» из папки установки OpenSSL.

    Пример команды для выполнения:

    Сохраните и сохраните файл, содержащий закрытый ключ (.key, и скопируйте/вставьте только содержимое файла .csr в форму заказа.

    Проблемы, возникшие в Windows при создании CSR с помощью одной команды

    В зависимости от версии OpenSSL, которую вы установили, или метода установки в Windows вы можете столкнуться с такими сообщениями об ошибках, как:

    • config или req не распознаются как внутренняя или внешняя команда
      Проверьте синтаксис и кавычки при выполнении команды.
    • Невозможно загрузить информацию о конфигурации из /usr/local/ssl/openssl.cnf
      OpenSSL здесь использует древовидную структуру по умолчанию для Linux.

    Устранение неполадок: выполнение упрощенных команд:

    Напоминание:
    - Чтобы запустить командную строку, перейдите в меню "Пуск" и выполните "cmd".
    - Чтобы вставить следующие командные строки в командную строку DOS, щелкните правой кнопкой мыши и выберите «Вставить».
    - Чтобы перейти к репертуару, в котором установлен OpenSSL, выполните:

      Закрытый ключ генерируется с помощью следующей команды. Определите имя файла, которое вам подходит:

    На некоторых платформах openssl.cnf, который OpenSSL считывает по умолчанию для создания CSR, не подходит или отсутствует. В этом случае вы можете скачать наш и разместить его, например, в C:\Program Files\OpenSSL-Win64\openssl.cnf:

    • Для сертификатов сервера DigiCert или Thawte: openssl-dem-server-cert-thvs.cnf
    • Для сертификатов сервера TBS X509 или Sectigo: openssl-dem-server-cert.cnf


    Название страны (двухбуквенный код) []: (например, FR)
    Название штата или провинции (полное название) [Some-State]: (название вашего штата полными буквами)
    Название населенного пункта (например, город) []: (название вашего города)
    Название организации (например, компания) []: (название вашей организации)
    Название организационного подразделения ( например, раздел) []: (оставьте пустым — рекомендуется — или укажите общий термин, такой как «ИТ-отдел»)
    Общее имя (например, ВАШЕ имя) []: (имя сайта, который необходимо защитить)
    Адрес электронной почты []: (пустой)

    Итак, вы получаете 2 файла: site-file.key и site-file.csr. Сохраните файл закрытого ключа (site-file.key) в надежном месте, а затем скопируйте/вставьте содержимое файла site-file.csr в форму заказа на странице TBS CERTIFICATES.
    Предупреждение. Никогда не отправляйте нам или третьим лицам закрытый ключ (site-file.key), в противном случае безопасность вашего сайта больше не может быть обеспечена.

    OpenSSL: примеры использования

    OpenSSL – это набор инструментов, в основном используемый программным обеспечением с открытым исходным кодом для реализации SSL.

    Создание SSL-сертификатов может оказаться непростой задачей, полной разочарований и печали. Но так не должно быть!Если у вас есть Windows 10 и OpenSSL, а также небольшая помощь из этого руководства, у вас все получится.

    В этой статье вы узнаете, как установить OpenSSL в Windows 10. После установки вы сможете создавать SSL-сертификаты, устранять неполадки и отлаживать сертификаты, а также преобразовывать форматы.

    Начнем осваивать OpenSSL с PowerShell!

    Оглавление

    Предпосылки

    В этой статье вы будете учиться, используя практический подход. Хотя OpenSSL исторически является утилитой ОС Linux, вы можете использовать ее и с ОС Windows.

    • Система Windows с правами локального администратора — в руководстве будет использоваться Windows 10
    • Установлена ​​Windows PowerShell 5.1 (поставляется с Windows) или PowerShell 7.
    • PowerShell ISE, Visual Studio Code или любой текстовый редактор по вашему выбору

    Все скриншоты в этом руководстве были взяты из Windows 10 сборки 1909 и PowerShell 7.

    Установка OpenSSL с PowerShell и Chocolatey

    Предполагая, что вы установили Chocolatey с помощью инструкций по установке, ваша первая задача — установить OpenSSL в Windows 10. Для этого откройте консоль PowerShell и запустите choco install OpenSSL.Light, как показано ниже.

    Вот оно! Теперь вы установили OpenSSL с PowerShell.

    Настройка рабочего каталога

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

    В этом руководстве все сертификаты и связанные файлы будут храниться в папке C:\certs. Вы можете создать папку с помощью PowerShell, выполнив приведенную ниже команду.

    Пришло время настроить OpenSSL.

    Настройка OpenSSL

    По умолчанию OpenSSL в Windows 10 не поставляется с файлом конфигурации. Это сделано намеренно, потому что существует множество параметров конфигурации, которые вы можете настроить. Для целей этого руководства вы будете использовать образец конфигурации, который вы сможете позже настроить в соответствии с вашими требованиями безопасности.

    Откройте PowerShell и выполните указанную ниже команду. Эта команда загружает образец файла конфигурации из Массачусетского технологического института и сохраняет его как openssl.cnf в текущем рабочем каталоге.

    Теперь вы можете открыть файл openssl.cnf, и вы должны увидеть что-то похожее на следующее.

    Пример файла конфигурации OpenSSL

    Загруженная конфигурация пока будет работать как есть. Не используйте значения по умолчанию в рабочей среде!

    Обновление переменных среды профиля PowerShell

    Чтобы все прошло гладко, вам следует изменить свой профиль PowerShell в Windows 10. Настройка некоторых переменных среды позволяет легко переключаться между различными версиями OpenSSL, которые вы, возможно, установили.

    Я предлагаю добавить в ваш профиль PowerShell две переменные среды: path и OPENSSL_CONF . Вы обновите переменную среды PATH, чтобы гарантировать возможность запуска двоичного файла openssl в любом месте из командной строки.

    Ниже вы увидите, как создать профиль PowerShell, если у вас его еще нет. Эта команда добавляет двоичный путь OpenSSL к вашему PATH и назначает путь к файлу конфигурации OPENSSL_CONF .

    Чтобы использовать переменные среды, перезагрузите свой профиль, набрав . $profile или просто закройте и снова откройте PowerShell.

    Теперь вы можете легко вызывать двоичный файл openssl, где бы вы ни находились в PowerShell, как показано ниже.

    Использование OpenSSL в Windows 10 для создания CSR и закрытого ключа

    Прежде чем вы сможете создать сертификат SSL, вы должны создать запрос на подпись сертификата (CSR). CSR — это закодированный файл, который предоставляет вам возможность поделиться своим открытым ключом с центром сертификации (CA). Этот файл содержит идентифицирующую информацию, алгоритм подписи и цифровую подпись. Давайте создадим ваш первый CSR и закрытый ключ.

    Чтобы создать CSR, выполните приведенную ниже команду. Затем OpenSSL предложит вам ввести некоторую идентифицирующую информацию, как показано на следующей демонстрации.

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

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

    Подробнее о доступных параметрах CSR и примерах конфигураций можно прочитать на справочных страницах. OpenSSL также имеет активный репозиторий GitHub с примерами.

    Создание пар ключей RSA

    Вы также можете создавать пары ключей RSA (открытый/закрытый) с помощью OpenSSL. Для этого сначала создайте закрытый ключ с помощью подкоманды genrsa, как показано ниже.

    При выполнении приведенной ниже команды OpenSSL в Windows 10 сгенерирует закрытый ключ RSA с длиной ключа 2048 бит. Этот ключ генерируется практически сразу на современном оборудовании. Полученный ключ выводится в рабочий каталог

    Затем сгенерируйте открытый ключ, используя закрытый ключ, который вы только что создали с помощью подкоманды rsa. Приведенный ниже синтаксис создаст открытый ключ с именем rsa.public в рабочем каталоге из закрытого ключа rsa.private.

    Создание самозаверяющего сертификата

    Иногда вам может потребоваться создать самозаверяющий сертификат. Самозаверяющие сертификаты подходят для использования в лаборатории, но не являются безопасной практикой для использования в производственной среде.

    Давайте создадим самозаверяющий сертификат, прежде чем переходить к следующей задаче. Для этого введите команду ниже, чтобы создать SSL-сертификат X509. Этот сертификат будет использовать криптографию SHA256, которая будет действительна в течение 365 дней с использованием ключа RSA длиной 2048 бит. Сертификат будет сохранен в рабочем каталоге.

    Теперь вы готовы импортировать сертификат в браузер или на сервер.

    Проверка CSR, сертификатов и ключей с помощью OpenSSL

    Начнем с проверки CSR с помощью команды req и некоторых параметров:

    Такие данные, как название страны, название организации и адрес электронной почты, которые вы ввели при создании CSR в начале этого руководства, должны точно совпадать.

    Вы также можете проверить сертификат с помощью подкоманды x509 с несколькими параметрами:

    Преобразование сертификатов с помощью OpenSSL

    В некоторых случаях приложение не использует определенный формат сертификата. Вы можете столкнуться с этой проблемой с приложением под названием HAproxy, например, для которого требуется сертификат PEM, когда у вас может быть сертификат в формате DER (.crt .cer .der).

    Чтобы продемонстрировать преобразование сертификата, давайте преобразуем созданный ранее самоподписанный сертификат в формате DER (certificate.crt) в PEM. Для этого используйте код из следующего фрагмента кода.

    Эта команда ниже использует подкоманду x509 с параметром -inform, который должен соответствовать формату файла -in, за которым следует формат -out.

    Вы также можете изменить порядок, если хотите использовать формат DER из PEM, как показано ниже.

    Устранение неполадок и отладка

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

    OpenSSL также позволяет проверять сертификаты на целостность файлов и тестировать на возможное повреждение данных. Используя контрольную сумму MD5, вы можете использовать следующие примеры кода для проверки сертификатов, ключей и CSR:

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

    Вот пример того, как выглядит этот код при запуске в PowerShell:

    Пример вывода команды устранения неполадок с OpenSSL в PowerShell

    Обзор

    В этой статье вы узнали, как установить и настроить OpenSSL в Windows 10, создать CSR, пару ключей и сертификат SSL. Вы также узнали, как выполнять преобразование между различными форматами сертификатов и выполнять базовые действия по устранению неполадок с помощью встроенных подкоманд.

    Дополнительные ресурсы

    • Справочная страница конфигурации OpenSSL
    • Команды OpenSSL
    • Онлайн-проверка SSL
    • Автоматическая установка SSL-сертификата IIS с помощью PowerShell
    • Как создавать самозаверяющие сертификаты с помощью PowerShell

    Ненавидите рекламу? Хотите поддержать писателя? Получите многие из наших руководств в виде руководства по ATA.

    Ещё от ATA Learning & Partners

    Резервное копирование Office 365 для чайников

    Лучшее руководство по защите данных Microsoft Office 365. Изучите готовые функции безопасности.

    Руководства ATA

    ATA известна своими высококачественными письменными учебными пособиями в виде сообщений в блогах. Поддержите ATA с помощью электронных книг ATA Guidebook PDF, доступных в автономном режиме и без рекламы!

    Некоторые люди, следуя моему руководству «Как сделать свой собственный сертификат с помощью OpenSSL», делают это в Windows, и некоторые из них сталкиваются с проблемами. Итак, в этом посте показана процедура для Windows.

    Если вы не знаете, как использовать командную строку, или не хотите устанавливать OpenSSL для создания простого сертификата, я создал инструмент для Windows, не требующий установки: CreateCertGUI.

    Для вашей информации: у меня также есть видео, показывающее это руководство.

    Прежде всего, в Windows вам необходимо установить OpenSLL из двоичных файлов. Я получил эти двоичные файлы.

    Я установил последнюю версию (v1.0.2a) и выбрал 32-разрядную версию (Win32).Я выбираю 32-разрядную версию, потому что она будет работать на любой машине Windows: 32-разрядная версия работает на 32-разрядных и 64-разрядных машинах.

    Предупреждение: не используйте версию 1.1.0 или более позднюю, вы получите эту ошибку: "проблема с созданием объекта tsa_policy1=1.2.3.4.1"

    Если вы запустите установку и получите следующее сообщение:

    тогда вам необходимо отменить установку и сначала установить распространяемые компоненты Visual C++ 2008. Ссылки для скачивания вы найдете на той же странице. При установке Win32 OpenSSL (32-разрядная версия) установите распространяемые компоненты Visual C++ 2008, а при установке Win64 OpenSSL (64-разрядная версия) установите распространяемые компоненты Visual C++ 2008 (x64).

    Установить распространяемые файлы очень просто:

    После этого вы можете перезапустить установку OpenSSL:

    Я создам сертификаты в папке c:\demo. Итак, создайте эту папку на своем компьютере.

    Затем запустите командную строку (cmd.exe) и перейдите в папку demo (введите: cd \demo).

    Перед запуском OpenSSL необходимо установить 2 переменные среды:

    set RANDFILE=c:\demo\.rnd
    set OPENSSL_CONF=C:\OpenSSL-Win32\bin\openssl.cfg

    Теперь вы можете запустить OpenSSL, введите: c:\OpenSSL-Win32\bin\openssl.exe:

    С этого момента команды те же, что и в моем «Как сделать свой собственный сертификат с помощью OpenSSL».

    Сначала мы создаем ключ RSA длиной 4096 бит для нашего корневого ЦС и сохраняем его в файле ca.key:

    genrsa -out ca.key 4096

    Если вы хотите защитить этот ключ паролем, добавьте параметр -des3.

    Далее мы создаем наш самозаверяющий корневой сертификат CA ca.crt; вам нужно будет предоставить удостоверение для вашего корневого ЦС:

    req -new -x509 -days 1826 -key ca.key -out ca.crt

    Опция -x509 используется для самоподписанного сертификата. 1826 дней дают нам сертификат, действительный в течение 5 лет.

    Следующий шаг: создайте наш подчиненный ЦС, который будет использоваться для фактической подписи. Сначала сгенерируйте ключ:

    genrsa -out ia.key 4096

    Затем запросите сертификат для этого подчиненного ЦС:

    req -new -key ia.key -out ia.csr

    Убедитесь, что введенное здесь общее имя отличается от общего имени, введенного ранее для корневого ЦС. Если они совпадают, позже при создании файла pkcs12 вы получите сообщение об ошибке.

    Следующий шаг: обработайте запрос на сертификат подчиненного ЦС и подпишите его корневым ЦС.

    x509 -req -days 730 -in ia.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out ia.crt

    Сертификат будет действителен в течение 2 лет (730 дней), и я решил выбрать для этого сертификата собственный серийный номер 01 (-set_serial 01). Для корневого ЦС я позволяю OpenSSL генерировать случайный серийный номер.

    На этом все! Конечно, есть много вариантов, которые я не использовал. Обратитесь к документации OpenSSL для получения дополнительной информации. Например, я не ограничивал использование ключа подчиненного центра сертификации цифровыми подписями. Его можно использовать для чего угодно, даже для создания еще одного подчиненного ЦС. Когда вы покупаете сертификат подписи кода, компания CA ограничит его использование подписью кода. И я не использовал пароли для защиты своих ключей. В производственной среде вы хотите защитить свои ключи с помощью паролей.

    Чтобы использовать этот подчиненный ключ ЦС для подписей Authenticode с инструментом подписи Microsoft, вам необходимо упаковать ключи и сертификаты в файл PKCS12:

    pkcs12 -export -out ia.p12 -inkey ia.key -in ia.crt -chain -CAfile ca.crt

    Если вы не указали разные общие имена для корневого ЦС и промежуточного ЦС, вы получите следующую ошибку:

    Чтобы подписать исполняемые файлы в Windows с помощью инструмента подписи: установите файл ia.p12 в хранилище сертификатов (например, дважды щелкните его), а затем используйте инструмент подписи /wizard для подписи вашего PE-файла.

    Сертификаты (файлы .crt), созданные здесь, также можно дважды щелкнуть в Windows, чтобы просмотреть/установить их:

    Читайте также: