In certman itself it combines the X3 cert back into any lets encrypt certificate: certman/Certman.class.php at release/14.0 · FreePBX/certman · GitHub. I would say it’s probably a good idea to look at this area of the code in general as this may be what is causing the issues.
FREEPBX-14631 was created by @matthias1232 to specifically address missing X3 certificates on Yealink phones. Sooooooooo I dunno! Used to work! But removing it from the code above and seeing if it works in 14 would be a good step
I wanted to open this thread back up because the issue still exists with FreePBX 15 and I think it is only possibly related to the thread that we were discussing it again.
If they’re not a 2048 key size, best to delete and start over. To make 100% sure nothing gets picked up from any straggling config, use a new hostname.
I looked at the actual CSR’s generated by both and there are some other differences.
If a fresh cert with these changes doesn’t fix, I’ll start hacking to make the CSRs match as a debugging process. I’d like to know exactly what the problem is. I don’t see Sangoma actually making changes to Lescript.php. However, if they accept my acme.sh version of the module, I can make sure it has appropriate options to make it work.
Good to know - acme.sh already defaults to a 2kbit key.
I had considered whether I should use 4kbit as the module’s default to maintain consistency with the current module (even if I don’t think there is much value in 4k over 2k)… With this confirmed, I will make 2k the revised module’s default.
And just a summary for anyone that doesn’t read the entire thread, as far as I can tell, FreePBX 13 used the 4k key, and everything worked fine.
At the time of the OP (3.5 years ago now), I had both a FreepBX 13 VM and a FreePBX 14 VM setup for testing.
Using the built in lescript process worked for FreepBX 13 (CentOS 6) and not on FreePBX 14 (Sangoma 7).
I gave up looking and @tonyclewis obviously didn’t care.
I just assumed that it had to be something in openssl and worked around it by using certbot and manually moving my cert in with a posthook.
There have been some updates to the Lescript.php library along the way, but from a quick glance at the source, they were always using 4096bit private keys.
The process is pretty simple - generate a key, generate CSR, send to LE, get a cert back. The only “altering” FreePBX does to the LE cert is appending the cross signed to the chain file. The only thing that seems relevant in the current CSR is the key size. From a quick review of the commits, nothing jumps out as a relevant change to the CSR. Maybe the move from acmev1 to acmev2 protocol in Nov 2019?
I’d be curious to know where the fault is/was, but can’t take the time to look that far back if we have a solution to move forward.