Това е едно от нещата, които не правя често и за това реших, че е добра идея да си опиша последователността от стъпки тук. Целта е да си създам собствено CA (Certification Authority) и след това с него да си подпиша csr (certificate signing request) файла, резултата ще е сертификат, който ще използвам за криптиране на връзката през уеб. CA сертификата ще се инсталира на браузъра на клиента и по този начин, ще валидира създадения по-рано сертификат. От написаното до тук, предполагам няма да стане много ясно, кое как работи. Сигурен съм обаче, че връзките по-долу ще послужат, за да се придобие по-ясна представа какво и защо се прави:
Straightforward Explanation of SSL and HTTPS
How SSL Works
Wikipedia Transport Layer Security
Ето и няколко линка, даващи информация за това как сами да си направим самоподписан сертификат посредством OpenSSL, описаното по-долу копира описаното в тези два сайта:
Creating Certificate Authorities and self-signed SSL certificates
OpenSSL
За да различавам ключовете от сертификатите, съм създал 2 директории в /etc/ssl – certs и private. В certs съхранявам всички сертификати, а в private ключовете. Редно е да се спомене, че достъп до файловете в private трябва да има само root потребителят и само той, би трябвало да може да ги чете. Ето и последователността от стъпки, за създаване на самоподписан сертификат:
1. Създаване на CA
1.1 Създаване на CA key
openssl genrsa -out private/CA.pem 4096
1.2 Създаване на сертификат, подписан с вече създадения CA key
openssl req -new -x509 -days 3650 -key private/CA.pem -out certs/CA.crt
С days параметъра, казваме за колко време да е валиден този сертификат. След изпълняването на командата, ще трябва да въведем информация за сертификата, което включва държава, област, град, име на компанията, отдел и домейн за CA сертификата, който обаче трябва да е различен от домейна, за който правим сертификат и който ще подпишем по-късно с този CA.
2. Създаване на certificate signing request
2.1 Създаване на private key за сървъра
openssl genrsa -out private/domain.pem 4096
2.2 Използваме вече направения pravete key, за да създадем certificate signing request
openssl req -new -key private/domain.pem -out private/domain.csr
Тук също както при създаването на сертификата, ще трябва да въведем държава, област, град, име на компанията, отдел и домейн.
3. Подписване на certificate signing request-а, използвайки вече създадения CA
openssl x509 -req -days 3650 -in private/domain.csr -CA certs/CA.crt -CAkey private/CA.pem -set_serial 2008113001 -out certs/domain.pem