"Import an existing Certificate Authority", "internal" => "Create an internal Certificate Authority"); $ca_keylens = array( "512", "1024", "2048", "4096"); $pgtitle = array("System", "Certificate Authority Manager"); $id = $_GET['id']; if (isset($_POST['id'])) $id = $_POST['id']; if (!is_array($config['system']['ca'])) $config['system']['ca'] = array(); $a_ca =& $config['system']['ca']; if (!is_array($config['system']['cert'])) $config['system']['cert'] = array(); $a_cert =& $config['system']['cert']; $act = $_GET['act']; if ($_POST['act']) $act = $_POST['act']; if ($act == "del") { if (!$a_ca[$id]) { pfSenseHeader("system_camanager.php"); exit; } $index = count($a_cert) - 1; for (;$index >=0; $index--) if ($a_cert[$index]['caref'] == $a_ca[$id]['refid']) unset($a_cert[$index]); $name = $a_ca[$id]['name']; unset($a_ca[$id]); write_config(); $savemsg = gettext("Certificate Authority")." {$name} ". gettext("successfully deleted")."
"; } if ($act == "new") { $pconfig['method'] = $_GET['method']; $pconfig['keylen'] = "2048"; $pconfig['lifetime'] = "365"; $pconfig['dn_commonname'] = "internal-ca"; } if ($act == "exp") { if (!$a_ca[$id]) { pfSenseHeader("system_camanager.php"); exit; } $exp_name = urlencode("{$a_ca[$id]['name']}.crt"); $exp_data = base64_decode($a_ca[$id]['crt']); $exp_size = strlen($exp_data); header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename={$exp_name}"); header("Content-Length: $exp_size"); echo $exp_data; exit; } if ($_POST) { unset($input_errors); $pconfig = $_POST; /* input validation */ if ($pconfig['method'] == "existing") { $reqdfields = explode(" ", "name cert"); $reqdfieldsn = explode(",", "Desriptive name,Certificate data"); } if ($pconfig['method'] == "internal") { $reqdfields = explode(" ", "name keylen lifetime dn_country dn_state dn_city ". "dn_organization dn_email dn_commonname"); $reqdfieldsn = explode(",", "Desriptive name,Key length,Lifetime,". "Distinguished name Country Code,". "Distinguished name State or Province,". "Distinguished name City,". "Distinguished name Organization,". "Distinguished name Email Address,". "Distinguished name Common Name"); } do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors); /* if this is an AJAX caller then handle via JSON */ if (isAjax() && is_array($input_errors)) { input_errors2Ajax($input_errors); exit; } /* save modifications */ if (!$input_errors) { $ca = array(); $ca['refid'] = uniqid(); if (isset($id) && $a_ca[$id]) $ca = $a_ca[$id]; $ca['name'] = $pconfig['name']; if ($pconfig['method'] == "existing") ca_import($ca, $pconfig['cert']); if ($pconfig['method'] == "internal") { $dn = array( 'countryName' => $pconfig['dn_country'], 'stateOrProvinceName' => $pconfig['dn_state'], 'localityName' => $pconfig['dn_city'], 'organizationName' => $pconfig['dn_organization'], 'emailAddress' => $pconfig['dn_email'], 'commonName' => $pconfig['dn_commonname']); ca_create($ca, $pconfig['keylen'], $pconfig['lifetime'], $dn); } if (isset($id) && $a_ca[$id]) $a_ca[$id] = $ca; else $a_ca[] = $ca; write_config(); // pfSenseHeader("system_camanager.php"); } } include("head.inc"); ?> ">
Existing Certificate Authority
Certificate data
Paste a certificate in X.509 PEM format here.
Internal Certificate Authority
bits
days
Country Code :     ex:   US ( two letters )
State or Province :     ex:   Texas
City :     ex:   Austin
Organization :     ex:   My Company Inc.
Email Address :     ex:   admin@mycompany.com
Common Name :     ex:   internal-ca
 
Name Internal Certificates Distinguished Name
CA
      export ca ')"> delete ca
add ca