For completeness, I note that it appears the internal intermediate CA (when established) cannot issue internal certificates
It is my understanding that it remains best practice to install intermediate CA certificates that form part of a certificate chain to internal services. Just to be clear, I'm not suggesting that intermediate CA certs should be imported for say external websites.
These certificates should normally form part of the Certificates message but in my experience that isn't always implemented.
I had suggested that any Intermediate CA should be imported into System: Trust: Certificates
QuoteI had suggested that any Intermediate CA should be imported into System: Trust: Certificates maybe I'm missing something. how should the system use intermediate certificates placed there (assuming that this would be possible)?
Regarding the internal intermediate CA: I was just saying that it cannot issue certificates via the GUI. Just for completeness, it really has no bearing on the discussion.
I was just saying that it cannot issue certificates via the GUI.
it looks like you have identified an issue with curl trusting intermediate certs. Would it be fair to say that a bug report would likely take some time to resolve (if ever)...?
How would OPNsense build the chain? Would each server certificate have concatenated certificates containing the intermediate CA certs? Or would OPNsense build each chain as necessary from it's trusted store...? Can anyone see the advantage(s) of the latter?
Is OPNsense capable of performing such reverse proxy features?
I noticed that certs placed in this store specify whether or not they are a CA. If this exposed some capacity to verify certificate chains, then I was thinking it might have been of use. I'm not sure why this info is displayed. I would have thought all CA certs should be in the Authorities store.
I note it appears that OPNsense does not download published CRLs for imported CAs but provides an import data field for X509 CRL data
There was a bug with PHP/LibreSSL caused by a bad update of PHP itself where CSR wasn't working, which is used internally for issuing a certificate/CA.
in my understanding, this is not so much a curl bug as a flaw in the LE certs: curl uses the partial_chain openssl flag (it would be great if they documented it well, but who loves to mess around with the docs)). And imho if LE leaf (end-objects) certs contained all the fields in the authorityKeyIdentifier extension, then this would not happen, because openssl checks all extension fields to make sure the certificates match.I mainly cited this as an example of possible unpredictability as a result of adding intermediate certificates to the store
afaik chains for services on OPNsense are based on config (not on trust storage)...
I thought that this page only displays information from the cert itself (say "CA: No, Server: Yes")
Quote I note it appears that OPNsense does not download published CRLs for imported CAs but provides an import data field for X509 CRL dataI did not digg into this part, but I do not think that this is somehow used to change the normal operation of crl check, but is probably used to work internal services with internal CAs (for example, for the OpenVPN operations
I also note @franco's comments on GitHub around the ordering of certs in the store which I found interesting too.
could the version of curl used in OPNsense be compiled without that support? Would that solve this problem?
It would be good to get a definitive answer on this. I presume it would also be plugin specific too.
but I wondered why, what is the benefit?
I think this is potentially a significant problem. OPNsense should really be checking CRLs at the distribution points specified in each CA certificate.
I think it was @fraenki ) And yes, yet another example of unpredictability: order matters.
Quotecould the version of curl used in OPNsense be compiled without that support? Would that solve this problem?afaik latest versions of curl have an option to disable this flag. but this does not change the fact: applications can use intermediate certificates in the store differently
technically yes. but it is very conveniently implemented in core and imho the devs will insist on forming chains in this way. the plugins mentioned do it in the manner indicated.
to quickly understand the purpose of the imported certificate? (an administrator might accidentally import a non-server or CA certificate)
QuoteI think this is potentially a significant problem. OPNsense should really be checking CRLs at the distribution points specified in each CA certificate.as far as i could find in the code, this is only used in openvpn with internal CA. and certainly does not affect the behavior of client apps in any way
As the certificate is imported in PEM format and not DER, doesn't that mean that CRL distribution points are not imported (or acted on).