- 积分
- 16843
在线时间 小时
最后登录1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?开始注册
x
使用环境:
% r1 C3 f0 f0 g' e# x openvpn服务端安装在centos6.5或者centos7系统平台以上版本;
* k9 J9 T2 [1 M openvpn客户端安装在windows10平台上;, L/ j8 M) P" `+ ]" v, P$ V
其中的操作步骤有些很像此前写过的一篇文章CA服务器签署证书的步骤;
4 H% t1 W" \, bopenvpn就是安全的vpn,通过openssl实现ssl加密解密;
- O: j0 A. ~! W7 x+ k3 popenvpn实现的简单原理个人理解是:
- Q- W! X7 B+ R& ^% D" o通过openvpn客户端和服务器端用虚拟网卡建立逻辑的安全的通信连接,然后再通过物理网卡传输数据;
( l! }; j( ?% O" X3 M% f即首先openvpn服务端,安装程序并开启服务,然后服务器端会自动生成一个虚拟网卡tun0,用来建立安全通行用的,并监听一个端口,准备接收客户端的请求; u3 d, X3 }( h+ ?. g) v8 z
第二,客户端安装openvpn后,也自动生成一个虚拟网卡,openvpn客户端需要指定openvpn服务端的物理网卡上的ip地址和监听的端口进行连接;3 k, \, Y2 w0 V* r" F
第三,证书、密钥、密码都通过后,即实现了vpn(虚拟私有网络)功能;
% y4 Z- X2 c; ^7 y8 v3 v7 S* x: E具体配置步骤:
) Y- O. S y: B0 y9 Y& u第一:安装软件& \/ f1 U6 k/ r# w
]# yum install openvpn easy-rsa
* R7 j# w# m4 d$ H( Z+ d第二:准备相关目录和配置文件
+ Z h: y7 }/ {0 I* K& G1 g* ?3 Y0 G ]# cp /usr/share/doc/easy-rsa-3.0.3/vars.example /etc/openvpn/easy-rsa/vars: |* h- x% T8 \* M: K- J3 @! j. F
]# cp -r /usr/share/easy-rsa/3.0.3/* /etc/openvpn/easy-rsa/3 z3 u% u) A. E) L7 x" S0 Z9 [: m
复制的文件有:easyrsa、openssl-1.0.cnf、x509-types;
8 w4 C- w) t4 g5 D ]# cp /usr/share/doc/openvpn-2.4.5/sample/sample-config-files/server.conf /etc/openvpn/
1 h2 P; N2 o9 i' z5 r" _# E( X 编辑vars文件:5 N- r9 |7 ?3 Z5 ~8 ?
set_var EASYRSA_REQ_COUNTRY "CN"
) r0 W( `# r; D( P# N# t5 B set_var EASYRSA_REQ_PROVINCE "Beijing"5 e7 v& D( Z q/ e! u3 T
set_var EASYRSA_REQ_CITY "Beijing"! B/ I- I( r2 E" I; E) I
set_var EASYRSA_REQ_ORG "OpenVPN CA". M# e+ R4 h4 i7 s% N$ w( V5 E
set_var EASYRSA_REQ_EMAIL "[url=mailto:4********4@.qq.com]4********4@.qq.com[/url]"
1 n5 ^9 i- e; j, ^9 G- ] set_var EASYRSA_REQ_OU "My VPN"
1 I% ]1 d2 J ~9 l' D& F+ B$ G创建服务器端证书和key:# F. I5 H( Z8 r& N
第一:目录初始化:
+ v! p- e4 T/ V+ K9 q4 Y4 H, a0 D ]# cd /etc/openvpn/easy-rsa/" z2 w, J. ], e& k
]# ./easyrsa init-pki
7 \+ V2 h# ~1 W3 M; h第二:创建根证书:
8 r! \0 ?6 {2 N% Q ]# ./easyrsa build-ca
$ _* w; X; G' l5 N Enter PEM pass phrase: 输入2次pem密码,并记住(输入的pem密码是openvpn,后面会用到);
1 K' O, a" S0 x; P ........, R+ h# A. ]1 l( x- o0 n. E$ |
Common Name (eg: your user, host, or server name) [Easy-RSA CA]: 输入名称;(输入的是opvpn-ca)* Q3 A& ?% b7 y! T. L
回车后显示:; l" s8 z) \9 M4 F) i
CA creation complete and you may now import and sign cert requests.
+ `6 k5 Q& H; aYour new CA certificate file for publishing is at:
# |; p* N: `! |+ Q1 q3 Z9 T# M8 V/etc/openvpn/easy-rsa/pki/ca.crt! J! C y" f0 }$ l& @
第三:创建服务器端证书:2 c2 c' _9 g1 N" k
]# ./easyrsa gen-req server nopass( c: c# B* R: K2 @3 H
Common Name (eg: your user, host, or server name) [server]: (输入是node2)6 Q7 y- T; O/ |/ W, _
输入回车后显示:
3 l* Z v0 n- m$ |, C% K; s9 cKeypair and certificate request completed. Your files are:' l4 l1 a2 j o) K+ {( X
req: /etc/openvpn/easy-rsa/pki/reqs/server.req
0 m L c6 v; O" L; z8 h1 bkey: /etc/openvpn/easy-rsa/pki/private/server.key# b7 I( a1 N( Y6 s" h4 X& I8 Y+ o
第四:签署服务器端证书:
# J& m1 k0 T/ U& d6 f- A8 U! @ i ]# ./easyrsa sign server server+ w$ Q$ {8 m7 w2 b$ w
回车后,Confirm request details: (输入yes)" A/ ]# _# Z! w) O7 M5 D4 | e
Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key: (输入之前CA根证书的pem密码是openvpn)4 N5 |! t: Y( ]5 Z9 ~5 F# R! f
回车后显示:8 ^ V+ j* l9 X" e' a
Check that the request matches the signature: C- J2 J$ o+ b! G5 k3 e7 t2 y# J
Signature ok& q2 C4 O: t% f# {9 t/ P
The Subject's Distinguished Name is as follows- t/ E3 M2 W0 P: a+ k `. J: y
commonName :ASN.1 12:'node2'9 V$ B8 R* N- x" t7 v+ u. x S; p
Certificate is to be certified until Apr 4 16:04:29 2028 GMT (3650 days)3 k ?9 J, b" E! G2 n! p
Write out database with 1 new entries K! o; l/ P- e' H
Data Base Updated; b. B \; r6 V: C3 e
Certificate created at: /etc/openvpn/easy-rsa/pki/issued/server.crt0 | l: u. S% z
第五:创建Diffie-Hellman,确保key穿越不安全网络的命令:
: e4 t1 d: _! w! A ]# ./easyrsa gen-dh0 R9 P. l8 S" @1 `% `! p" A
回车后,等的时间稍微长一点,最后显示:3 }1 {. E% e5 z( _
DH parameters of size 2048 created at /etc/openvpn/easy-rsa/pki/dh.pem% o) M' q z" D% n
第六:生成ta密钥文件7 Z; K, X, T* V4 D Y" Y8 D8 t
]# openvpn --genkey --secret /etc/openvpn/easy-rsa/ta.key
2 q- ^+ }. }+ Y) h% A% H3 q# k2 L 不执行此命令,会报错:- ]. O/ a. k, t# D
Sat Apr 7 12:53:37 2018 WARNING: cannot stat file 'ta.key': No such file or directory (errno=2)
( M8 [' o3 {. e- ?" qOptions error: --tls-auth fails with 'ta.key': No such file or directory (errno=2)
5 u0 a* e7 J" W6 TOptions error: Please correct these errors.
8 o5 l g h: m+ z" ]2 S; cUse --help for more information.
: H9 Q; ?: j4 M1 ]创建客户端证书及key :& y J$ C+ S& W7 g5 t8 G
第一:创建过程同服务端:
, P' M/ ^- z! B# u# }2 g$ j% R( E ]# mkdir /root/client
- v' N1 R3 A9 _( u ]# cd /root/client
, C2 P5 D A4 J ]# cp -r /usr/share/easy-rsa/3.0.3/* ./
$ O( U- @+ V# { ]# ./easyrsa init-pki
7 S u W# N6 x1 u ]# ./easyrsa gen-req client" P: D8 N' V9 D. M1 T( I A
回车后显示Enter PEM pass phrase: 输入密码,密码是之后客户端连接服务器要用的(输入的是vpnclient)
- F" y( [% D! Z6 S2 uCommon Name (eg: your user, host, or server name) [client]: (输入的是client,后面会用到)1 ?' G$ L' M3 Y" a& {9 F5 d1 d
回车后显示:
7 @1 I9 `0 ~8 r8 A1 l% |7 U' h6 rKeypair and certificate request completed. Your files are:. q+ R$ m# ^ Q; {8 ?2 p4 L
req: /root/client/pki/reqs/client.req9 D% Z, U" ?) U6 E3 T
key: /root/client/pki/private/client.key: N; B7 }( }5 l( p
第二:将得到的clientone.req导入然后签约证书:
( o9 }' I" N" Q9 J! F ]# ./easyrsa import-req /root/client/pki/reqs/client.req client
9 g9 ?3 h* l; L$ C 回车后显示:
9 O" ^1 e! P( @: k5 E$ qNote: using Easy-RSA configuration from: ./vars! o& L# d6 P! e" G
The request has been successfully imported with a short name of: clientone: F2 C- }2 ?" S- @- l; Y9 P0 r0 }
You may now use this name to perform signing operations on this request.. m, Y% a& m Y# m8 n9 C7 Q2 a
第三:签约证书" I/ Q/ o6 y& c
]# ./easyrsa sign client client/ K4 X8 e! i3 k" x3 h# m& [8 K. C7 S; X
回车后,输入yes;) z/ a1 u, @1 L7 d0 I; r/ N# Q3 R
Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key: (输入的是openvpn)
_! J7 N. Y7 d- i2 b, r0 j! C0 z9 V 注意:7 n8 F8 i8 t2 y8 p+ m( |* w M
这里生成client所以第一个client位置必须为client,第二个参数client要与之前导入名字一致,导入的时候会要求输入密码,这个密码是第一次设置的根证书的密码,不要输错;因为openvpn是一个客户端对应一组证书密钥文件的;
& i- u% J' z) L' [ 回车后显示:
2 r3 L- I' o9 ~9 _- J' ^Check that the request matches the signature) |' O( ~9 K5 O0 C* F9 _
Signature ok0 g3 s% \1 z2 Q0 J. O% m
The Subject's Distinguished Name is as follows
0 q$ q0 w- @% ~4 b2 `) y& [commonName :ASN.1 12:'client'
( \ }0 K1 c% B' QCertificate is to be certified until Apr 4 16:38:37 2028 GMT (3650 days)
5 K9 U) ]% [' i0 X# c- rWrite out database with 1 new entries
6 ^6 Q. i0 `1 X6 p; H4 V- C4 V! J0 P* `( TData Base Updated
/ w, o/ w& d8 [8 o+ u, I; E! PCertificate created at: /etc/openvpn/easy-rsa/pki/issued/client.crt1 M: C4 v' N6 ?3 Y: T. J8 D3 i
拷贝相关文件
0 A6 i& X0 B& ^" q) j- Q9 O" S* S拷贝服务器端所需文件到各自位置:
. A. \) M7 x, p. H& I- m0 q]# cp pki/ca.crt /etc/openvpn/
Y" ^/ D0 b6 c' b]# cp pki/private/server.key /etc/openvpn/
" ` u4 x, L, m4 J& ]" d# Q]# cp pki/issued/server.crt /etc/openvpn/
7 |. e9 R; [* H7 ?]# cp pki/dh.pem /etc/openvpn/
% n# j' ^) B" \' Z' t' M]# cp /etc/openvpn/easy-rsa/ta.key /etc/openvpn/$ I# L) s' |/ s: o
拷贝客户端所需文件到各种位置:
* g8 F$ f" E' Y& n' H; j7 l# cp pki/ca.crt /root/client/
) ^- d; n% Y) E+ ^& r* U( w# cp pki/issued/client.crt /root/client/
% @& X8 V" f) m' i8 [# cp /root/client/pki/private/client.key /root/client/$ p9 J" e7 g* | r9 x( M
# cp /etc/openvpn/easy-rsa/ta.key /root/client/
: {1 l7 O) k f$ s4 J( |/ i修改vpn配置文件:
! c2 k0 Z4 R4 Z5 D$ \: S( W- i) X]# egrep -v "^$|^#|^;" /etc/openvpn/server.conf0 I9 o- y8 l+ p% h0 I
port 11943 e3 s- I+ q' U( U6 p
proto udp+ ^4 \: ]7 F9 k7 h& w4 Z* i( I
dev tun
! u# K+ x$ N; k) f+ h+ Pca /etc/openvpn/ca.crt( F3 f- T& v8 y5 Q% d
cert /etc/openvpn/server.crt
8 o( I- A# x( ~# I# }, ~( Dkey /etc/openvpn/server.key # This file should be kept secret+ h. o. _' J) ?: i- |, F2 z
dh /etc/openvpn/dh.pem
% q* M; K% i5 u; wserver 192.168.11.0 255.255.255.0
( P) z1 N" x& S( Sifconfig-pool-persist ipp.txt
; J7 |0 Y8 n' Q0 i, w4 o% Gpush "redirect-gateway def1 bypass-dhcp"1 Q( F+ L- {( x7 `
push "dhcp-option DNS 8.8.8.8"/ I$ \- w4 y. T2 ~( m2 N" C
push "dhcp-option DNS 8.8.8.8"% Y" N& O& ]7 f9 a, }
keepalive 10 120
! e$ f' X5 n' ~( wtls-auth ta.key 0 # This file is secret3 g% V! L! N( E3 U4 `. `( v3 n1 l
cipher AES-256-CBC
8 T: e. x; ]9 g; Z% |( F, Tcomp-lzo
0 g0 m: F" S7 d; f9 V$ D& tmax-clients 1009 K4 X: f" x, w- Q0 k1 \
persist-key, ^ H: n4 `- k+ ~/ E) |7 `
persist-tun" e# v, Y0 h5 u( S0 P1 p) a
status openvpn-status.log- r: q4 j' ^. d9 ~4 ^ F5 T
verb 3# I0 W9 K7 y+ H
explicit-exit-notify 1 ; `& e K% B: H
启动openvpn服务端:
" G0 U1 N2 o- o, s% _1 b5 v]# openvpn /etc/openvpn/server.conf &
+ O4 Z% x1 u( u) s; p 启动成功后显示:3 Q+ ?4 F( V0 u6 A* H
) Q9 H7 {! b9 }+ a1 [9 f `% ]3 w- l; t8 h
' _/ t# }% p4 h# Q9 u6 f+ D或使用systemctl启动:
8 w$ z/ z' t1 z3 Nsystemctl -f enable openvpn@server.service2 }, b! Z& Y0 A/ z) |
#设置启动文件+ K( N" o# B! ^ p, N' Q3 I8 F; y
systemctl start openvpn@server.service
+ Q9 C- L+ ^$ r. I#启动openvpn的命令
* S* b; P5 G0 v9 Wwindows7上配置openvpn客户端:2 v+ t+ R' n8 o# ]4 I& R) w
第一:下载openvpn客户端1 r2 B5 P' T% }" ]3 ]3 m. z: _3 N$ a$ e. {
链接地址:http://openvpn.ustc.edu.cn/
0 z$ ~: q) D$ @( B5 m7 J3 ]( h5 I$ K
安装过程就不表了,具体配置说下:
c% i* ^7 ^) [8 n0 D 下载相关文件到本特指的目录:% O9 s7 v' j7 Y3 w6 ?! F. K; B
从centos7上把client.crt、client.conf并改名为client.ovpn、client.key、ta.key四个文件,放在安装目录下的config目录里即可;
' @! T# {# g: F! a9 xclient.ovpn配置文件内容:- o2 ^9 `$ |' E2 h0 ^: U( V
client4 m( \" O" G( O8 \& r2 T B" X
dev tun
* x* j# Q7 H3 p5 d5 dproto udp% j2 z ^- e W' s2 {
remote 192.168.255.198 1194' \/ P8 \% s! R. ^$ E. ]" G
resolv-retry infinite4 \# O; b8 ^7 h2 X1 z8 w/ E! b
nobind
6 a. H6 ]$ |5 J9 v" k. P! `persist-key0 M+ ?( s5 ]6 t2 p
persist-tun: w+ K: Y" n9 t' H. F0 k, T
ca ca.crt
' j; T- k1 V* z+ H3 S+ s4 e, rcert client.crt
/ ]+ |! |" e6 y G3 }# F& Ikey client.key0 o. k! i2 f! X ^# k. k' U
remote-cert-tls server, {! Y; v4 g/ z# t5 G
tls-auth ta.key 1/ C9 S( v0 j" |+ t& J
cipher AES-256-CBC
8 P" S! Q* Z/ H6 b8 G: qverb 34 h8 x4 q; S9 d1 X
openvpn客户端登录: a$ Y) p/ f7 d, N
双击图标后,弹出输入密码的窗口,此前设定的密码为vpnclient即可成功登录;
. F( `2 N& n/ Z5 I6 r1 S, P7 F
+ R- p" v# S% [! a5 b- W, w8 w# ]' A表示成功登录;' }$ G# o# L) Q1 g2 e
% k4 ]- V' q6 C. m. Sopenvpn图标变为绿色即成功连接openvpn服务器;, |5 d) B& d. n' f
- V' N1 d' Z# M. ^1 s# ^% q. h |
|