It might also be good to be able to globally specify other characteristics of 
the SSL/TLS configuration - for example, the list of supported ciphers.

-----Original Message-----
From: Demetrius Tsitrelis [mailto:demetrius.tsitre...@citrix.com] 
Sent: Tuesday, December 24, 2013 10:11 AM
To: dev@cloudstack.apache.org
Subject: RE: TLSv1 vs TLS vs SSL use throughout CS

If all of the servers and clients support the latest TLS version (1.2) then 
that is the preferred option.  

If not, perhaps we could configure fallback behavior with a list of acceptable 
SSL/TLS versions?  So, if the admin lists TLS 1.2 and TLS 1.1 as acceptable 
then 1.2 would be tried first and then 1.1; if the last one failed then the 
connection would fail.  How about that?

The SSLContext.getInstance() method also takes a parameter for the security 
provider and in one case below someone has named a specific one - SunJSSE.  It 
might be good to allow an admin to configure the provider as well so that 
providers with other characteristics (FIPS, etc.) could be easily chosen.

-----Original Message-----
From: Chiradeep Vittal [mailto:chiradeep.vit...@citrix.com]
Sent: Monday, December 23, 2013 3:00 PM
To: dev@cloudstack.apache.org
Subject: Re: TLSv1 vs TLS vs SSL use throughout CS

Why not set it to the highest secure protocol level always?

On 12/20/13 12:56 PM, "Demetrius Tsitrelis" <dtsitre...@live.com> wrote:

>
>
>I was looking at the SSL code in CloudStack and noticed that there are 
>about a dozen calls to the
>SSLContext.getInstance() method.  Some of them use the  "SSL" protocol 
>while
>others use "TLS" or "TLSv1".   So I'm wondering if it makes sense to
>expose a configuration setting which specifies an organization's 
>minimum secure protocol level and then use that in all of CloudStack.
>Is there a need to maintain distinct protocol configurations for each 
>SSL/TLS connection? Here's the usage list today:
>
> 
>plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServerCon
>nectionPool.java:90:            javax.net.ssl.SSLContext sc =
>javax.net.ssl.SSLContext.getInstance("TLS");
>
>plugins/network-elements/nicira-nvp/src/com/cloud/network/nicira/NiciraNvp
>Api.java:555:                SSLContext sc =
>SSLContext.getInstance("SSL");
>
>plugins/network-elements/palo-alto/src/com/cloud/network/utils/HttpClientW
>rapper.java:42:            SSLContext ctx =
>SSLContext.getInstance("TLS");
>
>plugins/storage/volume/solidfire/src/org/apache/cloudstack/storage/datasto
>re/util/SolidFireUtil.java:703:            SSLContext sslContext =
>SSLContext.getInstance("SSL");
>
> 
>services/console-proxy/server/src/com/cloud/consoleproxy/ConsoleProxySecur
>eServerFactoryImpl.java:71:                sslContext =
>SSLContext.getInstance("TLS");
>
>services/console-proxy/server/src/com/cloud/consoleproxy/ConsoleProxySecur
>eServerFactoryImpl.java:94:                sslContext =
>SSLContext.getInstance("TLS");
>
>services/console-proxy/server/src/com/cloud/consoleproxy/util/RawHTTP.java
>:236:            sslContext =
>SSLContext.getInstance("SSL", "SunJSSE");
>
>services/console-proxy-rdp/rdpconsole/src/main/java/streamer/SocketWrapper
>.java:130:            SSLContext sslContext =
>SSLContext.getInstance("TLSv1");
>
> utils/src/com/cloud/utils/nio/Link.java:430:        sslContext =
>SSLContext.getInstance("TLS");
>
>utils/src/org/apache/commons/httpclient/contrib/ssl/EasySSLProtocolSocketF
>actory.java:114:            SSLContext context =
>SSLContext.getInstance("SSL");
>
> vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareClient.java:102:
>      javax.net.ssl.SSLContext sc =
>javax.net.ssl.SSLContext.getInstance("SSL");
>
>vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareContext.java:80:
>         javax.net.ssl.SSLContext sc =
>javax.net.ssl.SSLContext.getInstance("SSL");
>
>                                         

Reply via email to