lets-encryptacme

A non-ACME 400 HTTP error occured on request


Trying to integrate the acmephp library into my project, but I keep getting this error when I attempt to request authorization for a domain

A non-ACME 400 HTTP error occured on request "POST https://acme-v02.api.letsencrypt.org/acme/new-order" (response body: "(truncated...)")

Here's the client initialization code

public function registerWebsite()
{
    try {
        $secureHttpClientFactory = new SecureHttpClientFactory(
            new GuzzleHttpClient(),
            new Base64SafeEncoder(),
            new KeyParser(),
            new DataSigner(),
            new ServerErrorHandler()
        );

        $acmeKeyPath = storage_path('acme-keys');
        if (!file_exists($acmeKeyPath)) {
            mkdir($acmeKeyPath, 0700, true);
        }

        $publicKeyPath = $acmeKeyPath . '/account.pub.pem';
        $privateKeyPath = $acmeKeyPath . '/account.pem';

        if (!file_exists($privateKeyPath)) {
            $keyPairGenerator = new KeyPairGenerator();
            $keyPair = $keyPairGenerator->generateKeyPair();

            file_put_contents($publicKeyPath, $keyPair->getPublicKey()->getPEM());
            file_put_contents($privateKeyPath, $keyPair->getPrivateKey()->getPEM());
        } else {
            $publicKey = new PublicKey(file_get_contents($publicKeyPath));
            $privateKey = new PrivateKey(file_get_contents($privateKeyPath));

            $keyPair = new KeyPair($publicKey, $privateKey);
        }

        $secureHttpClient = $secureHttpClientFactory->createSecureHttpClient($keyPair);
        $acmeClient = new AcmeClient($secureHttpClient, 'https://acme-staging-v02.api.letsencrypt.org/directory');
        $registerResponse = $acmeClient->registerAccount(null, 'kaladakienka@gmail.com');
        $authorizationChallenges = $acmeClient->requestAuthorization('http://ssl-ops-staging.thehuddle.nl/');
        dd($authorizationChallenges);
    } catch (\Exception $ex) {
        dd($ex->getMessage());
    }
}

Solution

  • Figured this out.

    $acmeClient->requestAuthorization('http://ssl-ops-staging.thehuddle.nl/') 
    

    should be

    $acmeClient->requestAuthorization('ssl-ops-staging.thehuddle.nl');