]> git.ipfire.org Git - people/ummeegge/ipfire-2.x.git/commitdiff
CRL updater: Update script for OpenVPN CRL crl_updater
authorErik Kapfer <erik.kapfer@ipfire.org>
Tue, 6 Feb 2018 19:46:10 +0000 (20:46 +0100)
committerErik Kapfer <erik.kapfer@ipfire.org>
Tue, 6 Feb 2018 19:50:08 +0000 (20:50 +0100)
Update script for OpenVPNs CRL cause OpenVPN refactors the CRL handling since v.2.4.0 .
    Script checks the next update field from the CRL and executes an update before it expires.
    Script is placed under fcron.daily for daily checks.

Signed-off-by: Erik Kapfer <erik.kapfer@ipfire.org>
config/ovpn/openvpn-crl-updater [new file with mode: 0644]
config/rootfiles/common/openssl
config/rootfiles/common/openssl-compat [deleted file]
config/rootfiles/common/openvpn
config/rootfiles/packages/mdns-repeater [deleted file]
lfs/openvpn

diff --git a/config/ovpn/openvpn-crl-updater b/config/ovpn/openvpn-crl-updater
new file mode 100644 (file)
index 0000000..9063b04
--- /dev/null
@@ -0,0 +1,88 @@
+#!/bin/bash
+
+#########################################################################################
+#                                                                                      #
+# This file is part of the IPFire Firewall.                                            #
+#                                                                                      #
+# IPFire is free software: you can redistribute it and/or modify                       #
+# it under the terms of the GNU General Public License as published by                 #
+# the Free Software Foundation, either version 3 of the License, or                    #
+# (at your option) any later version.                                                  #
+#                                                                                      #
+# IPFire is distributed in the hope that it will be useful,                            #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of                       #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                        #
+# GNU General Public License for more details.                                                 #
+#                                                                                      #
+# You should have received a copy of the GNU General Public License                    #
+# along with IPFire.  If not, see <http://www.gnu.org/licenses/>.                      #
+#                                                                                      #
+# Copyright (C) 2007 IPFire-Team <info@ipfire.org>.                                    #
+#                                                                                      #
+#########################################################################################
+#                                                                                      #
+# Script Name: openvpn-crl-updater                                                     #
+# Description: This script checks the "Next Update:" field of the CRL                  #
+#   and renews it if needed, which prevents the expiration of OpenVPNs CRL.            #
+#   With OpenVPN 2.4.x the CRL handling has been refactored,                           #
+#   whereby the verification logic has been removed from ssl_verify_<backend>.c .      #
+#   For more infos:                                                                    #
+#   https://github.com/OpenVPN/openvpn/commit/160504a2955c4478cd2c0323452929e07016a336         #
+#                                                                                      #
+# Run Information: If OpenVPNs CRL is presant,                                                 #
+#   this script provides a cronjob which checks daily if an update of the CRL          #
+#   is needed. If the expiring date reaches the value                                  #
+#   (defined in the 'UPDATE' variable in days) before the CRL expiration, an openssl   # 
+#   command will be executed to renew the CRL.                                         #
+#   Script execution will be logged into /var/log/messages.                            #
+#                                                                                      #
+# Author: Erik Kapfer                                                                  #
+#                                                                                      #
+# Date: 06.02.2018                                                                     #
+#                                                                                      #
+#########################################################################################
+
+# Check if OpenVPN is active or if the CRL is presant
+if [ ! -e "/var/ipfire/ovpn/crls/cacrl.pem" ]; then
+       exit 0;
+fi
+
+## Paths
+OVPN="/var/ipfire/ovpn"
+CRL="${OVPN}/crls/cacrl.pem"
+CAKEY="${OVPN}/ca/cakey.pem"
+CACERT="${OVPN}/ca/cacert.pem"
+OPENSSLCONF="${OVPN}/openssl/ovpn.cnf"
+
+## Values
+# CRL check for the 'Next Update:' in seconds
+EXPIRINGDATEINSEC="$((
+$(/bin/date -d "$(/usr/bin/openssl crl -in "${CRL}" -text | \
+    /bin/grep -oP 'Next Update: *\K.*')" +%s) - \
+    $(/bin/date +%s) \
+))"
+
+# Day in seconds to calculate
+DAYINSEC="86400"
+
+# Convert seconds to days
+NEXTUPDATE="$((EXPIRINGDATEINSEC / DAYINSEC))"
+
+# Update of the CRL in days before CRL expiring date
+UPDATE="14"
+
+
+# Check if OpenVPNs CRL needs to be renewed
+if [ ${NEXTUPDATE} -le ${UPDATE} ]; then
+    if /usr/bin/openssl ca -gencrl -keyfile "${CAKEY}" -cert "${CACERT}" -out "${CRL}" -config "${OPENSSLCONF}"; then
+       logger -t openvpn "CRL has been updated"
+    else
+       logger -t openvpn "error: Could not update CRL"
+    fi
+fi
+
+exit 0
+
+
+# EOF
+
index 87143c5c6e119666d1dfaa9cdf4becb2e746f018..2d8068a6a634404f3a5f3cabc472e109c19af008 100644 (file)
@@ -82,7 +82,6 @@ usr/bin/openssl
 #usr/include/openssl/x509.h
 #usr/include/openssl/x509_vfy.h
 #usr/include/openssl/x509v3.h
-#usr/lib/engines-1.1
 usr/lib/engines-1.1/capi.so
 usr/lib/engines-1.1/padlock.so
 #usr/lib/libcrypto.a
diff --git a/config/rootfiles/common/openssl-compat b/config/rootfiles/common/openssl-compat
deleted file mode 100644 (file)
index 7ef11e6..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-usr/lib/libcrypto.so.10
-usr/lib/libssl.so.10
index 2b63424c3c409168767e102eacc015fa3c93b03c..131d79873efc8c0a1bc7cb889a275969f7cd4ad6 100644 (file)
@@ -1,3 +1,4 @@
+etc/fcron.daily/openvpn-crl-updater
 #usr/include/openvpn-msg.h
 #usr/include/openvpn-plugin.h
 #usr/lib/openvpn
diff --git a/config/rootfiles/packages/mdns-repeater b/config/rootfiles/packages/mdns-repeater
deleted file mode 100644 (file)
index 9a4edd1..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-etc/rc.d/init.d/mdns-repeater
-usr/bin/mdns-repeater
index 3913f02bd0e816ead973e6f15d260385117dcf5a..1ecc18cdf42c82605cba0846d6e27a0adf8bb2cc 100644 (file)
@@ -96,5 +96,11 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        mv -v /var/ipfire/ovpn/verify /usr/lib/openvpn/verify
        chown root:root /usr/lib/openvpn/verify
        chmod 755 /usr/lib/openvpn/verify
+       # Add crl updater
+       mv -v /var/ipfire/ovpn/openvpn-crl-updater /etc/fcron.daily
+       chown root:root /etc/fcron.daily/openvpn-crl-updater
+       chmod 750 /etc/fcron.daily/openvpn-crl-updater
+
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
+