Hi Christopher
> Le 28 juil. 2017 à 11:08, Christopher Faulet <[email protected]> a écrit :
>
> Le 27/07/2017 à 18:16, Emmanuel Hocdet a écrit :
>> Hi Willy, Emeric
>> Can you consider this patch? I think it’s safe and it not depend on any
>> openssl version.
>> (It’s possible since patch f6b37c67)
>
> Hi Manu,
>
> Since this commit, the certificates generation doesn't work anymore. I'm
> working on a patch. I'll send it today I guess.
>
> To work, the certificates generation uses the default certificate, to get its
> private key. It uses it for the generated certificates. Generate keys is
> pretty expensive and the one from the default certificate is not worse than
> another.
>
> Since commit f6b37c67, when certificates generation is performed, instead of
> the default certificate (default_ctx), the SSL connection is attached to the
> initial one (initial_ctx). The last one does not have private key, so the
> generation always fails.
>
Oh i remember now. I have discarded the split between initial_ctx and
default_ctx to not touch any dependancy with generate certificat.
And introduce it finally in f6b37c67 to fix a bug.
The only dependancy to default_ctx is the private key?
> My first idea to fix the patch was to remove the initial_ctx. Because by
> checking all recent changes, it seems useless. Its initialization is done in
> the same time than default_ctx (that was not the case when initial_ctx was
> introduced in commit f6b37c67).
>
> But it is definitely in conflict with you current patch. Because without
> initial_ctx, we need to have a default_ctx. So I can probably work around
> this problem. But before doing it, I prefer to know if your patch will be
> accepted or not :)
Private key is the only missing thing for generate certificat?
such patch can fix the issue?
diff --git a/src/ssl_sock.c b/src/ssl_sock.c
index c71c2e3..00ebb80 100644
--- a/src/ssl_sock.c
+++ b/src/ssl_sock.c
@@ -4328,6 +4328,12 @@ int ssl_sock_prepare_all_ctx(struct bind_conf *bind_conf)
err += ssl_sock_prepare_ctx(bind_conf, sni->conf,
sni->ctx);
node = ebmb_next(node);
}
+
+#ifndef SSL_NO_GENERATE_CERTIFICATES
+ if (bind_conf->default_ctx) {
+ SSL_CTX_use_PrivateKey(bind_conf->initial_ctx,
SSL_CTX_get0_privatekey(bind_conf->default_ctx));
+ } /* else generate error */
+#endif
return err;
}
> From my point of view, I can't see why anyone would want to start a SSL
> frontend without any certificate. Because it will reject all connections.
> Simos explained his use-case with Letsencrypt. But it is only useful for the
> first generation of the first certificate. It is easy to comment the SSL
> frontend at this step. Get a certificate from Letsencrypt or generate a
> default one by hand is quick and trivial. To automate this part, you can have
> a default certificate, probably self-signed, and the strict-sni parameter on
> the bind line (You already proposed this solution). For me, this is not a
> workaround, this is the way to do it. But that's just my opinion, I can
> understand the need :) So I'll let Willy and/or Emeric make the final
> decision.
A useless certificat should be provide with haproxy configuration?, it’s
definitely a workaround. It’s legacy from pre SNI.
++
Manu