Создайте файл сертификата .pfx / .p12 с помощью OpenSSL –

Создайте файл сертификата .pfx / .p12 с помощью OpenSSL - Сертификаты
Содержание
  1. Для того что бы сгенерировать запрос сертификата для нескольких доменов нужно отредактировать файл /etc/ssl/openssl.cnf:
  2. Создать запрос на подпись сертификата на основе существующего сертификата
  3. Convert certificate formats
  4. Convert der to pem
  5. Convert pem to der
  6. Convert pem to pkcs12
  7. Convert pem to pkcs7
  8. Convert pkcs7 to pem
  9. Create a private key
  10. Decrypt a private key
  11. Encrypt a private key
  12. Generate a csr from an existing certificate and private key
  13. Generate a csr from an existing private key
  14. Generate a self-signed certificate from an existing private key
  15. Generate a self-signed certificate from an existing private key and csr
  16. Generating csrs
  17. Generating ssl certificates
  18. Openssl version
  19. Pem (.pem, .crt, .cer) в pfx
  20. Pkcs # 7 / p7b (.p7b, .p7c) в pfx
  21. Private keys
  22. Verify a certificate was signed by a ca
  23. Verify a private key
  24. Verify a private key matches a certificate and csr
  25. View certificate entries
  26. View certificates
  27. View csr entries
  28. Генерация csr запроса через openssl
  29. Другие полезные команды для работы с сертификатами в openssl
  30. Как выпустить самоподписанный ssl сертификат и заставить ваш браузер доверять ему
  31. Как создать закрытый ключ openssl
  32. Как создать запрос на подпись сертификата
  33. Подпишем сертификат самостоятельно
  34. Предпосылки
  35. Проверим сертификат
  36. Проверка закрытого ключа
  37. Процесс установки ssl сертификата
  38. Сгенерировать запрос подписи сертификата (csr) для существующего закрытого ключа
  39. Снятие пароль passphrase в private key
  40. Создадим самоподписанный сертификат ssl с помощью openssl
  41. Создадим самоподписанный сертификат, используя существующий закрытый ключ и csr
  42. Создание (генерация) запроса csr
  43. Создание (генерация) приватного ключа pkey
  44. Создание сертификатов с помощью программы openssl
  45. Требования
  46. Установка openssl
  47. Conclusion
  48. Заключение

Для того что бы сгенерировать запрос сертификата для нескольких доменов нужно отредактировать файл /etc/ssl/openssl.cnf:

Массив alt_names будет содержать альтернативные имена доменов SAN включеные в сертификат.

Выполняется в командной строке в окне Microsoft Windows
В процессе CSR вас попросят предоставить несколько фрагментов информации. Большинство имен
информационные поля, которые вы попросите предоставить, понятны, но есть несколько названий полей, которые могли бы
быть запутанным. Мы объясним их, когда мы рассмотрим скриншоты различных этапов процесса.

Создать запрос на подпись сертификата на основе существующего сертификата

openssl x509 -x509toreq -in adgrafics.crt -out adgrafics.csr -signkey adgrafics.key

Convert certificate formats

All of the certificates that we have been working with have been X.509 certificates that are ASCII PEM encoded. There are a variety of other certificate encoding and container types; some applications prefer certain formats over others. Also, many of these formats can contain multiple items, such as a private key, certificate, and CA certificate, in a single file.

OpenSSL can be used to convert certificates to and from a large variety of these formats. This section will cover a some of the possible conversions.

Convert der to pem

Use this command if you want to convert a DER-encoded certificate (domain.der) to a PEM-encoded certificate (domain.crt):

Convert pem to der

Use this command if you want to convert a PEM-encoded certificate (domain.crt) to a DER-encoded certificate (domain.der), a binary format:

The DER format is typically used with Java.

Convert pem to pkcs12

Use this command if you want to take a private key (domain.key) and a certificate (domain.crt), and combine them into a PKCS12 file (domain.pfx):

You will be prompted for export passwords, which you may leave blank. Note that you may add a chain of certificates to the PKCS12 file by concatenating the certificates together in a single PEM file (domain.crt) in this case.

PKCS12 files, also known as PFX files, are typically used for importing and exporting certificate chains in Microsoft IIS (Windows).

