Certificate Authority — в 5 OpenSSL команд(+ генерирование запроса и его подпись)

Thank you for reading this post, don't forget to subscribe!

у нас есть два сер­ве­ра, рабо­та­ют они себе, и пери­о­ди­че­ски они хотят, что-то друг у дру­га спро­сить по про­то­ко­лу HTTP/HTTPS.

Про­то­кол HTTP не без­опа­сен и логич­но исполь­зо­вать про­то­кол HTTPS для обще­ния меду серверами.

Для орга­ни­за­ции тако­го обще­ния нам нуж­но 2 SSL сертификата.

Если сер­ве­ра при­над­ле­жат одной орга­ни­за­ции, то может быть про­ще и без­опас­ней под­пи­сы­вать сер­ти­фи­ка­ты само­сто­я­тель­но, а не покупать.

Создаем наше CA

Пер­вая коман­да созда­ёт кор­не­вой ключ

Для меня ключ 2048 bit доста­то­чен, если вам хочет­ся, вы може­те исполь­зо­вать ключ 4096 bit.
Вто­рая коман­да созда­ёт кор­не­вой сертификат.

Отве­чать на вопро­сы тут мож­но как душе угодно.

10000 дней срок его год­но­сти, при­мер­но столь­ко живет сер­ти­фи­кат, кото­рым google тре­бу­ет под­пи­сы­вать андро­ид при­ло­же­ния для Google Play. Если вы пани­кер, под­пи­сы­вай­те на год или два.

Все! Теперь мы можем созда­вать сер­ти­фи­ка­ты для наших сер­ве­ров и уста­нав­ли­вать кор­не­вой сер­ти­фи­кат на наши кли­ент­ские машины.

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

Гене­ри­ру­ем ключ и созда­ем запрос на сертификат.

cat csr

 

 

 

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

В Centos

cp rootCA.crt /etc/pki/ca-trust/source/anchors/
update-ca-trust force-enable
update-ca-trust extract
update-ca-trust