summaryrefslogtreecommitdiffstats
path: root/usr/local
diff options
context:
space:
mode:
authorjim-p <jimp@pfsense.org>2012-02-14 13:52:34 -0500
committerjim-p <jimp@pfsense.org>2012-02-14 13:52:34 -0500
commitbe065c25d43466b3a40c69146ec1f21837062b77 (patch)
treecd211cbe780f62e0e9187e64fabc11258b9d8762 /usr/local
parentd8ee5cfeb59d1f80869cfaa356313e73bad17e38 (diff)
downloadpfsense-be065c25d43466b3a40c69146ec1f21837062b77.zip
pfsense-be065c25d43466b3a40c69146ec1f21837062b77.tar.gz
Add button to download a .p12 of a cert+key. Implements #2147
Diffstat (limited to 'usr/local')
-rw-r--r--usr/local/www/system_certmanager.php25
1 files changed, 25 insertions, 0 deletions
diff --git a/usr/local/www/system_certmanager.php b/usr/local/www/system_certmanager.php
index a92c3cd..252d4e3 100644
--- a/usr/local/www/system_certmanager.php
+++ b/usr/local/www/system_certmanager.php
@@ -144,6 +144,28 @@ if ($act == "key") {
exit;
}
+if ($act == "p12") {
+ if (!$a_cert[$id]) {
+ pfSenseHeader("system_certmanager.php");
+ exit;
+ }
+
+ $exp_name = urlencode("{$a_cert[$id]['descr']}.p12");
+
+ $res_crt = openssl_x509_read(base64_decode($a_cert[$id]['crt']));
+ $res_key = openssl_pkey_get_private(array(0 => base64_decode($a_cert[$id]['prv']) , 1 => ""));
+
+ $exp_data = "";
+ openssl_pkcs12_export($res_crt, $exp_data, $res_key, null);
+ $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 ($act == "csr") {
if (!$a_cert[$id]) {
@@ -953,6 +975,9 @@ function internalca_change() {
<a href="system_certmanager.php?act=key&id=<?=$i;?>">
<img src="/themes/<?= $g['theme'];?>/images/icons/icon_down.gif" title="<?=gettext("export key");?>" alt="<?=gettext("export ca");?>" width="17" height="17" border="0" />
</a>
+ <a href="system_certmanager.php?act=p12&id=<?=$i;?>">
+ <img src="/themes/<?= $g['theme'];?>/images/icons/icon_down.gif" title="<?=gettext("export cert+key in .p12");?>" alt="<?=gettext("export cert+key in .p12");?>" width="17" height="17" border="0" />
+ </a>
<?php if (!cert_in_use($cert['refid'])): ?>
<a href="system_certmanager.php?act=del&id=<?=$i;?>" onClick="return confirm('<?=gettext("Do you really want to delete this Certificate?");?>')">
<img src="/themes/<?= $g['theme'];?>/images/icons/icon_x.gif" title="<?=gettext("delete cert");?>" alt="<?=gettext("delete cert");?>" width="17" height="17" border="0" />
OpenPOWER on IntegriCloud