Convert pem to pkcs7

Use this command if you want to add PEM certificates (domain.crt and ca-chain.crt) to a PKCS7 file (domain.p7b):

Note that you can use one or more -certfile options to specify which certificates to add to the PKCS7 file.

PKCS7 files, also known as P7B, are typically used in Java Keystores and Microsoft IIS (Windows). They are ASCII files which can contain certificates and CA certificates.

Convert pkcs7 to pem

Use this command if you want to convert a PKCS7 file (domain.p7b) to a PEM file:

Note that if your PKCS7 file has multiple items in it (e.g. a certificate and a CA intermediate certificate), the PEM file that is created will contain all of the items in it.

Create a private key

Use this command to create a password-protected, 2048-bit private key (domain.key):

Enter a password when prompted to complete the process.

Decrypt a private key

This takes an encrypted private key (encrypted.key) and outputs a decrypted version of it (decrypted.key):

Enter the pass phrase for the encrypted key when prompted.

Encrypt a private key

This takes an unencrypted private key (unencrypted.key) and outputs an encrypted version of it (encrypted.key):

Enter your desired pass phrase, to encrypt the private key with.

Generate a csr from an existing certificate and private key

Use this method if you want to renew an existing certificate but you or your CA do not have the original CSR for some reason. It basically saves you the trouble of re-entering the CSR information, as it extracts that information from the existing certificate.

This command creates a new CSR (domain.csr) based on an existing certificate (domain.crt) and private key (domain.key):

The -x509toreq option specifies that you are using an X509 certificate to make a CSR.

Generate a csr from an existing private key

Use this method if you already have a private key that you would like to use to request a certificate from a CA.

This command creates a new CSR (domain.csr) based on an existing private key (domain.key):

Answer the CSR information prompt to complete the process.

The -key option specifies an existing private key (domain.key) that will be used to generate a new CSR. The -new option indicates that a CSR is being generated.

Generate a self-signed certificate from an existing private key

Use this method if you already have a private key that you would like to generate a self-signed certificate with it.

This command creates a self-signed certificate (domain.crt) from an existing private key (domain.key):

Answer the CSR information prompt to complete the process.

The -x509 option tells req to create a self-signed certificate. The -days 365 option specifies that the certificate will be valid for 365 days. The -new option enables the CSR information prompt.

Generate a self-signed certificate from an existing private key and csr

Use this method if you already have a private key and CSR, and you want to generate a self-signed certificate with them.

This command creates a self-signed certificate (domain.crt) from an existing private key (domain.key) and (domain.csr):

The -days 365 option specifies that the certificate will be valid for 365 days.

Про сертификаты:  ЭкспертРУ – Россия. Новости России. Новости сегодня 15.09.21 ВОЗ приостановила сертификацию «Спутника V»

Generating csrs

This section covers OpenSSL commands that are related to generating CSRs (and private keys, if they do not already exist). CSRs can be used to request SSL certificates from a certificate authority.

Keep in mind that you may add the CSR information non-interactively with the -subj option, mentioned in the previous section.

Generating ssl certificates

If you would like to use an SSL certificate to secure a service but you do not require a CA-signed certificate, a valid (and free) solution is to sign your own certificates.

Openssl version

The openssl version command can be used to check which version you are running. The version of OpenSSL that you are running, and the options it was compiled with affect the capabilities (and sometimes the command line options) that are available to you.

The following command displays the OpenSSL version that you are running, and all of the options that it was compiled with:

openssl version -a

This guide was written using an OpenSSL binary with the following details (the output of the previous command):

OpenSSL 1.1.1  11 Sep 2021
built on: Mon Aug 23 17:02:39 2021 UTC
platform: debian-amd64
options:  bn(64,64) rc4(16x,int) des(int) blowfish(ptr)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -Wa,--noexecstack -g -O2 -fdebug-prefix-map=/build/openssl-Flav1L/openssl-1.1.1=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2
OPENSSLDIR: "/usr/lib/ssl"
ENGINESDIR: "/usr/lib/x86_64-linux-gnu/engines-1.1"
Seeding source: os-specific

Pem (.pem, .crt, .cer) в pfx

openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile more.crt

Разбивая команду:

  • openssl – команда для запуска OpenSSL
  • pkcs12 – файловая утилита для файлов PKCS # 12 в OpenSSL
  • -export -out certificate.pfx – экспортировать и сохранить файл PFX как certificate.pfx
  • -inkey privateKey.key – используйте файл закрытого ключа privateKey.key в качестве закрытого ключа для объединения с сертификатом.
  • -in certificate.crt – используйте certificate.crt в качестве сертификата, с которым будет объединен закрытый ключ.
  • -certfile more.crt – Это необязательно, это если у вас есть какие-либо дополнительные сертификаты, которые вы хотите включить в файл PFX.

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

Pkcs # 7 / p7b (.p7b, .p7c) в pfx

Файлы P7B нельзя использовать для непосредственного создания файла PFX. Файлы P7B должны быть преобразованы в PEM. После преобразования в PEM выполните описанные выше шаги, чтобы создать файл PFX из файла PEM.

openssl pkcs7 -print_certs -in certificate.p7b -out certificate.crt

Разбивая команду:

  • openssl – команда для запуска OpenSSL
  • pkcs7 – файловая утилита для файлов PKCS # 7 в OpenSSL
  • -print_certs -in certificate.p7b – распечатывает все сертификаты или CRL, содержащиеся в файле.
  • -out certificate.crt – вывести файл как certificate.crt

Private keys

This section covers OpenSSL commands that are specific to creating and verifying private keys.

Verify a certificate was signed by a ca

Use this command to verify that a certificate (domain.crt) was signed by a specific CA certificate (ca.crt):

Verify a private key

Use this command to check that a private key (domain.key) is a valid key:

If your private key is encrypted, you will be prompted for its pass phrase. Upon success, the unencrypted key will be output on the terminal.

Verify a private key matches a certificate and csr

Use these commands to verify if a private key (domain.key) matches a certificate (domain.crt) and CSR (domain.csr):

If the output of each command is identical there is an extremely high probability that the private key, certificate, and CSR are related.

View certificate entries

This command allows you to view the contents of a certificate (domain.crt) in plain text:

View certificates

Certificate and CSR files are encoded in PEM format, which is not readily human-readable.

This section covers OpenSSL commands that will output the actual entries of PEM-encoded files.

View csr entries

This command allows you to view and verify the contents of a CSR (domain.csr) in plain text:

Генерация csr запроса через openssl

Генерация CSR-запроса должна проходить в строгом соответствии со следующими правилами. Во-первых, вся информация должна быть приведена на английском языке. Во-вторых, следует избегать использования следующих символов: < > ~ ! @ # $ % ^ * / ( ) ?.,&.

Поля для заполнения будут следующими:

  • Country Name – ISO-кодстраны
  • State or Province Name – область, где была проведена официальная регистрация компании
  • Locality Name – город, где была проведена официальная регистрация компании
  • Organization Name – полное название организации (без сокращений)
  • Organizational Unit Name – название отдела организации
  • Common Name – полное доменное имя сервера

Сгенерировать CSR-запрос в OpenSSL можно при помощи специальной команды:

openssl req -key -new cert.key -out cert.csr

Имя домена, на который совершается запрос, указывается в Common Name. Поля «A challenge password» и «An optional company name» заполнять не нужно (просто жмем enter).

Команда для создания ключа:

openssl req -batch -new -noout -newkey rsa:2048 -nodes -keyout cert.key

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

Одновременное создание ключа и запроса с данными:

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

Уточнить длину запроса:

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

Создайте файл сертификата .pfx / .p12 с помощью OpenSSL -

Все крупные сайты давно перешли на протокол https. Тенденция продолжается, и многие наши клиенты хотят, чтобы их сайт работал по защищенному протоколу. А если разрабатывается backend для мобильного приложения, то https обязателен. Например, Apple требует, чтобы обмен данными сервера с приложением велся по безопасному протоколу. Это требование введено с конца 2021 года.

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

Чтобы выпустить сертификат для вашего локального домена, понадобится корневой сертификат. На его основе будут выпускаться все остальные сертификаты. Да, для каждого нового top level домена нужно выпускать свой сертификат. Получить корневой сертификат достаточно просто.
Сначала сформируем закрытый ключ:

