Thank you a lot, Christopher!

Me blind idiot - didn't mark HttpsURLConnection.setDefaultSSLSocketFactory is static! :)

Very simple indeed - I implemented ServletContextListener and added it *-block-deployment.xweb in my block.
One more thing was needed:

    HostnameVerifier verifyEverything = new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) { return true; }
    };

    HttpsURLConnection.setDefaultHostnameVerifier( verifyEverything );

This works for me now.
And yes, make this check switchable per resource would be very useful.


Thanks,
Andrei



10.09.2010 21:17, Christopher Schultz пишет:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Andrei,

On 9/10/2010 4:05 AM, Andrei Lunjov wrote:
Hi Jos,

I just try to do:

<map:generate src="https://asite.with.invalid.cert/some/resource"/>

And sun.net.www.protocol.https.HttpsURLConnectionImpl if I remember
right throws an exception.
Cert is invalid, so adding it trust store is questionable.
I'd like to ignore the cert check at all, something like this:
http://www.exampledepot.com/egs/javax.net.ssl/TrustAll.html
And it's a big question for me what would be a best way add this
modification, preferably so I can switch cert check on and off for
different resources.
The code below will disable SSL checking for /all/ resources, and can
easily be put into a ServletContextListener in order to modify the SSL
cert checking behavior for a webapp at startup (that is, it's relatively
easy to just slap this into an existing Cocoon installation).

     public static void disableSSLCertificateChecking()
         throws NoSuchAlgorithmException, KeyManagementException
     {
         TrustManager[] trustAllCerts = new TrustManager[] {
             new X509TrustManager() {
                 public X509Certificate[] getAcceptedIssuers() {
                     return null;
                 }
                 public void checkClientTrusted(X509Certificate[] certs,
                                                String authType) {
                 }
                 public void checkServerTrusted(X509Certificate[] certs,
                                                String authType) {
                 }
             }
         };

         SSLContext sc = SSLContext.getInstance("SSL");

         sc.init(null, trustAllCerts, new java.security.SecureRandom());


HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
     }

As I mentioned, this won't help with the resource-specific connections.

The code above could be adapted to work inside a generator in order to
exempt that single resource from SSL certificate checking. Maybe I'll
take a look at the Cocoon code and propose a patch if it's useful.

- -chris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAkyKdiYACgkQ9CaO5/Lv0PAiWQCcCKh0Y03+D8DOhetTpe2Dh/I+
s10Anj8vsvxh9/lzCQTmGimQOU925yhS
=kADE
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to