Я планирую сделать настольное приложение для безопасного обмена файлами в Java. Приложение нуждается в надежном методе аутентификации, который должен гарантировать, что только авторизованные пользователи обращаются к системе.Аутентификация на основе сертификатов
При регистрации пользователи генерируют пару ключей и отправляют свое имя пользователя и открытый ключ на центральный сервер системы. Системный администратор, имеющий доступ к этому центральному серверу, утверждает регистрацию и просит орган сертификации выдавать сертификат открытого ключа, который связывает имя пользователя с открытым ключом. Сертификат x509 создается и хранится на сервере сертификатов.
Когда пользователь хочет пройти аутентификацию, он вводит свое имя пользователя, и приложение создает для него цифровую подпись со своим закрытым ключом. Эта подпись отправляется на центральный сервер, который запрашивает сертификат x509 для соответствующего закрытого ключа. Если x509 найден на сервере сертификатов, он отправляет сертификат для центрального сервера, и пользователь аутентифицируется.
Я думаю, что у меня есть правильная идея, но я не знаю, как начать реализацию на Java. Можете ли вы, ребята, дать мне несколько указателей или исправить мои идеи, если вы думаете, что я немного смущен?
Вы спрашиваете о реализации, чтобы я голосовал, чтобы перенести это на SO. – Ayrx
Почему вы строите новый протокол authn вместо использования TLS или SSH, оба из которых могут выполнять cert authn? Почему бы просто не сохранить действительные сертификаты authz'd на сервере служб или разрешить подписанные сертификаты и управлять списком аннулирования? Вы авторизуете клиента на ключевом сервере, но он не кажется ничем иным ... Как клиентский сервер аутентификации клиента? Как сервер авторизации клиента? Как сервер сервера авторизации сервера? Как работает сервер обслуживания сервера? Что вы делаете, чтобы предотвратить повтор подписи? Зачем вам нужен промежуточный сервер для хранения сертификата x509 вместо его хранения? – atk
Это проект колледжа, и мы не должны использовать TLS или SSH, я думаю. В любом случае, я получил ваше мнение, я должен хранить авторизованные сертификаты на центральном сервере. Клиент сможет аутентифицировать центральный сервер, потому что этот центральный сервер также имеет сертификат, выданный тем же ЦС. Протокол, который я должен использовать, - «Станция-Станция». – wolvz