云计算之加密隧道服务
一、介绍
两点如何传输数据最安全
方案1: 专线(成本高) MCN
方案2: 硬件设备3层路由器 , 硬件vpn设备 vpn virtual private network 虚拟专有网络 深信服VPN
方案3: 公有云产品
方案4: 商业产品
方案5: 开源软件
OpenVPN 实现用户/运维/开发,访问网站内网.
IpSECOpenSwan 用于实现两个局域网内网互通.
2. 应用场景
运营:通过OpenVPN实现网站安全登录:(后台管理地址,设置为只能能通过vpn访问.)
开发:通过OpenVPN让开发与测试人员连接网站,进行开发测试(在家的时候)
运维:通过OpenVPN让各种用户(运维)连接网站内网服务器,或者是连接JMS
OpenVPN原理
VPN直译就是虚拟专用通道,是提供给企业之间或者个人与公司之间安全数据传输的隧道,OpenVPN无疑是Linux下开源VPN的先锋,提供了良好的性能和友好的用户GUI。
openvpn原理
openvpn通过使用公开密钥(非对称密钥,加密解密使用不同的key,一个称为Publice key,另外一个是Private key)对数据进行加密的。这种方式称为TLS加密。
openvpn使用TLS加密的工作过程是,首先VPN Sevrver端和VPN Client端要有相同的CA证书,双方通过交换证书验证双方的合法性,用于决定是否建立VPN连接。然后使用对方的CA证书,把自己目前使用的数据加密方法加密后发送给对方,由于使用的是对方CA证书加密,所以只有对方CA证书对应的Private key才能解密该数据,这样就保证了此密钥的安全性,并且此密钥是定期改变的,对于窃听者来说,可能还没有破解出此密钥,VPN通信双方可能就已经更换密钥了。
二、OpenVPN服务端配置
2.1 环境准备
环境准备 | |
---|---|
m01 | openvpn server服务端 192.168.174.61 |
db01 | 客户连接的内网服务器 非openvpn client客户端 |
windows 笔记本 | openvpn 客户端 |
2.2 证书准备流程
a)创建CA证书
CA(Certificate Authority,证书授权)是由认证机构服务者签发,是数字签名的技术基础保障
b)server密钥
c)client密钥
1) 安装证书创建工具
#01 openvpn服务器安装
yum install -y openvpn
#02 证书工具安装 Easy-RSA是一个开源的证书管理工具,用于帮助用户生成和管理数字证书
yum install -y easy-rsa
#列出安装过的证书的位置
rpm -ql easy-rsa
2) 创建**ca证书
#创建一个快捷目录
mkdir -p /opt/easy-rsa
cp -a /usr/share/easy-rsa/3.0.8/* /opt/easy-rsa/
cp /usr/share/doc/easy-rsa-3.0.8/vars.example /opt/easy-rsa/vars
cat >/opt/easy-rsa/vars<<'EOF'
if [ -z "$EASYRSA_CALLER" ]; then
echo "You appear to be sourcing an Easy-RSA
'vars' file." >&2
echo "This is no longer necessary and is
disallowed. See the section called" >&2
echo "'How to use this file' near the top
comments for more details." >&2
return 1
fi
set_var EASYRSA_DN "cn_only"
set_var EASYRSA_REQ_COUNTRY "CN"
set_var EASYRSA_REQ_PROVINCE "Beijing"
set_var EASYRSA_REQ_CITY "Beijing"
set_var EASYRSA_REQ_ORG "myorglinux"
set_var EASYRSA_REQ_EMAIL "myorg@qq.com"
set_var EASYRSA_NS_SUPPORT "yes"
EOF
#创建var后 检查 权威机构信息
cd /opt/easy-rsa/
[root@mycat easy-rsa]# tree
.
├── easyrsa
├── openssl-easyrsa.cnf
├── vars
├── x509-types
│ ├── ca
│ ├── client
│ ├── code-signing
│ ├── COMMON
│ ├── email
│ ├── kdc
│ ├── server
│ └── serverClient
└── \302\240
###02 充当权威机构 创建ca证书
######1.初始化,在当前目录创建PKI目录,用于存储证书
cd /opt/easy-rsa
./easyrsa init-pki
tree查看pki目录
######2.创建根证书,会提示设置密码,用于ca对之后生成的server和client证书签名时使用,其他可默认
#温馨提示: 加上密码
./easyrsa build-ca
Enter New CA Key Passphrase:
#输入密码 并保存好 4-1023位 密码4-1024位,输入1234
Common Name (eg: your user, host, or server name)
[Easy-RSA CA]:yunhe.cn #域名即可
CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/opt/easy-rsa/pki/ca.crt
#tree继续查看
#不再截图,自己查看,对比之前的目录.
3) 创建server证书
#####3.创建server端证书和私钥文件
##########01 创建请求文件及服务端私钥,nopass表示不加密私钥文件,其他可默认
./easyrsa gen-req server nopass
Common Name (eg: your user, host, or server name)[server]: #回车;你的服务器名字:m01
#多了2个文件
#server.req 用于 创建证书(证书资料)
req: /opt/easy-rsa/pki/reqs/server.req
key: /opt/easy-rsa/pki/private/server.key #server私钥文件
##########02 给server端证书签名,首先是对一些信息的确认,可以输入yes,然后创建ca根证书时设置的密码
./easyrsa sign server server
#server证书与私钥 创建完成
Confirm request details: yes #输入yes
Enter pass phrase for /opt/easy-rsa/pki/private/ca.key: #输入1234
4) 创建**client证书**
#####4.创建client端证书和私钥文件
##########01.创建client端证书和私钥文件,nopass表示不加密私钥文件,其他可默认
./easyrsa gen-req client nopass
##########02.给client端证书签名,首先是对一些信息的确认,可以输入yes,然后创建ca根证书时设置的密码
./easyrsa sign client client
Certificate created at: /opt/easy-rsa/pki/issued/client.crt
#client 证书与私钥 创建完成-
5) 创建**dh-pem算法文件和目录汇总**
#创建Diffie-Hellman文件,秘钥交换时的Diffie-Hellman算法
./easyrsa gen-dh
######5.目录汇总
2.3 服务端配置文件
#服务端配置文件
#配置文件中 各种路径默认相对于 /etc/openvpn
[root@m01 ~]# tree -F /etc/openvpn/
/etc/openvpn/
├── client/
└── server/
#配置服务器配置文件,AI查下解释
vim /etc/opnvpn/server/server.conf
port 1194
proto udp
dev tun
ca ca.crt
dh dh.pem
cert server/server.crt
key server/server.key
server 10.8.0.0 255.255.255.0
push "route 172.16.1.0 255.255.255.0" #看下自己的内网;
#ifconfig-pool-persist ipp.txt
keepalive 10 120
max-clients 100
status /var/log/openvpn-status.log
log /var/log/openvpn.log
verb 3
client-to-client
persist-key
persist-tun
duplicate-cn
#拷贝
cp /opt/easy-rsa/pki/ca.crt /opt/easy-rsa/pki/dh.pem /etc/openvpn/
cp /opt/easy-rsa/pki/issued/server.crt /opt/easy-rsa/pki/private/server.key /etc/openvpn/server/
====================================
#修改systemctl 配置
cat /usr/lib/systemd/system/openvpn@.service
[Unit]
Description=OpenVPN Robust And Highly Flexible Tunneling Application On %I
After=network.target
[Service]
Type=notify
PrivateTmp=true
ExecStart=/usr/sbin/openvpn --cd /etc/openvpn/ --config %i/%i.conf
#增加%i即可 修改这一行
#%i表示 server或 client
[Install]
WantedBy=multi-user.target
-----------------------启动
systemctl start openvpn@server
#1查看一下
ps -ef |grep openvpn
#2查看端口号,看1194
ss -lntup |grep openvpn
udp UNCONN 0 0 *:1194 *:* users:(("openvpn",pid=8561,fd=5))
#3再次查看ip
ip a
----------------
tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
link/none
inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
2.4 客户端配置文件
# cat client.ovpn
client
dev tun
proto udp
remote 10.0.0.61 1194
resolv-retry infinite
nobind
ca ca.crt
cert client.crt
key client.key
verb 3
persist-key
#需要的注意事项:权限问题
#ping 内网ip
ssh root@内网ip
测试客户端连接服务器
- 点赞
- 收藏
- 关注作者
评论(0)