どのように私は、ユーザーの証明書を使用することができますか?
-
19-09-2019 - |
質問
私は、証明書を使用して一般的なスキームを理解することはできません。
例えば:私はいくつかのウェブサイトにアカウントを持っています。私はname
とpassword
を持っています。私はこのサイトにログインするにはどうすればよいですか? - 私は_https://website:443/login
を開き、各フィールドに必要事項を記入し、すべてがOKであれば、私はアドミタンスを得るでしょう。
さて、私は、プログラムのJava +のHTTPClient(アパッチ)usinこれらの手順を実行したいと思います。 私が書いてます:
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));
そして、私は、サーバーの証明書とトラストストアを作成する必要があります:
System.setProperty("javax.net.ssl.trustStore", "./KeyStore/myca");
ここで、 'mycaは' 'InstallCert.java' で作られた - 。Sunの製品
しかし、私は、ユーザー...このすべては、ブラウザ(FFox、またはオペラ)インポートサーバーの証明書のように、プログラムでの手順を実行したいだけの唯一の私のアプリケーションではなく、追加のアプリケーションのセットを使用します。
どのように私はそれを行うことができますか?
そして今、主な問題は:なぜサーバーは、ユーザーの証明書を必要としないのですか?そして、どのように私は、認証するために自分自身の証明書を使用することができますか? (私は、ユーザーの証明書を持っている場合、私は、サーバーにログインするには「name''password」を必要としないのだろうか?)
解決
ほとんどのユーザーは今それが何であるか、どのように1を取得するには、いずれかをしていない持っていないため、なぜサーバは、ユーザのを必要としません。 証明書?
サーバーは、ユーザー証明書を必要としません。でも、彼らは希望の場合は、そのような証明書を得ることが困難または高価なのいずれかであると、非常に多くのユーザは、1つを取得することはありません。
だから、クライアント証明書を必要とするすべてのサーバーは、ほとんどのサーバーの所有者がそれを望んでいない。
1000倍、おそらくユーザーの数を減らすこと私は、ユーザーの証明書を持っている場合、私は意志 にログインして「name''password」を必要としません サーバー?
あなたの要件によって異なります。証明書+ユーザ名を必要とする/パスワードは、ただ一つの要因を必要とし、保護の強い形で2つの要素認証を、と考えられます。これは、生体認証のいくつかの種類を尋ねることにより、さらに強力になるだろう。
どのように私はそれを行うことができますか?
正確に何を実行しますか?あなたは...「プログラムで」ことをやっての話が、あなたにすでに存在するコードされている?
そして、どのように私が認証するために自分自身の証明書を使用することができますか?
これは、サーバーの構成で行われるべきです。あなたは+ trustetのルート証明書を含むトラストストアは、SSL構成でクライアントauthenticaticationを必要とし、セットアップする必要があります。例えば、検索ここClientAuthでためを。