openssl genrsa -out rootCA.key 2048

Затем сам сертификат:

openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem

Нужно будет ввести

страну

,

город

,

компанию

и т.д. В результате получаем два файла:

rootCA.key

и

rootCA.pem

Переходим к главному, выпуск самоподписанного сертификата. Так же как и в случае с корневым, это две команды. Но параметров у команд будет значительно больше. И нам понадобится вспомогательный конфигурационный файл. Поэтому оформим все это в виде bash скрипта create_certificate_for_domain.sh

Про сертификаты:  Сертификация услуги по ремонту компьютеров, предметов личного потребления и бытовых товаров

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

if [ -z "$1" ]
then
  echo "Please supply a subdomain to create a certificate for";
  echo "e.g. mysite.localhost"
  exit;
fi

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

if [ -f device.key ]; then
  KEY_OPT="-key"
else
  KEY_OPT="-keyout"
fi

Запросим у пользователя название домена. Добавим возможность задания “общего имени” (оно используется при формировании сертификата):

DOMAIN=$1
COMMON_NAME=${2:-$1}

Чтобы не отвечать на вопросы в интерактивном режиме, сформируем строку с ответами. И зададим время действия сертификата:

SUBJECT="/C=CA/ST=None/L=NB/O=None/CN=$COMMON_NAME"
NUM_OF_DAYS=999

В переменной SUBJECT перечислены все те же вопросы, который задавались при создании корневого сертификата (

страна

,

город

,

компания

и т.д). Все значение, кроме CN можно поменять на свое усмотрение.

Сформируем csr файл (Certificate Signing Request) на основе ключа. Подробнее о файле запроса сертификата можно почитать в этой статье.

openssl req -new -newkey rsa:2048 -sha256 -nodes $KEY_OPT device.key -subj "$SUBJECT" -out device.csr

Формируем файл сертификата

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

v3.ext

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

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = %%DOMAIN%%
DNS.2 = *.%%DOMAIN%%

Да, верно, наш сертификат будет валидным для основного домена, а также для всех поддоменов. Сохраняем указанные выше строки в файл

v3.ext

Возвращаемся в наш bash скрипт. На основе вспомогательного файла v3.ext создаем временный файл с указанием нашего домена:

cat v3.ext | sed s/%%DOMAIN%%/$COMMON_NAME/g > /tmp/__v3.ext

Выпускаем сертификат:

openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days $NUM_OF_DAYS -sha256 -extfile /tmp/__v3.ext

Переименовываем сертификат и удаляем временный файл:

mv device.csr $DOMAIN.csr
cp device.crt $DOMAIN.crt

# remove temp file
rm -f device.crt;

Скрипт готов. Запускаем его:

./create_certificate_for_domain.sh mysite.localhost

Получаем два файла:

mysite.localhost.crt

и

device.key

Теперь нужно указать web серверу пути к этим файлам. На примере nginx это будет выглядеть так:

nginx ssl

Запускаем браузер, открываем https://mysite.localhost и видим:

Создайте файл сертификата .pfx / .p12 с помощью OpenSSL -

Браузер не доверяет этому сертификату. Как быть?

Нужно отметить выпущенный нами сертификат как Trusted. На Linux (Ubuntu и, наверное, остальных Debian-based дистрибутивах) это можно сделать через сам браузер. В Mac OS X это можно сделать через приложение Keychain Access. Запускаем приложение и перетаскиваем в окно файл mysite.localhost.crt. Затем открываем добавленный файл и выбираем Always Trust:

Создайте файл сертификата .pfx / .p12 с помощью OpenSSL -

Обновляем страницу в браузере и:

Создайте файл сертификата .pfx / .p12 с помощью OpenSSL -

Успех! Браузер доверяет нашему сертификату.

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

Делитесь в комментариях, используете ли вы https для локальной разработки?

Максим Ковтун,
Руководитель отдела разработки

Как создать закрытый ключ openssl

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

Этот закрытый ключ необходим для подписи вашего SSL-сертификата.

Вы можете изменить my_key в приведенной ниже команде на свое собственное значение.

