使用 docker 搭建 openvpn,創建、刪除用戶證書

使用 docker 搭建 openvpn,創建、刪除用戶證書

 

我自己的配置,服務器:ubuntu16.04 + docker 17.12.0-ce;客戶端:win10 + openvpn2.4.5

 

一、搭建OpenVPN服務器

 

  • 1 在dockerhub上搜索 openvpn,我是用的是

進去以後會有詳細介紹,接下來按照說明進行搭建

 

  • 2 在 terminal 配置環境變量,Pick a name for the $OVPN_DATA data volume container,輸入以下命令
export OVPN_DATA=openvpn_data

 

  • 3 創建一個數據卷存儲配置文件和證書等文件
docker volume create --name $OVPN_DATA

 

  • 4  初始化配置文件到數據卷中
//docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u udp://VPN.SERVERNAME.COM
//VPN.SERVERNAME.COM 表示openvpn服務器的ip地址,使用udp協議
docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u udp://140.143.167.220

初始化配置,並保存授權密碼

docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki

 

  • 5 開啓 openvpn容器
docker run -v $OVPN_DATA:/etc/openvpn -d -p 1194:1194/udp --cap-add=NET_ADMIN --name=openvpn kylemanna/openvpn

 

  • 6 生成用戶證書,如果需要生成多個用戶證書可以執行多次該命令
//不需要密碼,如果需要用戶連接時輸入密碼將最後的 nopass 去掉
//docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full CLIENTNAME nopass
docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full tencent nopass

說明:安全做法應該加上訪問密碼,用戶連接時輸入密碼比較安全。防止證書被盜後隨意鏈接。用法如下

docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full tencent
Generating a 2048 bit RSA private key
................................................................................................................................................................................................................+++
................................................................................+++
writing new private key to '/etc/openvpn/pki/private/tencent.key.XXXXBFnjfh'
Enter PEM pass phrase: //用戶連接密碼
Verifying - Enter PEM pass phrase:
-----
Using configuration from /usr/share/easy-rsa/openssl-1.0.cnf
Enter pass phrase for /etc/openvpn/pki/private/ca.key: //上一步輸入的授權密碼
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :ASN.1 12:'tencent'
Certificate is to be certified until Mar 3 10:00:03 2028 GMT (3650 days)
Write out database with 1 new entries
Data Base Updated

 

  • 7 將用戶證書導出到本地文件
//docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient CLIENTNAME > CLIENTNAME.ovpn
docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient tencent > tencent.ovpn

 

  • 8 在win10 系統上安裝openvpn客戶端軟件,將導出的文件 tencent.ovpn 放到openvpn的配置文件夾中,默認是C:\Program Files\OpenVPN\config

運行openvpn客戶端軟件,鏈接

使用ip查詢網站可以看到,沒有連接前 和 連接後的 ip 不一樣了!!

 

二、刪除用戶證書

在某些時候,不想讓某些用戶使用了。可以刪除用戶證書。

例如:刪除上面創建的 tencent 用戶證書

  • 1 刪除用戶證書
docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn easyrsa revoke tencent
Please confirm you wish to revoke the certificate with the following subject:
subject=
commonName = tencent
Type the word 'yes' to continue, or any other input to abort.
Continue with revocation: yes
Using configuration from /usr/share/easy-rsa/openssl-1.0.cnf
Enter pass phrase for /etc/openvpn/pki/private/ca.key:
Revoking Certificate DC3DA3513871192FE8085FDB56B38F47.
Data Base Updated
IMPORTANT!!!
Revocation was successful. You must run gen-crl and upload a CRL to your
infrastructure in order to prevent the revoked cert from being accepted.
  • 2 更新證書數據庫
docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn easyrsa gen-crl update-db
  • 3 將openvpn 容器重啓
docker restart openvpn

至此用戶 tencent 的證書刪除完畢。可以驗證他不能鏈接了!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章