Skip to content

Cheat sheet for creating your own CA and issuing certificates for servers and clients.

License

Notifications You must be signed in to change notification settings

HiDiv/ca-example

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Шпаргалка для создания собственного CA и выпуска сертификатов для серверов и клиентов (email-адресов)

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

mkdir certs crl csr newcerts private
chmod 700 private
touch index.txt
echo 1000 > serial

Вначале нужно создать секретный ключ CA. Для этого нужно выполнить команду, которая создаст секретный ключ CA длиной 4096 бит и поместил его в текстовый файл private/ca.key.pem в кодировке PEM. Секретный ключ CA желательно зашифровать и защитить паролем, для этого в команде нужно указать ключ -aes256. Ключ и сертификат для CA обычно создаются на длительное время, например, на 10 лет, поэтому лучше использовать более длинный ключ, например, в 4096 бит.

openssl genrsa -out private/ca.key.pem 4096

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

openssl req -config openssl.cnf -key private/ca.key.pem -new -x509 -days 7300 -sha256 -extensions v3_ca -out certs/ca.cert.pem

Тут, через ключи:

  • -config явно указывает файл конфигурации для openssl, который будет использоваться.
  • -key указывает путь к файлу с секретным ключом CA.
  • -days указывает время жизни сертификата в днях (7300 = 20 лет).
  • -sha256 указывает алгоритм подсчета контрольной суммы для ЭЦП.
  • -extensions v3_ca указывает секцию расширения конфигурации указанную в файле openssl.cnf.
  • -out certs/ca.cert.pem указывает файл в кодировке PEM, в который нужно записать созданный сертификат.

Созданный сертификат можно посмотреть командой

openssl x509 -noout -text -in certs/ca.cert.pem

После этого можно подписывать сертификаты серверов и клиентов (email-сертификаты).

Чтобы браузеры и почтовые клиенты не ругались на неизвестный сертификат CA его нужно добавить в браузеры и/или хранилище ОС. Например, для Chrome нужно перейти в Настройки сертификатов (chrome://settings/certificates) и добавить сертификат CA в Центры сертификации с указанием нужного уровня доверия.

Для создания сертификата сервера, нужно вначале создать его секретный ключ. Тут для примера создается ключ длиной 2048 (ключ и сертификат сервера обычно меняются каждый год, т.ч. можно использовать меньшую длину ключа для снижения времени при работе с ключом) и помещается в файл private/mail.localhost.key.pem в кодировке PEM.

openssl genrsa -out private/mail.localhost.key.pem 2048

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

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

Например, для сервера с именем mail.localhost и ip-адресом 127.0.0.1 команда будет

openssl req -config openssl.cnf -key private/mail.localhost.key.pem -new -sha256 -out csr/mail.localhost.csr.pem -addext "subjectAltName = DNS:mail.localhost, IP:127.0.0.1"

Посмотреть содержимое созданного запроса на сертификат можно командой

openssl req -noout -text -in csr/mail.localhost.csr.pem

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

openssl ca -config openssl.cnf -extensions server_cert -days 375 -notext -md sha256 -in csr/mail.localhost.csr.pem -out certs/mail.localhost.cert.pem

About

Cheat sheet for creating your own CA and issuing certificates for servers and clients.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages