-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

All,

On 6/10/2011 3:59 PM, Christopher Schultz wrote:
> It's best to find out what your JVM supports and use that.
> 
> I wrote a short bit of code a while back to determine the supported
> algorithms and the default cipher suite for an SSLSocketFactory.

As promised, see below. No warranty. Free license. Attributions appreciated.

- -chris

package com.chadis.tools.security;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;

import java.security.Provider;
import java.security.Security;

import javax.net.ssl.SSLServerSocketFactory;

public class SSLInfo
{
    public static void main(String[] args)
        throws Exception
    {
        boolean enumeratedProviders = (null != args && 0 < args.length);

        // Get SSL protocol info
        String providerName = null;
        Provider providers[];
        if(enumeratedProviders)
        {
            providers = new Provider[args.length];
            for(int i = 0; i < args.length; i++)
                providers[i] = Security.getProvider(args[i]);

        } else {
            providers = Security.getProviders();
        }

        System.out.println("Supported SSL Protocols:");
        boolean foundProtocol = false;

        for(int i = 0; i < providers.length; i++)
        {
            Provider p = providers[i];

            // Skip any providers that don't actually exist
            if(null == p) continue;

            ArrayList keys = new ArrayList(p.keySet());
            Collections.sort(keys);
            for(Iterator j = keys.iterator(); j.hasNext(); )
            {
                String key = (String)j.next();

                if(key.startsWith("SSLContext.")
                   && !"SSLContext.Default".equals(key))
                {
                    foundProtocol |= true;
                    System.out.print("  ");
                    System.out.print(key.substring("SSLContext.".length()));
                    System.out.print(" (");
                    System.out.print(p.getName());
                    System.out.println(")");
                }
            }
        }

        if(!foundProtocol)
            if(enumeratedProviders)
                System.out.println(" ! No SSL protocols supported by any
requested provider");
            else
                System.out.println(" ! No SSL protocols supported by any
provider");

        // Get cipher suite info
        SSLServerSocketFactory ssf =
(SSLServerSocketFactory)SSLServerSocketFactory.getDefault();

        String[] defaultCiphers = ssf.getDefaultCipherSuites();
        String[] availableCiphers = ssf.getSupportedCipherSuites();

        TreeMap ciphers = new TreeMap();

        for(int i=0; i<availableCiphers.length; ++i )
            ciphers.put(availableCiphers[i], Boolean.FALSE);

        for(int i=0; i<defaultCiphers.length; ++i )
            ciphers.put(defaultCiphers[i], Boolean.TRUE);

        System.out.println("Default\tCipher Name");

        for(Iterator i = ciphers.entrySet().iterator(); i.hasNext(); ) {
            Map.Entry cipher=(Map.Entry)i.next();

            if(Boolean.TRUE.equals(cipher.getValue()))
                System.out.print('*');
            else
                System.out.print(' ');

            System.out.print('\t');
            System.out.println(cipher.getKey());
        }
    }
}
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk3yfN8ACgkQ9CaO5/Lv0PCLdwCffjuhJ/EznrfRr3EqfGHijSyK
GtQAnAnWSmk8g8luGF73lPWWXdrTssc+
=0/80
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to