Как я могу использовать сертификат пользователя? - PullRequest
0 голосов
/ 07 января 2010

Я не могу понять общую схему с использованием сертификатов. Например: у меня есть аккаунт на каком-то сайте. У меня есть name и password. Что я должен сделать, чтобы войти на этот сайт? - Я должен открыть _https://website:443/login и заполнить поля, и если все будет в порядке, я получу доступ.

Теперь я хотел бы выполнить эти шаги программно, используя Java + httpclient (apache). Я написал:

client = new DefaultHttpClient();

client.getParams().setParameter(ClientPNames.COOKIE_POLICY, 
                                CookiePolicy.BEST_MATCH);
client.setCookieStore(new BasicCookieStore());
client.getCredentialsProvider()
      .setCredentials(new AuthScope(ADDRESS, new Integer(PORT)),
                      new UsernamePasswordCredentials(USERNAME, USERPWD));

И я должен создать trustStore с сертификатом сервера:

System.setProperty("javax.net.ssl.trustStore", "./KeyStore/myca");

где myca были созданы с помощью InstallCert.java - продукта Sun.

Но я хотел бы выполнить все эти шаги программно, например, сертификат сервера импорта браузера (FFox или Opera) ... Пользователь просто хочет использовать только мое приложение, а не набор дополнительных приложений.

Как мне это сделать?

А теперь главная проблема: почему серверам не требуется сертификат пользователя? И как я могу использовать свой собственный сертификат для аутентификации? (Если у меня есть сертификат пользователя, мне не понадобится пароль name для входа на сервер?)

1 Ответ

3 голосов
/ 07 января 2010

почему серверы не требуют пользователя сертификат

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

Таким образом, любой сервер, требующий сертификата клиента, уменьшит количество пользователей, вероятно, в 1000 раз. Большинство владельцев серверов этого не хотят.

Если у меня есть сертификат пользователя, я буду не нужно вводить пароль Сервер

Зависит от ваших требований. Требование сертификата + имя пользователя / пароль будет считаться двухфакторной аутентификацией, которая является более сильной формой защиты, чем просто один фактор. Он станет еще сильнее, если попросит какую-то биометрическую идентификацию.

Как мне это сделать?

Выполнить точно что? Вы говорите о том, чтобы делать что-то «программно», но вы уже представляете код ...?

А как я могу использовать свой собственный сертификат для аутентификации?

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

...