4.8 KiB
Создание сертификата для сайта
Создание ключа и сертификата 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