Как определить список сертификатов сервера, которые он будет принимать от клиента? - PullRequest
0 голосов
/ 15 декабря 2011

Согласно https://wiki.jasig.org/display/CASUM/X.509+Certificates,

После того, как Сервер отправит сертификат, который идентифицирует себя, он может затем отправить список имен Центров сертификации, от которых он готов принимать сертификаты.

Мне интересно, как определить, что это за список, и как его изменить.

Причина, по которой я спрашиваю, заключается в том, что я получаю бесконечное перенаправление между моим сервером имой клиент после успешной проверки (т. е. стадии тикета), и я думаю, что это связано с тем, что сервер CAS не распознает сертификат клиента CAS (сертификат клиента самоподписан).

1 Ответ

0 голосов
/ 15 декабря 2011

Если вы хотите увидеть, что это за список, вы можете использовать OpenSSL:

echo "" | openssl s_client -connect your.server:port

Это покажет различные сообщения, касающиеся рукопожатия, включая сертификаты и список CA в сообщении CertificateRequest.

В конечном счете, это определяется активным X509TrustManager getAcceptedIssuers() методом. По умолчанию это будет список Подчиненных DN всех ваших доверенных привязок (то есть Подчиненных DN всех сертификатов в вашем доверенном хранилище).

Ваш клиентский сертификат должен быть проверен сервером. Обычно это делается во время рукопожатия диспетчером доверия, который (если не настроен) создает цепочку для известного CA (или, по крайней мере, известного сертификата, если это сам сертификат пользователя) в хранилище доверия.

Добавление вашего самозаверяющего сертификата в ваше хранилище доверия должно быть достаточным. Это не должен быть файл cacerts, связанный с JVM, вы можете сделать его копию и использовать настройки хранилища доверенных сертификатов коннектора Apache Tomcat для его настройки.

...