| 
<?php
 // A very simple helper script used to generate self-signed certificates.
 // Accepts the CN and an optional passphrase to encrypt the private key.
 //
 // $ php examples/99-generate-self-signed.php localhost my-secret-passphrase > secret.pem
 
 // certificate details (Distinguished Name)
 // (OpenSSL applies defaults to missing fields)
 $dn = array(
 "commonName" => isset($argv[1]) ? $argv[1] : "localhost",
 //     "countryName" => "AU",
 //     "stateOrProvinceName" => "Some-State",
 //     "localityName" => "London",
 //     "organizationName" => "Internet Widgits Pty Ltd",
 //     "organizationalUnitName" => "R&D",
 //     "emailAddress" => "[email protected]"
 );
 
 // create certificate which is valid for ~10 years
 $privkey = openssl_pkey_new();
 $cert = openssl_csr_new($dn, $privkey);
 $cert = openssl_csr_sign($cert, null, $privkey, 3650);
 
 // export public and (optionally encrypted) private key in PEM format
 openssl_x509_export($cert, $out);
 echo $out;
 
 $passphrase = isset($argv[2]) ? $argv[2] : null;
 openssl_pkey_export($privkey, $out, $passphrase);
 echo $out;
 
 |