Example #1
0
 /**
  * Request a new certificate for the given configuration.
  *
  * @param DomainConfiguration $configuration
  *
  * @return Certificate
  */
 public function requestCertificate(DomainConfiguration $configuration)
 {
     $domains = array_merge([$configuration->getDomain()], (array) $configuration->getCSR()->getSubjectAlternativeNames());
     $challengedDomains = [];
     if ($this->certificateRepository->hasCertificate($configuration)) {
         $metadata = $this->certificateRepository->loadCertificate($configuration);
         $challengedDomains = array_merge([$configuration->getDomain()], $metadata->getSubjectAlternativeNames());
     }
     $unchallengedDomains = array_values(array_diff($domains, $challengedDomains));
     if (count($unchallengedDomains)) {
         $this->challenger->challengeDomains($unchallengedDomains);
     }
     $domain = $configuration->getDomain();
     $domainKeyPair = $this->keyPairFactory->createKeyPairProvider($domain)->getOrCreateKeyPair();
     $certificate = $this->client->requestCertificate($domain, $domainKeyPair, $configuration->getCSR());
     $this->dispatcher->dispatch(AcmePhpBundleEvents::CERTIFICATE_REQUESTED, new CertificateEvent($configuration, $certificate, $domainKeyPair));
     $this->logger->notice('Certificate for domain {domain} requested', ['domain' => $configuration->getDomain()]);
     return $certificate;
 }
 /**
  * Return certificate's data.
  *
  * @param DomainConfiguration $configuration
  *
  * @return CertificateMetadata
  */
 public function loadCertificate(DomainConfiguration $configuration)
 {
     $storage = $this->storageFactory->createCertificateStorage($configuration->getDomain());
     return $this->certificateParser->parse($storage->loadCertificateFile($this->certificateFormatter->getName()));
 }