Thank you for reading this post, don't forget to subscribe!
у нас есть два сервера, работают они себе, и периодически они хотят, что-то друг у друга спросить по протоколу HTTP/HTTPS.
Протокол HTTP не безопасен и логично использовать протокол HTTPS для общения меду серверами.
Для организации такого общения нам нужно 2 SSL сертификата.
Если сервера принадлежат одной организации, то может быть проще и безопасней подписывать сертификаты самостоятельно, а не покупать.
Создаем наше CA
Первая команда создаёт корневой ключ
1 2 |
openssl genrsa -out rootCA.key 2048 |
Для меня ключ 2048 bit достаточен, если вам хочется, вы можете использовать ключ 4096 bit.
Вторая команда создаёт корневой сертификат.
1 2 |
openssl req -x509 -new -key rootCA.key -days 10000 -out rootCA.crt |
Отвечать на вопросы тут можно как душе угодно.
10000 дней срок его годности, примерно столько живет сертификат, которым google требует подписывать андроид приложения для Google Play. Если вы паникер, подписывайте на год или два.
Все! Теперь мы можем создавать сертификаты для наших серверов и устанавливать корневой сертификат на наши клиентские машины.
Создаем сертификат подписанный нашим СА
Генерируем ключ и создаем запрос на сертификат.
cat csr
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
[req] default_bits = 2048 prompt = no default_md = sha256 req_extensions = req_ext distinguished_name = dn [ dn ] C=RU ST=Bishkek L=Bishkek O=Company OU=IT emailAddress=admin@test.ru CN = *.test.ru [ req_ext ] subjectAltName = @alt_names [ alt_names ] DNS.1 = kibana.test.ru DNS.2 = elastic-1.test.ru IP.1 = 192.168.1.201 IP.2 = 192.168.1.202 IP.3 = 192.168.1.203 |
openssl req -new -sha256 -nodes -out my-csr-request.csr -newkey rsa:2048 -keyout my-private.key -config <(cat csr)
и подписываем запрос на сертификат нашим корневым сертификатом.
openssl x509 -req -in my-csr-request.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out my-cert.crt -days 5000
Теперь на клиенты нужно установить корневой сертификат rootCA.crt
rootCA.crt — можно давать друзьям, устанавливать, копировать не сервера, выкладывать в публичный доступ
rootCA.key — следует держать в тайне
В Ubuntu
1 2 3 4 |
sudo mkdir /usr/share/ca-certificates/extra sudo cp rootCA.crt /usr/share/ca-certificates/extra/rootCA.crt sudo dpkg-reconfigure ca-certificates sudo update-ca-certificates |
В Centos
cp rootCA.crt /etc/pki/ca-trust/source/anchors/
update-ca-trust force-enable
update-ca-trust extract
update-ca-trust