Создайте доверительный сертификат между 2 ПК - PullRequest
0 голосов
/ 18 мая 2011

Мой сервер - Windows Server с хранилищем ключей Java, работающим под управлением JBoss. Я знаю, как установить JBoss, поэтому нет проблем с JBoss.

Мой клиент - Linux Redhat с openssl. Я хочу, чтобы он работал с "Wget" (на https) только с сертификатом PEM. Последний тест - стороннее приложение, работающее только с сертификатом PEM.

Я хочу создать сертификат доверия между этими двумя компьютерами.

Я пробую много много много вещей ... ... и, в конце концов, ничего полностью не сработало.

Может ли кто-нибудь мне помочь? Просто напишите всю командную строку, а я разберусь с остальными.

Ответы [ 2 ]

1 голос
/ 23 июня 2011

Допустим, у вас есть сервер A и клиент B.

Чтобы настроить сервер A для использования механизма взаимной аутентификации TLS, на вашем сервере должна быть пара ключей и «ссылка» для аутентификации вашего клиента Bи обратно.

Теперь для тестирования вы можете создать CA (центр сертификации) для подписи сертификата с помощью serverA с помощью следующей команды:

[1] ~# openssl genrsa -out caServerA.key 1024
[2] ~# openssl req -new -key caServerA.key -out caServerA.csr
[3] ~# openssl ca -selfsign -keyfile caServerA.key -in caServer.csr -out caServerA.crt

Создать пару ключей для сервера A и подписать ее с помощью CAранее созданный:

[1] ~# openssl genrsa -out serverA.key 1024
[2] ~# openssl req -new -key serverA.key -out serverA.csr
[3] ~# openssl ca -keyfile caServerA.key -cert caServerA.csr -in serverA.csr -out serverA.crt

Повторите тот же процесс для клиентской стороны.И, наконец, у вас должно быть что-то вроде: clientB.crt, clientB.key, caClientB.crt.

Предположим, что ваш сервер - apache2, поэтому вы должны сконфигурировать ваш https-штуку следующим образом:

[....]
SSLEngine on
SSLCertificateFile      [path_to_your_certificate]/serverA.crt
SSLCertificateKeyFile   [path_to_your_certificate]/serverA.key
# this because you have to trust all clients that have certificates signed by caClientB
SSLCACertificateFile    [path_to_your_certificate]/caClientB.crt
# this will force server to verify client's identity/certificate
SSLVerifyClient require
[....]

Перезагрузите сервер, и он готов аутентифицировать ваших клиентов.

Для тестирования проще подключиться к серверу через веб-браузер.Но перед этим вы должны экспортировать свою пару ключей в формате PKCS12 с помощью этой команды:

openssl pkcs12 -export -in clientB.crt -inkey clientB.key -out clientB.pkcs12

Теперь вы можете импортировать этот файл в «систему управления ключами» вашего предпочтительного браузера.Подключитесь к вашему серверу, и это будет работать.

Вы также можете активировать Loglevel в режиме отладки, чтобы получить более подробную информацию.

надеюсь, это поможет ...

0 голосов
/ 14 июня 2011

вы говорите только о хранилище ключей. Если вы хотите использовать взаимную аутентификацию между клиент-сервером, в JAVA или других, у вас должно быть своего рода хранилище доверенных сертификатов.

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

Это похоже на то, что когда вы едете в Камбоджу, ваше правительство должно быть связано с правительством Комбодии, в противном случае таможенные службы Камбоджи не могли бы вас идентифицировать ...

Надеюсь, это поможет

...