使用 docker 搭建 openvpn,创建、删除用户证书

2018/03/06 18:46
阅读数 374

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

 

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 Initialize the $OVPN_DATA container that will hold the configuration files and certificates. The container will prompt for a passphrase to protect the private key used by the newly generated certificate authority.

初始化配置文件到数据卷中。

//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 的证书删除完毕。可以验证他不能链接了!!!

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部