AcmePhp\Cli\Repository\Repository::storeDomainCertificate PHP Method

storeDomainCertificate() public method

public storeDomainCertificate ( $domain, Certificate $certificate )
$certificate AcmePhp\Ssl\Certificate
    public function storeDomainCertificate($domain, Certificate $certificate)
    {
        // Simple certificate
        $certPem = $this->serializer->serialize($certificate, PemEncoder::FORMAT);
        // Issuer chain
        $issuerChain = [];
        $issuerCertificate = $certificate->getIssuerCertificate();
        while (null !== $issuerCertificate) {
            $issuerChain[] = $this->serializer->serialize($issuerCertificate, PemEncoder::FORMAT);
            $issuerCertificate = $issuerCertificate->getIssuerCertificate();
        }
        $chainPem = implode("\n", $issuerChain);
        // Full chain
        $fullChainPem = $certPem . $chainPem;
        // Combined
        $keyPair = $this->loadDomainKeyPair($domain);
        $combinedPem = $fullChainPem . $this->serializer->serialize($keyPair->getPrivateKey(), PemEncoder::FORMAT);
        // Save
        $this->save('certs/' . $domain . '/cert.pem', $certPem);
        $this->save('certs/' . $domain . '/chain.pem', $chainPem);
        $this->save('certs/' . $domain . '/fullchain.pem', $fullChainPem);
        $this->save('certs/' . $domain . '/combined.pem', $combinedPem);
    }

Usage Example

 public function testLoadDomainCertificate()
 {
     $cert = new Certificate(self::$certPem, new Certificate(self::$issuerCertPem));
     $this->assertFalse($this->repository->hasDomainCertificate('example.com'));
     $this->repository->storeDomainKeyPair('example.com', new KeyPair(new PublicKey('public'), new PrivateKey('private')));
     $this->repository->storeDomainCertificate('example.com', $cert);
     $this->assertTrue($this->repository->hasDomainCertificate('example.com'));
     $this->assertEquals($cert, $this->repository->loadDomainCertificate('example.com'));
 }