So for Centos 7 and most likely Centos 8 at the time of this writing you have to compile openvpn from source/master not release as openvpn community has not put the change in newest release yet. Mabey I did not see this info but I can not find it anywhere and may be a lack of understanding on my part.
Here is what I did for CentOS 7:
1. cloned the master branch to some working dir on your server
yum install git
git clone https://github.com/OpenVPN/openvpn.git
2. Install dependencies for build
yum groupinstall "Development Tools"
yum install pam-devel openssl-devel lzo-devel systemd-devel
3. In the openvpn dir that was cloned
autoreconf -i -v -f
./configure --enable-systemd
make
make install
4. make sure your config dir for openvpn is /etc/openvpn/server and put config and all in there
5. I copied the systemd file generated in my working dir under distro/systemd/openvpn-server@.service to /etc/openvpn/server/
6. Edie the openvpn-server@.service
ProtectHome=false
7. I enabled service at this point while in directory my conf file was there already
systemctl enable openvpn-server@<nameofconffile> . leave off the .conf
8. Start server
systemctl start openvpn-server@<nameofconffilefromabove>
You will still have to generate certs and setup conf before you do all this. Google authenticator can just be installed via yum and setup like normal. With my configs above and doing this I was able to get viscosity and openvpn client for android to auth like this:
USERNAME
PASSWORD
OTP
Separately so I can save my pass in viscosity and just update OTP anytime I need to login. I will make a more in depth guide and or script to do this but wanted to doc here so people did not waste time like I did trying to find why it was not working. Openvpn does not document this anywhere to my knowledge which could be wrong.
NOTE:
Systemd use is noted here for anyone that wants to know.
https://community.openvpn.net/openvpn/wiki/Systemd