Tomáš Procházka wrote:
Ahoj,
odpovídám na zprávu ze čtvrtka, 17. srpna 2006,
kterou Tomáš Procházka napsal v 18:52:16:

  Jsem se díval a moje dotazy jsou často nezodpovězeny, takže si odpovím sám.


  Pokud se použije HTTP Client knihovna od Apache, stačí:

    Protocol authhttps = new Protocol("https", new AuthSSLProtocolSocketFactory(
           new URL("file:cert/client.jks"), "heslo",
           new URL("file:cert/server.jks"), "heslo"), 443);
    Protocol.registerProtocol("https", authhttps);

  Jak jednoduché.

Ve skutečnosti záleží na tom, jestli chcete SSL socket nebo
HTTPS spojení, v druhém případě pak záleží na implementaci
HTTP klienta. Standardní javax.net.ssl.HttpsURLConnection
se dá nastavovat pomocí různých properties, bohužel z javadocu
na to nevedou odkazy, takže se musí chvilku hledat, ale je to
popsáno tady:

http://java.sun.com/j2se/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#CustomizingStores

Já jsem to vždycky řešil napsáním vlastních implementací
javax.net.ssl.X509TrustManager a javax.net.ssl.X509KeyManager
a jejich nastavením do SSLContextu:

SSLContext sctx = SSLContext.getInstance("SSL");
sctx.init(mujKeyManager, mujTrustManager, null);
HttpsURLConnection.setDefaultSSLSocketFactory(sctx.getSocketFactory());

pak mám nad vším úplnou kontrolu. Abych se pochlubil, umím už
používat jako zdroj certifikátů a klíčů i hardwarová zařízení
odpovídající specifikaci PKCS11, konkrétně USB tokeny Rainbow iKey 3000,
a perfektně to funguje.

Makub
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Supercomputing Center Brno             Martin Kuba
Institute of Computer Science    email: [EMAIL PROTECTED]
Masaryk University             http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ     mobil: +420-603-533775
--------------------------------------------------------------

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Odpovedet emailem