summaryrefslogtreecommitdiffstats
path: root/usr/local/www/system_certmanager.php
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:53:07 -0500
commiteaf23c171704362fdf3d7e27200ffdf540642c20 (patch)
tree6ade16114d233231055c2d9fa31f3d4218815b33 /usr/local/www/system_certmanager.php
parenta5a483e05b4db81fde402dfc943408a8b0d51de8 (diff)
downloadpfsense-eaf23c171704362fdf3d7e27200ffdf540642c20.zip
pfsense-eaf23c171704362fdf3d7e27200ffdf540642c20.tar.gz
Add button to download a .p12 of a cert+key. Implements #2147
Diffstat (limited to 'usr/local/www/system_certmanager.php')
-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 5820dd1..753d713 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]) {
@@ -961,6 +983,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