А как создавать цепочки подписанных сертификатов в openssl?Создал собственный корневой CA (company.ru)
Выдал и подписал им сертификаты для почтового сервера (mail.company.ru) и radius сервера (radius.company.ru).Создал клиентские сертификаты client1,2,3 для клиентов, для работы с почтовым сервером, подписал их тоже корневым сертификатом CA (company.ru).
Все замечательно работает.
Но возник вопрос.
В песпроводной сети используется WPA шифрование через EAP/TLS с использованием radius сервера. Аутентификация клиента - по сертификату.
И тут оказалось, что клиентские сертификаты, выданные для почты, отлично подходят для аутентификации на радиус сервере, т.е. любой клиент, которому выдан почтовый клиенсткий сертификат, может работать и с беспроводной сетью. Вероятно, он сможет работать и с веб-сервером, если там тоже настроить аутентификацию посредством сертификатов и тд.Другими словами, одного сертификата клиента хватит для всего. Это хорошо, но если нужно разграничить доступ клиентам (например, всем можно пользоваться своей почтой, но только избранным - подключаться к беспроводной сети). Что тут делать?
Пришло в голову, что нужно подписывать клиентские сертификаты не корневым (CA, company.ru), а соответствующими сертификатами серверов - mail.company.ru, radius.company.ru (а они, в свою очередь, уже были подписаны корневым центром CA). Теоретически, если я правильно понимаю идеологию сертификатов, в этом случае сертификат, выданный для работы с почтой, не подойдет для аутентификации на радиус-сервере.
К сожалению, попытка подписать клиенсткий сертификат серверными не удалась.
Точнее, подпись, как таковая, успешно проходит, я получаю файл сертификата:
------
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 6 (0x6)
Signature Algorithm: md5WithRSAEncryption
Issuer: C=RU, ST=Euro, L=Moscow, O=company.ru, OU=testlab, CN=radius.company.ru/emailAddress=eightn@company.ru
Validity
Not Before: Jun 6 12:22:02 2005 GMT
Not After : Jun 6 12:22:02 2007 GMT
Subject: C=RU, ST=Euro, L=Moscow, O=company.ru, OU=testlab, CN=client3/emailAddress=eightn@company.ru
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
------но вот при попытке проверки такого сертификата
openssl verify -CAfile company.ru-ca.crt client3.crt
выдается примерно следующее:
client3.crt: /C=RU/ST=Euro/L=Moscow/O=company.ru/OU=testlab/CN=client3/emailAddress=eightn@company.ru
error 20 at 0 depth lookup:unable to get local issuer certificate
(вне зависимости от того, что ставить в CAfile - корневой сертификат (company.ru-ca.crt) или сертификат radius-сервера (radius.company.ru.crt), который в свою очередь, подписан корневым.
Указание пути -CApath к сертификатам тоже не помогает (выдается та же ошибка).
Та же ошибка выдается и при перечислении сертификатов цепочки:
openssl verify -CAfile company.ru-ca.crt radius.company.ru.crt client3.crtradius.company.ru.crt: OK
client3.crt: /C=RU/ST=Euro/L=Moscow/O=company.ru/OU=testlab/CN=client3/emailAddress=eightn@company.ru
error 20 at 0 depth lookup:unable to get local issuer certificate
>А как создавать цепочки подписанных сертификатов в openssl?
>
>Создал собственный корневой CA (company.ru)
>Выдал и подписал им сертификаты для почтового сервера (mail.company.ru) и radius сервера
>(radius.company.ru).
>
>Создал клиентские сертификаты client1,2,3 для клиентов, для работы с почтовым сервером, подписал
>их тоже корневым сертификатом CA (company.ru).
>
>Все замечательно работает.
>То есть, получается, что и клиентские сертификаты и серверные для CA - на одном "уровне"?
Вообще, в том же апаче доступом можно управлять на основе полей, например OU,CN. И тогда выход - выдавать почтовые сертификаты с полем OU=mailer, а тем, кто будет получать доступ к сети через NAS + radius, выдавать OU=wan-access. Если для радиуса эти атрибуты существуют как отдельные пары - то можно загнать в radcheck или в групповой radcheck.
А вообще, интересная тема - если получится - напишите, пожалуйста, как... ;)
У меня та-же самая проблема!
Если кто-то знает в чем проблема - напишите решение пожалуйста!
Вообще, управлять доступом к ресурсам, генеря кучу дополнительных центров сертификации - не очень хорошая идея (как же SSO???).
А средства радиуса разве не позволяют кому-то открыть доступ, а кому-то закрыть?Попробуйте скопировать в файл сертификата второго центра в цепочке в конец файла сертификат корневого центра и повторить проверку.
http://www.mkssoftware.com/docs/man1/openssl_verify.1.asp
>А как создавать цепочки подписанных сертификатов в openssl?
>
>Создал собственный корневой CA (company.ru)
>Выдал и подписал им сертификаты для почтового сервера (mail.company.ru) и radius сервера
>(radius.company.ru).
>
>Создал клиентские сертификаты client1,2,3 для клиентов, для работы с почтовым сервером, подписал
>их тоже корневым сертификатом CA (company.ru).
>
>Все замечательно работает.
>
>Но возник вопрос.
>В песпроводной сети используется WPA шифрование через EAP/TLS с использованием radius сервера.
>Аутентификация клиента - по сертификату.
>И тут оказалось, что клиентские сертификаты, выданные для почты, отлично подходят для
>аутентификации на радиус сервере, т.е. любой клиент, которому выдан почтовый клиенсткий
>сертификат, может работать и с беспроводной сетью. Вероятно, он сможет работать
>и с веб-сервером, если там тоже настроить аутентификацию посредством сертификатов и
>тд.
>
>Другими словами, одного сертификата клиента хватит для всего. Это хорошо, но если
>нужно разграничить доступ клиентам (например, всем можно пользоваться своей почтой, но
>только избранным - подключаться к беспроводной сети). Что тут делать?
>
>Пришло в голову, что нужно подписывать клиентские сертификаты не корневым (CA, company.ru),
>а соответствующими сертификатами серверов - mail.company.ru, radius.company.ru (а они, в свою
>очередь, уже были подписаны корневым центром CA). Теоретически, если я правильно
>понимаю идеологию сертификатов, в этом случае сертификат, выданный для работы с
>почтой, не подойдет для аутентификации на радиус-сервере.
>
>К сожалению, попытка подписать клиенсткий сертификат серверными не удалась.
>Точнее, подпись, как таковая, успешно проходит, я получаю файл сертификата:
>------
>Certificate:
> Data:
> Version: 3 (0x2)
> Serial Number: 6 (0x6)
>
> Signature Algorithm: md5WithRSAEncryption
> Issuer: C=RU, ST=Euro, L=Moscow,
>O=company.ru, OU=testlab, CN=radius.company.ru/emailAddress=eightn@company.ru
> Validity
>
>Not Before: Jun 6 12:22:02 2005 GMT
>
>Not After : Jun 6 12:22:02 2007 GMT
> Subject: C=RU, ST=Euro, L=Moscow,
>O=company.ru, OU=testlab, CN=client3/emailAddress=eightn@company.ru
> Subject Public Key Info:
>
>
>Public Key Algorithm: rsaEncryption
>
>------
>
>но вот при попытке проверки такого сертификата
>
>openssl verify -CAfile company.ru-ca.crt client3.crt
>выдается примерно следующее:
>client3.crt: /C=RU/ST=Euro/L=Moscow/O=company.ru/OU=testlab/CN=client3/emailAddress=eightn@company.ru
>error 20 at 0 depth lookup:unable to get local issuer certificate
>(вне зависимости от того, что ставить в CAfile - корневой сертификат (company.ru-ca.crt)
>или сертификат radius-сервера (radius.company.ru.crt), который в свою очередь, подписан корневым.
>Указание пути -CApath к сертификатам тоже не помогает (выдается та же ошибка).
>
>Та же ошибка выдается и при перечислении сертификатов цепочки:
>openssl verify -CAfile company.ru-ca.crt radius.company.ru.crt client3.crt
>
>radius.company.ru.crt: OK
>client3.crt: /C=RU/ST=Euro/L=Moscow/O=company.ru/OU=testlab/CN=client3/emailAddress=eightn@company.ru
>error 20 at 0 depth lookup:unable to get local issuer certificate
можно в при генирации сертификата указать зачем нужен сертификат то еть счем ему работать- првалеьно назначение сертификата