Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Exception 'Couldn't resolve the following domains to an IPv4 record' when creating certificate for many domains #33

Closed
PalleZ opened this issue Jun 27, 2016 · 6 comments
Labels

Comments

@PalleZ
Copy link

PalleZ commented Jun 27, 2016

When trying to create a certificate (using auto command) with more than 48 domains I get error message as below. If I comment out one domain so I have 48 it works.
I'm not sure the limit is exactly 48 domains but somewhere close to it. It seems I get different results on number of domains depending on which I have in my file so maybe it is a line length limitation issue (?).
Acme-Client 0.2.8, PHP 5.6, Centos 6.5, bash

Error message and stack trace:

Issuance for the following domains failed: site1.example.com,site2.example.com,...,site49.example.com
Reason: exception 'Kelunik\Acme\AcmeException' with message 'Unexpected exit code (1) for ''/usr/bin/php' './acme-client.phar' 'issue' '--server' 'letsencrypt' '--storage' '/etc/acme' '--domains' 'site1.example.com,site2.example.com,...,site49.example.com' '--path' '/www/site1/htdocs:/www/site1/htdocs:...:/www/site49/htdocs''.
exception 'Kelunik\Acme\AcmeException' with message 'Couldn't resolve the following domains to an IPv4 record: site1.example.com' in phar:///www/prod/external/lib/acme-client/acme-client.phar/src/Commands/Issue.php:181

' in phar:///www/prod/external/lib/acme-client/acme-client.phar/src/Commands/Auto.php:215
Stack trace:
#0 [internal function]: Kelunik\AcmeClient\Commands\Auto::checkAndIssue(Array, 'letsencrypt', '/etc/acme')
#1 phar:///www/prod/external/lib/acme-client/acme-client.phar/vendor/amphp/amp/lib/functions.php(876): Generator->send(Object(stdClass))
#2 [internal function]: Amp__coroutineSend(NULL, Object(stdClass), Object(Amp\CoroutineState))
#3 phar:///www/prod/external/lib/acme-client/acme-client.phar/vendor/amphp/amp/lib/Placeholder.php(91): call_user_func('Amp__coroutine...', NULL, Object(stdClass), Object(Amp\CoroutineState))
#4 phar:///www/prod/external/lib/acme-client/acme-client.phar/vendor/amphp/amp/lib/PrivatePromisor.php(20): Amp\PrivatePlaceholder->resolve(NULL, Object(stdClass))
#5 [internal function]: Amp\PrivatePlaceholder->Amp{closure}(NULL, Object(stdClass))
#6 phar:///www/prod/external/lib/acme-client/acme-client.phar/vendor/amphp/amp/lib/PrivatePromisor.php(57): call_user_func(Object(Closure), NULL, Object(stdClass))
#7 phar:///www/prod/external/lib/acme-client/acme-client.phar/vendor/amphp/process/Process.php(102): Amp\Deferred->succeed(Object(stdClass))
#8 [internal function]: Amp\Process->Amp{closure}('00000000007fbd7...', NULL)
#9 phar:///www/prod/external/lib/acme-client/acme-client.phar/vendor/amphp/amp/lib/NativeReactor.php(100): call_user_func(Object(Closure), '00000000007fbd7...', NULL)
#10 phar:///www/prod/external/lib/acme-client/acme-client.phar/vendor/amphp/amp/lib/NativeReactor.php(172): Amp\NativeReactor->tryImmediate(Object(stdClass))
#11 phar:///www/prod/external/lib/acme-client/acme-client.phar/vendor/amphp/amp/lib/NativeReactor.php(71): Amp\NativeReactor->doTick(false)
#12 phar:///www/prod/external/lib/acme-client/acme-client.phar/vendor/amphp/amp/lib/functions.php(46): Amp\NativeReactor->run(Object(Closure))
#13 phar:///www/prod/external/lib/acme-client/acme-client.phar/bin/acme(165): Amp\run(Object(Closure))
#14 /www/prod/external/lib/acme-client/acme-client.phar(2): include('phar:///www/pro...')
#15 {main}

@kelunik
Copy link
Owner

kelunik commented Jun 28, 2016

Does it always fail for the same domain? If so, does that domain work when using issue manually?

@kelunik
Copy link
Owner

kelunik commented Jun 28, 2016

Wait, this is about a single certificate, not multiple ones.

Could you please test with the latest master? I adjusted to the code to use chunks of 10 authorization requests and not do all domains at once.

You can build a PHAR from master using composer install && vendor/bin/phar-builder package. The PHAR will be located in build/acme-client.phar and already be executable.

