Добрый день коллеги!
В связи с производственной необходимостью (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?
>[оверквотинг удален]
> # Создание основного 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а если для генерации для User1 использовать только Test1/ca.crt, а не объединенный с keys/ca.crt, а объединенный использовать только для проверки в OpenVPN?
> Далее копируем по scp Test1/ca.key,Test1/ca.csr, Test1/ca.crt на сервер клиента1, там
> стандартными средствами от OpenVPN создаем ключ сервера (ServerOVPN1) и клиента User1
> Аналогично поступаем с CA2, ServerOVPN2, User2
> openssl.cnf взят из OpenVPN, только дополнен несколькими переменными для автоматической
> генерации из скриптов.
> Что я делаю не так? Может какие параметры надо дописать в openssl.cnf
> на СА0?
> а если для генерации для User1 использовать только Test1/ca.crt, а не объединенный
> с keys/ca.crt, а объединенный использовать только для проверки в OpenVPN?Это будет идеологически не верно - ибо предполагается, что системы 1 и 2 будут автономные, а так, поменяв на них принцип выдачи сертификата(например придет туда недобросовестный админ), можно попасть в другую автономную систему, а мы отвечаем на все системы.
>> на СА0?
Думаю, что да, так будет правильнее.
> Что я делаю не так?Вся схема неправильная.
>> Что я делаю не так?
> Вся схема неправильная.А как правильно будет?
Как я понимаю, никто не знает как необходимо реализовать данную задачу, знают только, что так не правильно :)
Видимо сайт не посещают более Гуру. Жаль, это была последняя надежда.
> Как я понимаю, никто не знает как необходимо реализовать данную задачу, знают
> только, что так не правильно :)
> Видимо сайт не посещают более Гуру. Жаль, это была последняя надежда.Влом, писать много. :)
>> Как я понимаю, никто не знает как необходимо реализовать данную задачу, знают
>> только, что так не правильно :)
>> Видимо сайт не посещают более Гуру. Жаль, это была последняя надежда.
> Влом, писать много. :)Спасибо, большое, это очень помогло.