Добрый день коллеги!
В связи с производственной необходимостью (IT аутсорсинг), возникла задача по созданию собственного центра сертификации, дабы генерировать ключи к OpenVPN для своих сотрудников и сотрудников обслуживаемых организаций.
Идея такая:
Все (кому надо) мои сотрудники получают личный ключ, подписанный нашим СА, и с его помощью ходят по всем нашим организациям. Так же, во многих обслуживаемых нами организациях, руководство и не только, тоже желает подключаться к своей конторе из дома/командировки... Для этого на их сервере тоже стоит свой СА, но подписанный нашим СА (т.е. является как бы дочерним). Он собственно и выдает ключи для целей конкретной организации. Все дочерние организации периодически скачивают у нас список отозванных сертификатов, дабы блокировать скомпрометированные ключи.
Т.е. получается такая схема:---------------------------- ----------------------------
| СА0 наш |-----> | СА1 организации1|
|самоподписанный |-- | подписанный СА0 |
---------------------------- | ----------------------------
| | |
User0 | User1
| ServerOVPN1
|
| ----------------------------
--> | СА2 организации2|
| подписанный СА0 |
----------------------------
|
User2
ServerOVPN2
(криво получилось... в редакторе один шрифт, предпросмотр другой, результат вообще третий :( )
СА0 - выдает моим сотрудникам ключи и с их помощью, наример User0, нормально подключается к ServerOVPN1 и ServerOVPN2.
СА1 - подписан нашим СА и выдает для сотрудников организации1, например User1, ключи для подключения к ServerOVPN1.
СА2 - подписан нашим СА и выдает для сотрудников организации2, например User2, ключи для подключения к ServerOVPN2.
Все замечательно работает...
Одно НО! Очень большое НО. User1 может подключиться к ServerOVPN2 и наоборот, User2 подключается к ServerOVPN1. Но этого не должно быть!... по задумке... и по фэншую.
Как генерирую ключи:
# Создание основного CA сертификации
openssl dhparam -out /etc/openvpn/keys/dh2048.pem 2048
openssl req -days 7000 -nodes -new -newkey rsa:4096 -x509 -keyout ca.key -out ca.crt
# Генерация СА1
openssl req -nodes -new -newkey rsa:3072 -keyout /etc/openvpn/keys/Test1/ca.key -out /etc/openvpn/keys/Test1/ca.csr -config /root/Scripts/ssl/openssl.cnf -batch
openssl ca -days 3650 -out /etc/openvpn/keys/Test1/ca.crt -in /etc/openvpn/keys/Test1/ca.csr -extensions v3_ca -config /root/Scripts/ssl/openssl.cnf -batch
cat /etc/openvpn/keys/ca.crt>>/etc/openvpn/keys/Test1/ca.crt
Далее копируем по scp Test1/ca.key,Test1/ca.csr, Test1/ca.crt на сервер клиента1, там стандартными средствами от OpenVPN создаем ключ сервера (ServerOVPN1) и клиента User1
Аналогично поступаем с CA2, ServerOVPN2, User2
openssl.cnf взят из OpenVPN, только дополнен несколькими переменными для автоматической генерации из скриптов.
Что я делаю не так? Может какие параметры надо дописать в openssl.cnf на СА0?