Я не могу понять общую схему с использованием сертификатов.
Например: у меня есть аккаунт на каком-то сайте. У меня есть 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 для входа на сервер?)