$ sudo openssl genrsa -out my_key.key

Вот что означают флаги команды:

  • genrsa Создать закрытый ключ RSA
  • -out Выходной файл

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

Как создать запрос на подпись сертификата

Следующим шагом является создание запроса на подпись сертификата (CSR).

CSR – это то, что вы обычно отправляете в УЦ.

Но в этом случае вы собираетесь подписать его самостоятельно.

При создании CSR вас попросят предоставить некоторую информацию.

Некоторые поля можно оставить пустыми, нажав клавишу ETCD_CLIENT_CERT_AUTH

Теперь запустите команду, показанную ниже, чтобы начать создание CSR.

$ sudo openssl req -new -key my_key.key -out my_csr.csr

Вот что обозначает каждый флаг команды

  • req Сделать запрос на подпись сертификата
  • -new Новый запрос
  • -key Путь, где хранится ваш файл закрытого ключа
  • -out Выходной файл

Подпишем сертификат самостоятельно

Когда вы запустите команду, показанную ниже, будет создан самоподписанынй сертификат, который будет действителен в течение 365 дней.

$ openssl x509 -req -days 365 -in my_csr.csr -signkey my_key.key -out my_cert.crt

Предпосылки

Машина Linux и пользователь с привилегиями sudo.

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

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

openssl x509 -text -noout -in my_cert.crt

Проверка закрытого ключа

openssl rsa -in adgrafics.key -check

Процесс установки ssl сертификата

Процесс установки сертификата осуществляется при помощи следующих шагов.

Скопируйте выданный вам сертификат в файл, расположенный на вашем сервере Apache

После выпуска SSL-сертификата, на почтовый адрес, который вы задали, поступит электронное письмо, которое будет содержать в себе ваш сертификат. Файл с сертификатом будет называться domain.crt. Открыв файл с SSL сертификатом в обычном текстовом редакторе, вы увидите следующее (примерно):

 —–BEGIN CERTIFICATE—–ASb-SdGSIk3DqvPAqCAMIACAQSxALBgkqddhgrtkiG9w0BBwGg&KLPmowggHXAhUb7egest5u0M63v1Z2A/kFghj5CSqGSIb3DQBAs klMF8xCzAnbijNByhTMd54vSA(…….)E cFEGjgrHJgrA eRP6XraWw8iiguUtfgrrcJgg4P6XVS4l39 l5aCEGGbauLP5W6K99orhIhgQrlX2 KeDi xBG2coigehIGFeQS/16S36ITcluHGY5EA &A5ujbhgrYHS—–END CERTIFICATE—–

Скопируйте данный сертификат туда же (в ту же директорию), где лежит ваш частный (приватный) ключ, назовем этот каталог /etc/ssl/crt/. В нашей ситуации приватный ключ – это private.key. Публичным ключом будет выступать domain.crt.

Задайте корневой и промежуточный сертификат

Очень важный пункт. Чтобы заслужить доверие браузеров и различных мобильных устройств к вашему SSL-сертификату, вам нужно будет задать сертификаты корневых и промежуточных ЦС (центров сертификации). Такие сертификаты обычно лежат вместе с файлом Вашего главного сертификата. Для Apache их надо объединить в ca_bundle.

Чтобы ссылка на данный файл была корректной, следует произвести следующее в необходимом разделе Virtual Host для вашего веб-сайта:

Сгенерировать запрос подписи сертификата (csr) для существующего закрытого ключа

openssl req -out adgrafics.csr -key adgrafics.key -new

Снятие пароль passphrase в private key

openssl rsa -in private.key -out private.key .nopass

Создадим самоподписанный сертификат ssl с помощью openssl

Убедившись, что инструмент OpenSSL установлен на вашем компьютере с Linux, вы можете приступить к созданию сертификата.

Информация CSR требуется для создания закрытого ключа.

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

Чтобы создать самоподписанный сертификат SSL, введите:

$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout my_key.key -out my_cert.crt

Эта команда создаст самоподписанный сертификат, который будет действителен в течение 365 дней.

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

