<?php
// Example CommonName
$commonname="example.org";
$keysize = 2048;
$keysize = 4096;
$days = 365;
$days = 1825;
// openssl conf
$ssl = array(
'private_key_bits' => (int)$keysize,
'private_key_type' => 'OPENSSL_KEYTYPE_RSA',
'digest_alg' => 'sha256',
);
$alg = array(
'digest_alg' => 'sha256',
);
$sslcnf = array(
'countryName' => 'GR',
'stateOrProvinceName' => 'Attica',
'localityName' => 'Athens',
'organizationName' => 'Example Ltd',
'organizationalUnitName' => 'The Web',
'emailAddress' => 'postmaster@example.org',
'commonName' => $commonname,
);
// Generates a new private key - return is a resource
$private_key = openssl_pkey_new($ssl);
// Gets an exportable representation of a key into a string
// privkey: is the text output of resource: private_key
openssl_pkey_export($private_key, $privkey);
// Generate a certificate signing request
$csr = openssl_csr_new($sslcnf, $private_key);
// Self-Signed
$req = openssl_csr_sign($csr, NULL, $private_key, $days, $alg);
// Exports a certificate as a string
openssl_x509_export($req, $x509);
// Generate a certificate signing request
$ret = array(
'privkey' => $privkey,
'cert' => $x509,
);
echo json_encode($ret);
?>