configurations/manuals/src/certs.md

4.8 KiB
Raw Blame History

Создание сертификата для сайта

Создание ключа и сертификата Certification Authority

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

Создание ключа удостоверяющего центра (Certification Authority).

openssl genrsa -out ca.key 4096

Ключ с паролем создаётся с флагом -des3

openssl genrsa -des3 -out ca.key 4096

Создание сертификата CA

Для создания сертификата CA необходимо использовать созданный ранее ключ ca.key (выше):

openssl req -new -x509 -days 365 -key ca.key -out ca.crt

Ответить на вопросы, где:

  • Country Name - код страны двумя символами
  • State or Province Name - полное наименование страны
  • Locality Name - наименование города
  • Organization Name - наименование организации
  • Organizational Unit Name - наименование отдела (подразделения) в организации
  • Common Name - наименование адреса веб-страницы
  • Email Address - электронная почта

Пример:

Country Name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]:Russia
Locality Name (eg, city) []:Belgorod
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Miratorg
Organizational Unit Name (eg, section) []:IT
Common Name (e.g. server FQDN or YOUR name) []:test.local
Email Address []:a.zhirov@agrohold.ru

Создание ключа и сертификата для сайта

В качестве примера создать ключ и сертификат для сайта https://test.local

Создание ключа для сайта

Приватный ключ хранится на стороне владельца сервера и не должен никогда никому отдаваться.

openssl genrsa -out test.key 4096

Создание Certificate Signing Request

На базе приватного ключа test.key генерится так называемый запрос на подпись сертификата (Certificate Signing Request), в запросе заполняются параметры субъекта, затем этот файл отправляется CA и тот создаёт сертификат на основе данных из CSR, подписывает его своим приватным ключом, в результате получаем подписанный публичный сертификат.

Для включения нескольких DNS-имен необходимо использовать файл конфигурации (например, создать файл openssl-csr.cnf через текстовый редактор), содержащий данные о сертификате и расширенный запрос на добавление (данных), и в директиве subjectAltName указать список необходимых адресов для веб-страницы:

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

[ req_distinguished_name ]
countryName                     = Country Name (2 letter code)
countryName_default             = RU
stateOrProvinceName             = State or Province Name (full name)
stateOrProvinceName_default     = Russia
localityName                    = Locality Name (eg, city)
localityName_default            = Belgorod
organizationName                = Organization Name (eg, company)
organizationName_default        = Miratorg
organizationalUnitName		    = Organizational Unit Name (eg, section)
organizationalUnitName_default  = IT
commonName                      = Common Name (eg, YOUR name or FQDN)
commonName_max                  = 64

[ req_ext ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName                  = DNS:test.local, DNS:*.test.local

Официальный пример конфигурационного файла.

Создание запроса на подпись сертификата на основе конфигурационного файла:

openssl req -new -key test.key -config openssl-csr.cnf -reqexts req_ext -out test.csr

Создание сертификата для сайта

openssl x509 -req -days 365  -CA ca.crt -CAkey ca.key -set_serial 01 -extfile openssl-csr.cnf -extensions req_ext -in test.csr -out test.crt