PS as I certainly got into the weeds, just there.. will clarify,
especially as gaul raised valid points.

1. I think the proposed fix is distracting, so wouldn't hold back a
release on that.
2. I don't think it would harm many, if any, if we told folks how to
change jclouds to not use ssl v3
3. I suggested a patch, because I think that we shouldn't hold users
who care about poodle hostage to 1.8.1

...but..

I think this should also work

HttpsURLConnection.setDefaultSSLSocketFactory(patchedOne)

This is probably a better quick fix, since it involves no guice. Not
involving guice means we can reorganize a better long-term solution,
and hopefully make test cases to prove it for all http drivers.

-A

On Mon, Oct 20, 2014 at 4:57 PM, Adrian Cole <adrian.f.c...@gmail.com> wrote:
> Right. So, I think the safest way is to provide the information to
> those who wish to patch for poodle. This limits scope of the change to
> those interested in it, and also fixes those who aren't ready to
> switch to 1.8.1
>
> They would do this.
>
> contextBuilder.modules(..., new AbstractModule() {
>   @Override public void configure(){}
>   @Provides @Singleton Supplier<SSLContext> unpoodled() {
>     return // favorite thing.
>   });
>
> done. Problem answered.. scope limited.
>
> We then have bought time to think it through a bit. For example, we
> may want to restructure how the ssl contexts are passed around, or
> address other http clients in a consistent way such that client auth
> based apis can still work. (ex. maybe contextBuilder.sslProtocols)
>
> -A
>
> ----longer part---
>
>
> Apache hc was written not knowing that the default executor does this.
>
> @Inject(optional = true)
> protected Supplier<SSLContext> sslContextSupplier;
>
> https://github.com/jclouds/jclouds/blob/master/core/src/main/java/org/jclouds/http/internal/JavaUrlHttpCommandExecutorService.java#L80
>
> It started doing that because of FCGP.. Only other api that does
> something similar is azurecompute. These two modify the default ssl
> context to allow client auth and if they can't, bad things happen. It
> interestingly becomes the case that we need to modify the default ssl
> context as a part of addressing poodle!
>
> So, considering most folks don't install apachehc, we could defer
> addressing that, or otherwise hardcoding it. We could suggest that the
> most immediate fix (one that won't break any non-labs stuff), is to
> make this patch.
>
> contextBuilder.modules(..., new AbstractModule() {
>   @Override public void configure(){}
>   @Provides @Singleton Supplier<SSLContext> unpoodled() {
>     return // favorite thing.
>   });
>
> This will work for those who must change it, regardless of 1.8.1 or
> not, since all asf releases have the optionally injected ssl context
> supplier.
>
> Also, this limits risk only to those who install it. Remember that
> private cloud may not even run TLS stacks, even if it "should". It
> would totally suck to break folks running tests, etc. if we have a
> choice. Now, since we do know which clouds are "providers" we could
> auto-fix all public cloud services. Just saying that it isn't the case
> that every enterprise will patch all internal servers.
>
> WRT "untrusted" I think it confuses things to patch poodle, yet trust
> all certs :) That's why I suggest rolling back that part.
>
> On Mon, Oct 20, 2014 at 10:27 AM, Andrew Phillips <aphill...@qrmedia.com> 
> wrote:
>>> Don't mess with the untrusted one. Fix apachehc later.
>>
>>
>> To be clear: by this, you mean *don't* go for the change in SSLModule in
>> [1]? As far as I understand the code, that is also the "untrusted" context
>> used in ApacheHC - the one that's being modified in [1] is in case the user
>> is *not* looking to trust all certs [2].
>>
>> ap
>>
>> [1] https://github.com/jclouds/jclouds/pull/575/files
>> [2]
>> https://github.com/jclouds/jclouds/blob/enforce-tls/drivers/apachehc/src/main/java/org/jclouds/http/apachehc/config/ApacheHCHttpCommandExecutorServiceModule.java#L114-L119

Reply via email to