> Am 03.03.2021 um 11:36 schrieb Ruediger Pluem <rpl...@apache.org>:
> 
> 
> 
> On 3/3/21 11:25 AM, Stefan Eissing wrote:
>> 
>> 
>>> Am 03.03.2021 um 11:17 schrieb Ruediger Pluem <rpl...@apache.org>:
>>> 
>>> 
>>> 
>>> On 3/3/21 11:01 AM, Stefan Eissing wrote:
>>>> 
>>>> 
>>>>> Am 03.03.2021 um 10:44 schrieb Stefan Eissing 
>>>>> <stefan.eiss...@greenbytes.de>:
>>>>> 
>>>>> 
>>>>> 
>>>>>> Am 03.03.2021 um 10:31 schrieb Ruediger Pluem <rpl...@apache.org>:
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> On 3/3/21 9:54 AM, Stefan Eissing wrote:
>>>>>>>> Am 03.03.2021 um 09:35 schrieb Stefan Eissing 
>>>>>>>> <stefan.eiss...@greenbytes.de>:
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>>> Am 02.03.2021 um 20:54 schrieb Ruediger Pluem <rpl...@apache.org>:
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
> 
>>>> typedef struct ap_bytes ap_bytes;
>>>> struct {
>>>> const char *data;
>>>> apr_size_t len;
>>>> } ap_bytes;
>>>> 
>>>> AP_DECLARE(int) ap_ssl_answer_challenge(conn_rec *c, const char 
>>>> *server_name, const ap_bytes **pcertificate_key_pem);
>>> 
>>> Crossing posts :-). Quick questions:
>>> 
>>> 1. What is the need for the len field above? I think PEM encoded data could 
>>> be nul terminated. Or do you want to leave an option
>>>  for DER data?
>> 
>> I have been in too much contact with languages that do not NUL-terminate 
>> strings, it seems. We could just make it a "const char **" then. 
>> 
>> I do not like to define something generic parameters where the additionals 
>> use cases are unclear and may never happen. So, no DER foreseen by me. I 
>> think for the amount of data that is passed with keys/certificates, a PEM 
>> encoding is the most portable and should work fine.
> 
> PEM seems to be a good choice and having a clear interface as well. Hence +1 
> to PEM only.
> 
>> 
>>> 2. As there is only one ap_bytes ** above, do you want to merge the PEM 
>>> encoded certificate and key in one string?
>> 
>> That was the thought. When I started with mod_md, I kept them separate 
>> because everyone else seem to be doing it. But I do not really see any 
>> benefit in that, really. But then, I am ignorant of a lot of things, I found 
>> in life...
> 
> I think having them together is fine, the only question is if this makes it 
> harder to use for others if they keep them separate.
> 
> Regards
> 
> RĂ¼diger

I am currently considering changing 'add_cert_files' and 
'add_fallback_cert_files' as well to providing PEM strings. This, I found out, 
impacts ssl_init_server_certs() quite somewhat. But maybe to the better.

There is this thing "mctx->cert_chain" that, when configured, changes the 
loading of chain from file to loading just a single cert from a file. I 
understand the history, but I think this should never influence how "added" 
certificates are loaded. They should always contain their chain.

Which means we should have a "ssl_ctx_use_certificate(ssl_ctx, const char 
*cert_pem, const char *key_pem)" and a corresponding one for SSL*. These would 
read the PEM in a mem BIO and
- on the 1st cert use SSL_CTX_use_certificate(ctx, x); 
- SSL_CTX_clear_chain_certs(ctx)
- and on subsequent certs SSL_CTX_add0_chain_cert(ctx, x)

Yikes, down the rabbit hole...

Did I get this right?

- Stefan


Reply via email to