@kelunik kelunik added the bug label Jun 28, 2016
@PalleZ
Copy link
Author

PalleZ commented Jun 28, 2016

Tried latest master (using git clone) but no change, see below. I looked at your code change and I'm not sure that I understand it but I think that you have changed to late in code. I think it is in checkDnsRecords that the fault occurs and it is called on line 51 in Issue.php. If this is a line length limitation issue I guess the problem will be when calling issue from Auto.php and then chunking needs to be in auto which will not work (I guess that worst case this has to be solved by having an "internal call" to issue instead of creating a command line call).

Error message and stack trace:

exception 'Kelunik\Acme\AcmeException' with message 'Couldn't resolve the following domains to an IPv4 record: site1.example.com' in phar:///www/prod/external/lib/acme-client/dev2/acme-client/build/acme-client.phar/src/Commands/Issue.php:189

' in phar:///www/prod/external/lib/acme-client/dev2/acme-client/build/acme-client.phar/src/Commands/Auto.php:215
Stack trace:
#0 [internal function]: Kelunik\AcmeClient\Commands\Auto::checkAndIssue(Array, 'letsencrypt:sta...', '/etc/acmetest')
#1 phar:///www/prod/external/lib/acme-client/dev2/acme-client/build/acme-client.phar/vendor/amphp/amp/lib/functions.php(876): Generator->send(Object(stdClass))
#2 [internal function]: Amp__coroutineSend(NULL, Object(stdClass), Object(Amp\CoroutineState))
#3 phar:///www/prod/external/lib/acme-client/dev2/acme-client/build/acme-client.phar/vendor/amphp/amp/lib/Placeholder.php(91): call_user_func('Amp__coroutine...', NULL, Object(stdClass), Object(Amp\CoroutineState))
#4 phar:///www/prod/external/lib/acme-client/dev2/acme-client/build/acme-client.phar/vendor/amphp/amp/lib/PrivatePromisor.php(20): Amp\PrivatePlaceholder->resolve(NULL, Object(stdClass))
#5 [internal function]: Amp\PrivatePlaceholder->Amp{closure}(NULL, Object(stdClass))
#6 phar:///www/prod/external/lib/acme-client/dev2/acme-client/build/acme-client.phar/vendor/amphp/amp/lib/PrivatePromisor.php(57): call_user_func(Object(Closure), NULL, Object(stdClass))
#7 phar:///www/prod/external/lib/acme-client/dev2/acme-client/build/acme-client.phar/vendor/amphp/process/Process.php(102): Amp\Deferred->succeed(Object(stdClass))
#8 [internal function]: Amp\Process->Amp{closure}('00000000209302b...', NULL)
#9 phar:///www/prod/external/lib/acme-client/dev2/acme-client/build/acme-client.phar/vendor/amphp/amp/lib/NativeReactor.php(100): call_user_func(Object(Closure), '00000000209302b...', NULL)
#10 phar:///www/prod/external/lib/acme-client/dev2/acme-client/build/acme-client.phar/vendor/amphp/amp/lib/NativeReactor.php(172): Amp\NativeReactor->tryImmediate(Object(stdClass))
#11 phar:///www/prod/external/lib/acme-client/dev2/acme-client/build/acme-client.phar/vendor/amphp/amp/lib/NativeReactor.php(71): Amp\NativeReactor->doTick(false)
#12 phar:///www/prod/external/lib/acme-client/dev2/acme-client/build/acme-client.phar/vendor/amphp/amp/lib/functions.php(46): Amp\NativeReactor->run(Object(Closure))
#13 phar:///www/prod/external/lib/acme-client/dev2/acme-client/build/acme-client.phar/bin/acme(165): Amp\run(Object(Closure))
#14 /www/prod/external/lib/acme-client/dev2/acme-client/build/acme-client.phar(2): include('phar:///www/pro...')
#15 {main}

@kelunik
Copy link
Owner

kelunik commented Jun 28, 2016

Oh, you're right, the DNS lookup is even before the solveChallenge call, thought it was in there. Added chunking to the DNS lookup as well, does that change anything?

@PalleZ
Copy link
Author

PalleZ commented Jun 28, 2016

Working for my 98 domains, excellent. Thanks for quick fix and good that it was easier to solve than I feared.

@kelunik
Copy link
Owner

kelunik commented Jul 13, 2016

I fixed it in master but forgot to release a bugfix version. Here it is: https://github.com/kelunik/acme-client/releases/tag/v0.2.9

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants