LINUX.ORG.RU
ФорумAdmin

Зачем нужны keystore и truststore? На примере Apache ActiveMQ.

 , , , ,


0

2

Какая разница между keystore и truststore? Keystore хранит на сервере сертификаты и ключи, которыми сервер шифрует то, что раздаёт? А truststore хранит информацию, каким чужим сертификатам можно доверять, когда сервер заходит на другие сервера как клиент? Но с точки зрения keytool принципиальной разницы нет, формат одинаков?

В дистрибутиве Apache ActiveMQ имеется 4 таких файла: broker.ks, broker.ts, client.ks, client.ts. broker.ks используется сервером, если включены доступ по SSL к REST, веб-интерфейсу, STOMP, WebSockets и т.п.? client.ts используется клиентскими программами на Java? А для чего нужны 2 остальных? SSL/TLS предусматривает вариант, когда клиент даёт серверу свой сертификат, и тот его принимает или не принимает?

P.S. Ещё вопрос туда же. Сертификат выдан на *.domain.ru. Я делаю как в https://wavemotiondigital.com/2014/03/07/convert-your-wildcard-ssl-to-jks-java-keystore-format/:

openssl pkcs12 -export -name my.domain.ru -in ca_bundle.pem -inkey domain.ru.key -out keystore.p12
keytool -importkeystore -destkeystore broker.ks -srckeystore keystore.p12 -srcstoretype pkcs12 -alias my.domain.ru

и всё нормально работает для https://my.domain.ru. Но когда я добавляю те же сертификаты под другим алиасом:

openssl pkcs12 -export -name my.subnet.domain.ru -in ca_bundle.pem -inkey domain.ru.key -out keystore2.p12
keytool -importkeystore -destkeystore broker.ks -srckeystore keystore2.p12 -srcstoretype pkcs12 -alias my.subnet.domain.ru

на https://my.subnet.domain.ru Хром ругается. Как сделать, чтобы работало для обоих доменов?

★★

Ответ на: комментарий от t184256

А зачем это нужно? Вместо пароля? Кто этим активно пользуется?

И можешь на P.S. ответить? Как делать keystore на несколько доменов, если есть сертификат со звёздочкой? Домены на одном IP, если это имеет значение.

olegd ★★ ()
Ответ на: комментарий от olegd

Я бы начал с того, что под-домен для my.domain.ru будет subnet.my.domain.ru.

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

pon4ik ★★★★★ ()
Ответ на: комментарий от olegd

А зачем это нужно? Вместо пароля? Кто этим активно пользуется?

Из того чем пользуюсь регулярно я - в EJBCA администратор может авторизоваться через web только с помощью сертификата

Pinkbyte ★★★★★ ()
Ответ на: комментарий от pon4ik

под-домен для my.domain.ru будет subnet.my.domain.ru.

Невозможно.

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

Из написанного по ссылке я сделал вывод, что эти домены следует указывать в -name при создании хранилища *.p12. И что хранилище может иметь только 1 имя. Это не так?

olegd ★★ ()
Ответ на: комментарий от olegd

Чтобы аутентифицировать клиентов 1) по ключам, 2) на уровне, ниже прикладного, 3) без всяких там баз паролей, а с доверием на цепочках сертификатов. Вообще-то куда более здравая идея, чем городить в каждом протоколе и каждом сервере свой велосипед аутентификации. Но не взлетевшая, для клиентов из мяса это типа слишком сложно.

t184256 ★★★★★ ()
Ответ на: комментарий от olegd

Дополнение: у новых версий Jetty проблемы, если несколько имён: https://opennms.discourse.group/t/jetty-with-ssl-throws-error-with-keystores-with-multiple-certificates-are-not-supported/1489 И, похоже, со звёздочками та же проблема. Лечится заменой всех org.eclipse.jetty.util.ssl.SslContextFactory в конфиге Jetty на org.eclipse.jetty.util.ssl.SslContextFactory$Server.

Вроде бы можно и на org.eclipse.jetty.util.ssl.SslContextFactory.Server, но не проверял.

olegd ★★ ()
Последнее исправление: olegd (всего исправлений: 2)