Вот что обозначает каждый флаг:

  • req – сделать запрос на подпись сертификата
  • -newkey rsa: 4096 – Создает ключ RSA длиной 4096 бит. Если не указано иное, по умолчанию будет создан ключ длиной 2048 бит.
  • -keyout – имя файла закрытого ключа, в котором будет храниться ключ
  • -out – указывает имя файла для хранения нового сертификата
  • -nodes – пропустить шаг по созданию сертификата с парольной фразой.
  • -x509 – Создать сертификат формата X.509.
  • -days – количество дней, в течение которых сертификат действителен
Про сертификаты:  настройка bus gov на windows 10

Поля CSR:

  • C = – Название страны. (двухбуквенный код).
  • ST = – Название штата или провинции.
  • L = – Название населенного пункта.
  • O = – полное название вашей организации.
  • OU = – Название организационной единицы.
  • CN = – полное доменное имя.

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

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

Создание (генерация) запроса csr

openssl req -new -key adgrafics.key -out adgrafics.csr

Создание (генерация) приватного ключа pkey

openssl  genrsa  -des3  -out  adgrafics.key  2048

Создание сертификатов с помощью программы openssl

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

# mkdir /root/ca

# cd /root/ca

# mkdir certs crl newcerts private

# chmod 700 private

# touch index.txt

2. Сгенерируем приватный ключ.

# openssl genrsa -out /root/ca/private/ca_key.pem 2048

3. Создадим сертификат CA для этого приватного ключа

# openssl req -new -x509 -days 3650 -key /root/ca/private/ca_key.pem -out /root/ca/certs/ca.crt

Выводкоманды

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter ‘.’, the field will be left blank.

—–

Country Name (2 letter code) [AU]:RU

State or Province Name (full name) [Some-State]:NSO

Locality Name (eg, city) []:Novosibirsk

Organization Name (eg, company) [Internet Widgits Pty Ltd]:Kraftec

Organizational Unit Name (eg, section) []:

Common Name (e.g. server FQDN or YOUR name) []:www.kraftec.net

Email Address []:dit@kraftec.net

Для создания сертификата SSL для Captive портала и Веб-консоли необходимо создать файл конфигурации

Создадим конфигурационный файл для OpenSSL.

# touch /root/ca/openssl.cnf

Добавим в данный файл следующие блоки

##########################################################################

[ ca ]

default_ca = CA_default

[ CA_default ]

dir = /root/ca

certs = $dir/certs

crl_dir = $dir/crl

database = $dir/index.txt

new_certs_dir = $dir/newcerts

certificate = $certs/ca.crt

private_key = $dir/private/ca_key.pem

serial = $dir/serial

crlnumber = $dir/crlnumber

crl = $dir/crl/crl.pem

RANDFILE = $dir/private/.rand

x509_extensions = usr_cert

name_opt = ca_default

cert_opt = ca_default

crl_extensions = crl_ext

default_days = 365

default_crl_days= 30

default_md = sha256

preserve = no

policy = policy_match

[ policy_match ]

countryName = match

stateOrProvinceName = match

organizationName = match

organizationalUnitName = optional

commonName = supplied

emailAddress = optional

[ req ]

default_bits = 2048

distinguished_name = req_distinguished_name

x509_extensions = v3_ca

string_mask = utf8only

[ req_distinguished_name ]

countryName = Country Name (2 letter code)

countryName_default = RU

countryName_min = 2

countryName_max = 2

stateOrProvinceName = State or Province Name (full name)

stateOrProvinceName_default = NSO

localityName = Locality Name (eg, city)

localityName_default = Novosibirsk

0.organizationName = Organization Name (eg, company)

0.organizationName_default = Kraftec

organizationalUnitName = Organizational Unit Name (eg, section)

#organizationalUnitName_default =

commonName = Common Name (e.g. server FQDN or YOUR name)

commonName_max = 64

emailAddress = Email Address

emailAddress_max = 64

[ usr_cert ]

basicConstraints=CA:FALSE

nsCertType = server

keyUsage = nonRepudiation, digitalSignature, keyEncipherment

subjectKeyIdentifier=hash

authorityKeyIdentifier=keyid,issuer

subjectAltName=DNS:auth.kraftec.net, DNS:logout.kraftec.net, DNS:block.kraftec.net, DNS:ftpclient.kraftec.net, DNS:sslvpn.kraftec.net

