/** * @inheritDoc */ public function generateCsr($fqdn, array $altNames = array()) { $keys = $this->generateRsaKey(2048); $privKey = $this->getRsa(); $privKey->loadKey($keys['privatekey']); $x509 = new X509(); $x509->setPrivateKey($privKey); $x509->setDNProp('commonName', $fqdn); $x509->loadCSR($x509->saveCSR($x509->signCSR())); array_unshift($altNames, $fqdn); $SAN = array(); foreach ($altNames as $dnsName) { $SAN[] = array('dNSName' => $dnsName); } // Set extension request. $x509->setExtension('id-ce-subjectAltName', $SAN); $pem = $x509->signCSR('sha256WithRSAEncryption'); return $x509->saveCSR($pem, X509::FORMAT_DER); }