|
6 | 6 | # Secure OpenVPN server installer for Debian, Ubuntu, CentOS, Amazon Linux 2, Fedora, Oracle Linux 8, Arch Linux, Rocky Linux and AlmaLinux. |
7 | 7 | # https://github.com/angristan/openvpn-install |
8 | 8 |
|
| 9 | +# Configuration constants |
| 10 | +readonly CERT_VALIDITY_DAYS=3650 # 10 years |
| 11 | +readonly CRL_VALIDITY_DAYS=3650 # 10 years |
| 12 | +readonly EASYRSA_VERSION="3.1.2" |
| 13 | +readonly EASYRSA_SHA256="d63cf129490ffd6d8792ede7344806c506c82c32428b5bb609ad97ca6a6e4499" |
| 14 | + |
9 | 15 | function isRoot() { |
10 | 16 | if [ "$EUID" -ne 0 ]; then |
11 | 17 | return 1 |
@@ -753,10 +759,8 @@ function installOpenVPN() { |
753 | 759 |
|
754 | 760 | # Install the latest version of easy-rsa from source, if not already installed. |
755 | 761 | if [[ ! -d /etc/openvpn/easy-rsa/ ]]; then |
756 | | - local version="3.1.2" |
757 | | - local easy_rsa_sha256="d63cf129490ffd6d8792ede7344806c506c82c32428b5bb609ad97ca6a6e4499" |
758 | | - wget -O ~/easy-rsa.tgz https://github.com/OpenVPN/easy-rsa/releases/download/v${version}/EasyRSA-${version}.tgz |
759 | | - if ! echo "${easy_rsa_sha256} ~/easy-rsa.tgz" | sha256sum -c; then |
| 762 | + wget -O ~/easy-rsa.tgz "https://github.com/OpenVPN/easy-rsa/releases/download/v${EASYRSA_VERSION}/EasyRSA-${EASYRSA_VERSION}.tgz" |
| 763 | + if ! echo "${EASYRSA_SHA256} ~/easy-rsa.tgz" | sha256sum -c; then |
760 | 764 | echo "SHA256 checksum verification failed for easy-rsa download!" |
761 | 765 | rm -f ~/easy-rsa.tgz |
762 | 766 | exit 1 |
@@ -784,15 +788,15 @@ function installOpenVPN() { |
784 | 788 |
|
785 | 789 | # Create the PKI, set up the CA, the DH params and the server certificate |
786 | 790 | ./easyrsa init-pki |
787 | | - EASYRSA_CA_EXPIRE=3650 ./easyrsa --batch --req-cn="$SERVER_CN" build-ca nopass |
| 791 | + EASYRSA_CA_EXPIRE=$CERT_VALIDITY_DAYS ./easyrsa --batch --req-cn="$SERVER_CN" build-ca nopass |
788 | 792 |
|
789 | 793 | if [[ $DH_TYPE == "2" ]]; then |
790 | 794 | # ECDH keys are generated on-the-fly so we don't need to generate them beforehand |
791 | 795 | openssl dhparam -out dh.pem "$DH_KEY_SIZE" |
792 | 796 | fi |
793 | 797 |
|
794 | | - EASYRSA_CERT_EXPIRE=3650 ./easyrsa --batch build-server-full "$SERVER_NAME" nopass |
795 | | - EASYRSA_CRL_DAYS=3650 ./easyrsa gen-crl |
| 798 | + EASYRSA_CERT_EXPIRE=$CERT_VALIDITY_DAYS ./easyrsa --batch build-server-full "$SERVER_NAME" nopass |
| 799 | + EASYRSA_CRL_DAYS=$CRL_VALIDITY_DAYS ./easyrsa gen-crl |
796 | 800 |
|
797 | 801 | case $TLS_SIG in |
798 | 802 | 1) |
@@ -1138,11 +1142,11 @@ function newClient() { |
1138 | 1142 | cd /etc/openvpn/easy-rsa/ || return |
1139 | 1143 | case $PASS in |
1140 | 1144 | 1) |
1141 | | - EASYRSA_CERT_EXPIRE=3650 ./easyrsa --batch build-client-full "$CLIENT" nopass |
| 1145 | + EASYRSA_CERT_EXPIRE=$CERT_VALIDITY_DAYS ./easyrsa --batch build-client-full "$CLIENT" nopass |
1142 | 1146 | ;; |
1143 | 1147 | 2) |
1144 | 1148 | echo "⚠️ You will be asked for the client password below ⚠️" |
1145 | | - EASYRSA_CERT_EXPIRE=3650 ./easyrsa --batch build-client-full "$CLIENT" |
| 1149 | + EASYRSA_CERT_EXPIRE=$CERT_VALIDITY_DAYS ./easyrsa --batch build-client-full "$CLIENT" |
1146 | 1150 | ;; |
1147 | 1151 | esac |
1148 | 1152 | echo "Client $CLIENT added." |
@@ -1230,7 +1234,7 @@ function revokeClient() { |
1230 | 1234 | CLIENT=$(tail -n +2 /etc/openvpn/easy-rsa/pki/index.txt | grep "^V" | cut -d '=' -f 2 | sed -n "$CLIENTNUMBER"p) |
1231 | 1235 | cd /etc/openvpn/easy-rsa/ || return |
1232 | 1236 | ./easyrsa --batch revoke "$CLIENT" |
1233 | | - EASYRSA_CRL_DAYS=3650 ./easyrsa gen-crl |
| 1237 | + EASYRSA_CRL_DAYS=$CRL_VALIDITY_DAYS ./easyrsa gen-crl |
1234 | 1238 | rm -f /etc/openvpn/crl.pem |
1235 | 1239 | cp /etc/openvpn/easy-rsa/pki/crl.pem /etc/openvpn/crl.pem |
1236 | 1240 | chmod 644 /etc/openvpn/crl.pem |
|
0 commit comments