[ v3_ca ]

subjectKeyIdentifier=hash

authorityKeyIdentifier=keyid:always,issuer

basicConstraints = critical,CA:true

keyUsage = nonRepudiation, digitalSignature, keyEncipherment

[ crl_ext ]

authorityKeyIdentifier=keyid:always

##########################################################################

Сгенерируем ключ для SSL сертификата Captive портала

# openssl genrsa -out /root/ca/private/Captiv_key.pem 2048

Сгенерируем ключ для SSL сертификата Веб-консоли

# openssl genrsa -out /root/ca/private/Web_key.pem 2048

Сгенерируем запрос на SSL сертификат Captive портала

# openssl req -new -key /root/ca/private/Captiv_key.pem -config /root/ca/openssl.cnf -out /root/ca/Captive.csr

Выводкоманды

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter ‘.’, the field will be left blank.

—–

Country Name (2 letter code) [RU]:

State or Province Name (full name) [NSO]:

Locality Name (eg, city) [Novosibirsk]:

Organization Name (eg, company) [Kraftec]:

Organizational Unit Name (eg, section) []:

Common Name (e.g. server FQDN or YOUR name) []:auth.kraftec.net

Email Address []:dit@kraftec.net

Подпишем полученный запрос с помощью сертификата УЦ.

# openssl x509 -req -days 365 -CA /root/ca/certs/ca.crt -CAkey /root/ca/private/ca_key.pem -extfile /root/ca/openssl.cnf -extensions usr_cert -in Captive.csr -out Captive.crt

Вывод команды

Signature ok

subject=/C=RU/ST=NSO/L=Novosibirsk/O=Kraftec/CN=auth.kraftec.net/emailAddress=dit@kraftec.net

Getting CA Private Key

Сгенерируем запрос на SSL сертификат Веб-консоли

Предварительно исправим конфигурационный файл в расширении usr_cert изменим параметр на subjectAltName=DNS:utm.kraftec.net

# openssl req -new -key /root/ca/private/Web_key.pem -config /root/ca/openssl.cnf -out /root/ca/Web.csr

Выводкоманды

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter ‘.’, the field will be left blank.

—–

Country Name (2 letter code) [RU]:

State or Province Name (full name) [NSO]:

Locality Name (eg, city) [Novosibirsk]:

Organization Name (eg, company) [Kraftec]:

Organizational Unit Name (eg, section) []:

Common Name (e.g. server FQDN or YOUR name) []:utm.kraftec.net

Email Address []:dit@kraftec.net

Подпишем полученные запросы с помощью сертификата УЦ.

# openssl x509 -req -days 365 -CA /root/ca/certs/ca.crt -CAkey /root/ca/private/ca_key.pem -extfile /root/ca/openssl.cnf -extensions usr_cert -in Web.csr -out Web.crt

Вывод команды

Signature ok

subject=/C=RU/ST=NSO/L=Novosibirsk/O=Kraftec/CN=utm.kraftec.net/emailAddress=dit@kraftec.net

Getting CA Private Key

Импортируем данные сертификаты и приватные ключи в UserGate в раздел сертификаты.

Сертификату ca.crt назначим роль SSL дешифрование

Сертификату Captive.crt назначим роль SSL captive-портала

Сертификату Web.crt назначим роль SSL веб-консоли

На компьютеры пользователей установим сертификат ca.crt в хранилище Доверенные корневые центры сертификации.

Требования

Команды ниже демонстрируют примеры того, как создать файл .pfx / .p12 в командной строке с помощью OpenSSL:

Установка openssl

OpenSSL доступен по умолчанию во всех основных дистрибутивах Linux.

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

$ openssl version

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

Conclusion

That should cover how most people use OpenSSL to work with SSL certs. It has many other uses that were not covered here, so feel free to ask or suggest other uses in the comments.

If you are having issues with any of the commands, be sure to comment (and include your OpenSSL version output).

Заключение

В этом руководстве мы описали, как создать самоподписанный сертификат SSL с помощью инструмента openssl.

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

Оцените статью
Мой сертификат
Добавить комментарий