Подробно рассмотрим каким образом можно быстро и просто генерировать самоподписные сертификаты на linux при помощи пакета easyrsa.
установка easyrsa
В моём примере будет CentOS 7, но принцип один во всех дистрибутивах. Начнём с того что надо этот пакет установить:
1 |
yum install easy-rsa |
По дефолту исполняемый файл — /usr/share/easy-rsa/3/easyrsa. Если вдруг не там, попробуйте набрать:
1 |
whereis easy-rsa |
инициализация
После установки можно сразу приступать к генерации. Я создал каталог где будут хранится мои сертификаты
1 |
mkdir -p /home/cert/cmp |
переходим в созданный каталог и запускаем инициализацию
1 2 |
cd /home/cert/cmp /usr/share/easy-rsa/3/easyrsa init-pki |
build-ca
Следующий этап — создание корневого сертификата. Я везде буду использовать директиву nopass, что бы не вводить каждый раз пароль. Да и не понятно зачем он тут вообще.
1 |
/usr/share/easy-rsa/3/easyrsa build-ca nopass |
1 |
/usr/share/easy-rsa/3/easyrsa gen-dh |
генерация сертификатов
Существует два способа генерации сертификатов. В сертификате будет указан только commonName (CN). Этот способ позволяет сэкономить время — не надо отвечать на много ненужных вопросов. Такие сертификаты подходят например для использования в openvpn. Но если вы хотите указывать в сертификате не только CN, но и например email или country code можно использовать опции
1 2 3 4 5 6 |
--req-c=CC : country code (2-letters) --req-st=NAME : State/Province --req-city=NAME : City/Locality --req-org=NAME : Organization --req-email=NAME : Email addresses --req-ou=NAME : Organizational Unit |
Сертификат для сервера:
1 |
/usr/share/easy-rsa/3/easyrsa build-server-full cmp-server-name nopass |
Аналогичным образом генерируется сертификаты клиента. Как мы помним в этом случае сертификат из атрибутов будет иметь только CN.
1 |
/usr/share/easy-rsa/3/easyrsa build-client-full cmp-client-01 nopass |
Мы закончили, сертификаты лежат в папке pki/issued, а закрытые ключи к ним в папке pki/private.