summaryrefslogtreecommitdiffstats
path: root/etc/inc/openvpn.inc
diff options
context:
space:
mode:
authorjim-p <jimp@pfsense.org>2011-10-10 17:18:22 -0400
committerjim-p <jimp@pfsense.org>2011-10-27 10:29:38 -0400
commit77ed2f4c9f67af9c041ae5de3dcf82455238fdb7 (patch)
treebb547a99f575145841359005adbb00039e5c1036 /etc/inc/openvpn.inc
parent3f9c177572d5d2c2995b5e6a81679fd5bb7ce6ec (diff)
downloadpfsense-77ed2f4c9f67af9c041ae5de3dcf82455238fdb7.zip
pfsense-77ed2f4c9f67af9c041ae5de3dcf82455238fdb7.tar.gz
Add GUI option to limit the certificate depth allowed when OpenVPN clients are connecting.
Diffstat (limited to 'etc/inc/openvpn.inc')
-rw-r--r--etc/inc/openvpn.inc18
1 files changed, 18 insertions, 0 deletions
diff --git a/etc/inc/openvpn.inc b/etc/inc/openvpn.inc
index ce97469..b34d442 100644
--- a/etc/inc/openvpn.inc
+++ b/etc/inc/openvpn.inc
@@ -71,6 +71,14 @@ $openvpn_dev_mode = array("tun", "tap");
$openvpn_dh_lengths = array(
1024, 2048, 4096 );
+$openvpn_cert_depths = array(
+ 1 => "One (Client+Server)",
+ 2 => "Two (Client+Intermediate+Server)",
+ 3 => "Three (Client+2xIntermediate+Server)",
+ 4 => "Four (Client+3xIntermediate+Server)",
+ 5 => "Five (Client+4xIntermediate+Server)"
+);
+
$openvpn_server_modes = array(
'p2p_tls' => "Peer to Peer ( SSL/TLS )",
'p2p_shared_key' => "Peer to Peer ( Shared Key )",
@@ -430,6 +438,16 @@ function openvpn_reconfigure($mode, $settings) {
}
break;
}
+ if (is_numeric($settings['cert_depth'])) {
+ $sed = "";
+ $cert = lookup_cert($settings['certref']);
+ $servercn = cert_get_cn($cert['crt']);
+ $sed .= "\$server_cn = \"{$servercn}\";\\\n";
+ $sed .= "\$allowed_depth = {$settings['cert_depth']};\\\n";
+ mwexec("/bin/cat /etc/inc/openvpn.tls-verify.php | /usr/bin/sed 's/\/\/<template>/{$sed}/g' > {$g['varetc_path']}/openvpn/{$mode_id}.tls-verify.php");
+ mwexec("/bin/chmod a+x {$g['varetc_path']}/openvpn/{$mode_id}.tls-verify.php");
+ $conf .= "tls-verify {$g['varetc_path']}/openvpn/{$mode_id}.tls-verify.php\n";
+ }
// The local port to listen on
$conf .= "lport {$settings['local_port']}\n";
OpenPOWER on IntegriCloud