diff --git a/mnet/lib.php b/mnet/lib.php index 276ace1c21c..194808c58d0 100644 --- a/mnet/lib.php +++ b/mnet/lib.php @@ -386,14 +386,22 @@ function mnet_generate_keypair($dn = null, $days=28) { // ensure we remove trailing slashes $dn["commonName"] = preg_replace(':/$:', '', $dn["commonName"]); - - $new_key = openssl_pkey_new(); + if (!empty($CFG->opensslcnf)) { //allow specification of openssl.cnf especially for Windows installs + $new_key = openssl_pkey_new(array("config" => $CFG->opensslcnf)); + } else { + $new_key = openssl_pkey_new(); + } if ($new_key === false) { // can not generate keys - missing openssl.cnf?? return null; } - $csr_rsc = openssl_csr_new($dn, $new_key, array('private_key_bits',2048)); - $selfSignedCert = openssl_csr_sign($csr_rsc, null, $new_key, $days); + if (!empty($CFG->opensslcnf)) { //allow specification of openssl.cnf especially for Windows installs + $csr_rsc = openssl_csr_new($dn, $new_key, array("config" => $CFG->opensslcnf)); + $selfSignedCert = openssl_csr_sign($csr_rsc, null, $new_key, $days, array("config" => $CFG->opensslcnf)); + } else { + $csr_rsc = openssl_csr_new($dn, $new_key, array('private_key_bits',2048)); + $selfSignedCert = openssl_csr_sign($csr_rsc, null, $new_key, $days); + } unset($csr_rsc); // Free up the resource // We export our self-signed certificate to a string. @@ -402,7 +410,11 @@ function mnet_generate_keypair($dn = null, $days=28) { // Export your public/private key pair as a PEM encoded string. You // can protect it with an optional passphrase if you wish. - $export = openssl_pkey_export($new_key, $keypair['keypair_PEM'] /* , $passphrase */); + if (!empty($CFG->opensslcnf)) { //allow specification of openssl.cnf especially for Windows installs + $export = openssl_pkey_export($new_key, $keypair['keypair_PEM'], null, array("config" => $CFG->opensslcnf)); + } else { + $export = openssl_pkey_export($new_key, $keypair['keypair_PEM'] /* , $passphrase */); + } openssl_pkey_free($new_key); unset($new_key); // Free up the resource