Certificate generation error

anyone seen something like this before - was trying to generate a Let’s Encrypt certificate

There was an error updating the certificate: array_reduce() expects parameter 1 to be array, null given

Need the full error on this.

i am happy to provide more detail - just let me know what you need. the error i reported was what is displayed in the GUI when attempting to make a Let’s Encrypt certificate request. the appropriate entries have been made in the firewall.

here is what is in the certificate request - i have blanked out the host name but it is a valid host name.

and here is what comes back

Take the apostrophe out of the description

two things:

  1. removing the apostrophe did not change the error - i still get the same error
  2. i have used the apostrophe in many other certificate descriptions without a problem.

are there some log files or some traces i can do to get to the bottom of this?

i have figured out what causes it, now i just need a bit of help in fixing it.

if you attempt to request a certificate without updating the firewall first to include the additional url’s, the certificate request reports the error Cannot connect. if you then update the firewall and attempt to generate the certificate you get the error i reported.

The error comes from the upstream library we are using. It seems as though the Let’s Encrypt servers do not like your configuration. Basically the response from Let’s Encrypt has no challenges, or is invalid as if there is some device mangling the returned response on your network.

a bit more data. it appears that if the pbx is on the same public subnet as another pbx that has successfully pulled a certificate then i get the error. is there a different kind of certificate we need that we can load into all the systems on the same subnet?

Wait so you are trying to put the same domain base certificate on two servers?

That won’t fly with lets encrypt.

it works as long as the ip address resolves to a different subnet. so i assume what we should do is get some sort of san certificate and upload it into each pbx?

Yes that’s what you should probably do. They are free from start ssl

here are two answers i got from let’s encrypt

The error message you describe “There was an error updating the certificate: array_reduce() expects parameter 1 to be array, null given” seems to come from FreePBX, not Let’s Encrypt, and so they’re best placed to help directly, but volunteers like me would be happy to try to help their development team if they bring questions here too of course.

In regards to using one certificate on multiple servers in essence there’s no difference between Let’s Encrypt or StartSSL (when not a wildcard certificate). Just make sure all the required hostnames are in the SubjectAltNames field of the certificate.

Actually not. As I said before the error comes from upstream but not freepbx. I also did not say it came from let’s encrypt. What I did say was that let’s encrypt was returning a null response. Eg there is no challenge. I also pointed you to the code in our repo from upstream above. I suggest you take a look at it.

Yes there is a difference. There is a rate limit of requesting certificates. Once you reach that limit then you’ll get errors. Unfortunately we do not support multiple domains at this time. What you want is the same certificate on multiple machines. Our implementation of let’s encrypt does not allow that. Sorry. You’d be better going with startssl

I read your post over at https://community.letsencrypt.org/t/certificate-requests-for-systems-on-the-same-subnet-fail/18685

I wish that you had clarified your network topology here like you did over there. Our implementation of Let’s Encrypt should have no problems with this. However, Let’s Encrypt is returning a null response. If you like you can open a ticket with support (OUR support). Reference me. They will assign it to me and it will be free. I will figure the issue out for you.

will do, i thought i did explain the network topology (same subnet) but perhaps i was more verbose on their site. i will open a ticket shortly. thanks

I just created the issue - 12891 - i appreciate the help

Please open a ticket through support. Issues is not support and I have no way to get onto your system through issues.

done, ticket number 590463. i updated the pbx info in the portal. i think all i need is the ip address(es) where you will be coming in from so i can white list them.