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); }
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')); }