From d001f34479c0f2debb7dc7170df2117383c74c5d Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Mon, 19 Nov 2018 21:45:59 +0100 Subject: [PATCH] OpenVPN export, add export_pkcs12() to BaseExporter for easy pkcs12 generation. for https://github.com/opnsense/core/issues/2787 Example usage (from inherited object): $p12 = $this->export_pkcs12($this->config['client_crt'], $this->config['client_prv'], $this->config['p12_password']); --- .../app/library/OPNsense/OpenVPN/BaseExporter.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/opnsense/mvc/app/library/OPNsense/OpenVPN/BaseExporter.php b/src/opnsense/mvc/app/library/OPNsense/OpenVPN/BaseExporter.php index d22763ed8..6c3c499dc 100644 --- a/src/opnsense/mvc/app/library/OPNsense/OpenVPN/BaseExporter.php +++ b/src/opnsense/mvc/app/library/OPNsense/OpenVPN/BaseExporter.php @@ -44,4 +44,19 @@ abstract class BaseExporter { $this->config = $conf; } + + /** + * @param string $crt X.509 certificate + * @param string $prv PEM formatted private key + * @param string $pass password + * @return string pkcs12 + */ + protected function export_pkcs12($crt, $prv, $pass="") + { + $p12 = null; + $crt = openssl_x509_read($crt); + $prv = openssl_get_privatekey($prv); + openssl_pkcs12_export($crt, $p12, $prv, $pass); + return $p12; + } }