#!/bin/bash
#######################################################################
# Latest versions of Openvpn supports inline certs and keys
# One file, instead of script plus keys and certs
#
# This tool assumes
# 1) Openvpn script, certs plus keys are in same directory
# 2) Certs are usually specified in Openvpn script like
# ca ca.crt
# or
# ca /etc/local/openvpn/ca.crt
########################################################################
# Name of certs and keys and server conf script
#
ca="ca.crt"
cert="server.crt"
key="server.key"
tlsauth="ta.key"
dh="dh2048.pem"
ovpndest="server.conf"
########################################################################
# Backup to new subdirectory, just incase
#
mkdir -p backup
cp $ca $cert $key $tlsauth $ovpndest $dh ./backup
########################################################################
# Delete existing call to keys and certs
#
sed -i \
-e '/ca .*'$ca'/d' \
-e '/cert .*'$cert'/d' \
-e '/key .*'$key'/d' \
-e '/dh .*'$dh'/d' \
-e '/tls-auth .*'$tlsauth'/d' $ovpndest
########################################################################
# Add keys and certs inline
#
echo "key-direction 0" >> $ovpndest
echo "" >> $ovpndest
awk /BEGIN/,/END/ < ./$ca >> $ovpndest
echo "" >> $ovpndest
echo "" >> $ovpndest
awk /BEGIN/,/END/ < ./$cert >> $ovpndest
echo "" >> $ovpndest
echo "" >> $ovpndest
awk /BEGIN/,/END/ < ./$key >> $ovpndest
echo "" >> $ovpndest
echo "" >> $ovpndest
awk /BEGIN/,/END/ < ./$tlsauth >> $ovpndest
echo "" >> $ovpndest
echo "" >> $ovpndest
awk /BEGIN/,/END/ < ./$dh >> $ovpndest
echo "" >> $ovpndest
########################################################################
# Delete key and cert files, backup already made hopefully
#
rm $ca $cert $key $tlsauth $dh