URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 2115
[ Назад ]

Исходное сообщение
"как создавать цепочки сертификатов?"

Отправлено eightn , 06-Июн-05 19:14 
А как создавать цепочки подписанных сертификатов в 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


Содержание

Сообщения в этом обсуждении
"как создавать цепочки сертификатов?"
Отправлено .zZz. , 07-Июн-05 10:46 
>А как создавать цепочки подписанных сертификатов в 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.
А вообще, интересная тема - если получится - напишите, пожалуйста, как... ;)


"как создавать цепочки сертификатов?"
Отправлено Alexey Morozov , 08-Июн-05 12:49 
У меня та-же самая проблема!
Если кто-то знает в чем проблема - напишите решение пожалуйста!

"как создавать цепочки сертификатов?"
Отправлено Mikka , 10-Июн-05 13:09 
Вообще, управлять доступом к ресурсам, генеря кучу дополнительных центров сертификации - не очень хорошая идея (как же SSO???).
А средства радиуса разве не позволяют кому-то открыть доступ, а кому-то закрыть?

Попробуйте скопировать в файл сертификата второго центра в цепочке в конец файла сертификат корневого центра и повторить проверку.


"как создавать цепочки сертификатов?"
Отправлено Mikka , 10-Июн-05 13:15 
http://www.mkssoftware.com/docs/man1/openssl_verify.1.asp

"как создавать цепочки сертификатов?"
Отправлено oksimus , 10-Июн-05 17:12 
>А как создавать цепочки подписанных сертификатов в 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


можно в при генирации сертификата указать зачем нужен сертификат то еть счем ему работать- првалеьно назначение сертификата