Open***

环境:

拓扑图:

pem私钥 pem私钥怎么用_运维


                                                           

 

出差人员win7 client    
                                                                                     115.16.1.8/30
                                                                   |
              郑州站点------------互联网-------上海站点
              内网:192.168.20.0   |         内网:192.168.10.0.24
                            |                                                    
                      eth0 :   1.1.1.1/30            
                      北京Open ×××(iptables)
                      eth1:  192.168.0.1/2                                                     |
                      eth0:  192.168.0.100/24
                        公司内网网络
希望屏幕前的你,能看懂O(∩_∩)O~
以下内容可能有错误的地方,发现了还行给予提示,发送到邮箱:dockerhub@163.com
在此谢过!!!

系统版本:CentOS release 6.6 (Final)---64位
内核版本:CentOS release 6.6 (Final)
软件版本:open***-2.3.11-1.el6.x86_64
                    easy-rsa-2.2.2-1.el6.noarch
一、安装前的准备
1.关闭SELINUX
$sudo sed -ri   '/^SELINUX=.*/cSELINUX=disabled'              /etc/selinux/config

2.在防火墙上开启TCP 1194 端口,***的监听端口
$sudo  iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$sudo iptables -t filter -A INPUT-p tcp -i eth0 –dport 1194 -j ACCEPT

3.时间同步,很重要哦
$sudo  ntpdate  1.cn.pool.ntp.org
注:eth0为open***的监听网卡接口,是自己的网络环境而定

二、安装软件
1.配置YUM
$sudo  yum  -y   install   epel-releas
2.开启YUM缓存
$sudo  sed  -ri '/^keepcache=.*/ckeepcache=1' /etc/yum.con
3.清空YUM缓存的软件包
$sudo yum clean  packages
4.安装软件包
假如你有本地光盘镜像源,用如下的方法之间安装
$sudo   yum -y install  open***  easy-rsa
假如你可以连接互联网,用如下的方法安装
$sudo  rpm -ivh    http://download.fedoraproject.org/pub/epel/6/x86_64/epel-\
                release-6-8.noarch.rpm
注意:上面是一行
5.把缓存好的open***所需要的软件包打包,以备在其他Linux站点或客户端用
$ tar  jcf open***.tar.bz2    $(find /var/cache/yum/x86_64/6/  -iname "*.rpm" )
注:解压的时候先看一下压缩包里的内容,用以下命令:
tar  jtf  open***.tar.bz2
你可以只解压里面的文件,不要里面的目录。用这个命令:
tar jxf  open***.tar.bz2 --strip-components=7  -C    指定的文件夹
这里的 7是解压文件前面有斜杠“/”的个数,我这里是7层

三、在×××服务器端配置证书和私钥
1.建立自签名的CA证书和私钥
a.  修改一下建立签发证书需要的变量,基本作用就是设置一下签发证书的单位的一些信息
$cd /usr/share/easy-rsa/2.0/                                  
$sudo vim vars
export KEY_COUNTRY="CN"                        //国家
export KEY_PROVINCE="BJ"                        //省份        
export KEY_CITY="BJ"                          //城市
export KEY_ORG="SharkYun"                       //所属机构
export KEY_EMAIL="dockerhub@163.com"                //邮箱

$suod source  vars                           //初始化变量

b.  生成CA的私钥和证书(CA机构也就是这台open*** server,字签名的嘛!)
$sudo ./build-ca                             //一路回车

c.  为这台open*** server 生成私钥和由CA机构签名的证书
$sudo ./buid-key-server  ***server                //一路回车,输2次y                                               //***server是自定义的证书名字

d.  为每个open***客户端生成他们的私钥和CA机构签发的证书;因为默认情况下,每个证书同一时间
只能提供一个客户端进行登录到*** server;这里我们依次生成上海、郑州以及出差人员西瓜甜的私  
钥和证书,证书名都是自定义的                
$sudo  ./buid-key    bj-client                //一路回车,输2次y
$sudo  ./buid-key    zz-client                //一路回车,输2次y
$sudo  ./buid-key    xiguatian-client           //一路回车,输2次y

e.  创建秘钥协商文件     迪菲·赫尔曼密钥,这里是新版本,会生成2048位的
$sudo  ./build-dh                                                       //时间稍长,请耐心等待…

f.  为了防止DDOS***和UDP淹没等恶意***,生成一下   ta.key
$sudo open***  --genkey   --sercret  keys/ta.key

g.  到这里,我们需要的密钥和证书暂时创建完成,以后若还有出差人员需要,再创建一个就行了;
   ##现在查看一下。
$pwd
/usr/share/easy-rsa/2.0
$sudo  ls  -l   keys

h.  把我们用到的证书和私钥用合适的方式传输到合适的位置,每个客户端都需要CA证书和,以及
    open*** server 会需要CA证书和ta.key证书 ca.key  
    注意:这里要说明一下,以 .crt  结尾的文件是签名的证书,以 .key 结尾的文件是私钥,以 .csr
     为 结尾的文件是申请签名的用的,这个现在不需要了。以 .crt 和 .key 结尾的文件是我们需要的。
$sudo cp    -a   keys/{ca.crt,***server{crt,key},dh2048.pem,ta.key}      /etc/open***/
     下面的操作是把各个客户端所需有的文件打包,方便传送到各个客户端的机器上;至于怎么 传,
     建议用u盘吧,毕竟包含了敏感信息,不要用网络。至于上海和郑州的站点,安装个加密软件传
     送会比较安全。
$sudo cd  keys
$sudo tar    jcf    bj-client.tar.bz2   ca.crt   ta.key   bj-client*  
$sudo tar    jcf    zz-client.tar.bz2   ca.crt   ta.key   zz-client*
$suod tar    jcf    xiguatian-client.tar.bz2   ca.crt    ta.key      xiguatian-client*

四、配置open*** server
下面文中\表示一行中的shell内换行符,这个大家应该都知道啦。
1.先从示例中拷贝一份过来
$sudo cp /usr/share/doc/open***-2.3.11/sample    /sample-config-files/server.conf /etc/open***/server.conf
注意: 上面是一行
2.配置open***server的配置文件,修改成为一下内容
#*** server 的监听地址
local    1.1.1.1
#监听断口
port    1194
#采用的协议,默认是udp协议;假如有http-proxy的话,就必须用tcp了。
proto   tcp
#采用路由隧道模式
dev    tun
#CA机构的证书的位置和名字,可以绝对路径,也可以相对路径,相对路径是相对与此文件
#所在的目录
ca    ca.crt
#此***服务器的证书位置以及证书名字
cert     ***server.crt
#此***服务器的私钥位置和名字,这个文件要保护好,确保其安全!!!
key   ***server.key  # This file should be kept secret
#协商加密的文件
dh   keys/dh2048.pem

#这个是隧道的网络,第一个地址会分配个此***服务器
server   10.8.0.0 255.255.255.0
#客户端重新连接***时,会优先从此文件中匹配后,分配给它地址,位置在此文件目录下
ifconfig-pool-persist ipp.txt

#下面三项是用push来想所用客户端发布到各个站点内网的路由信息
push "route 192.168.10.0 255.255.255.0"    //上海的内网
push "route 192.168.20.0 255.255.255.0"    //郑州的内网
push "route 192.168.0.0 255.255.255.0"     //北京的内网

#下面两项是用route来向本地发布到各个站点的路由信息
route 192.168.10.0  255.255.255.0         //上海的内网
route 192.168.20.0  255.255.255.0          //郑州的内网
#这里说明一下,要想真正实现北京/上海和郑州的各个内网之间互相通信,还需要在各自的内网主机设
#置各自的内网网关定义了各个站点的自定义配置文件所在的文件夹(这里是#相对路径),主要作用是
#用iroute来定义允许其他站点访问自己的内网的网络;在ccb文件夹下创建;
#各自站点的配置文件,文件名必须是和创建站点证书名字一样!!!
client-config-dir ccd
#这个选项定义了客户端和客户端之间和以通信
client-to-client
#保持时间和超时断开时间。//这个解释是我自己的理解
keepalive 10 120

#这个是防止DDOS***,使用的私钥位置和名字
tls-auth ta.key 0 # This file is secret

#传输数据进行过程中采用压缩
comp-lzo
#×××服务器启动后会以下面的用户和组运行,主动放弃root权限
user nobody
group nobody

#当服务器因超时主动断开,客户端重新连接时,保持的之前连接用的私钥和地址的有效性
persist-key
persist-tun
#×××服务器的状态日志
status open***-status.log
#日志会以添加的形式去写入日志文件,注意要日志切割!
log-append open***.log

#记录日志的级别,默认是3,5会有更多的信息让我们去调试
verb 5
#这个好像就是日志切割吧,不确定
mute 20

#下面最重要,定义了出差或者在家的客户端,在采用证书的方式进行验证的同时,还会
#采用用户名和密码的方式进行验证
script-security 2
auth-user-pass-verify /etc/open***/auth_pass.sh via-file
#说明一下,auth_pass.sh是用到的脚本,脚本里有定义存放用户名和密码的文件
# via-file  表示从文件的方式获取用户名和密码
# via-env   表示从环境变量的方式获取用户名和密码 //这种方式我还每尝试成功。

#当我们采用TCP协议时,建议用此选项降低吞吐量,从而来降低网络延时
socket-flags TCP_NODELAY
#享客户端发布此选项,因为TCP协议嘛,需要两端都设置
push "socket-flags TCP_NODELAY"

3.在open*** server上定义客户端各个站点的配置文件
$sudo mkdir  /etc/open***/ccb
$sudo vim /etc/open***/ccb/sh-client
iroute 192.168.10.0   255.255.255.0            //上海的内网
$sudo vim /etc/open***/ccb/zz-client
iroute 192.168.20.0   255.255.255.0             //郑州的内网

4.编写需要用到的脚本
$sudo vim  /etc/open***/auth_pass.sh
#!/bin/bash
# the username+password is stored in a temporary file
# pointed to by $1
username=`head  -1  $1`
password=`tail  -1  $1`
if  grep "$username:$password"  pass_file  >  /dev/null 2>&1
then
      exit 0
else
      if grep "$username" pass_file > /dev/null 2>&1
      then
           echo "auth-user-pass-verify: Wrong password entered for user '$username'"
      else
            echo "auth-user-pass-verify: Unknown user '$username'"
       fi
       exit 1
fi
######################## The  end ##############################

5.创建用户和密码对应文件
名字要和脚本中的一样
$sudo vim /etc/open***/pass_file
xiguatian:123
shanghai:123
zhengzhou:123
#注意格式,密码和用户名中间是冒号;这显然不安全,所有我们采用了证书双重验证。
6.在open*** server上开启路由转发功能
$sudo sed -i '/^net.ipv4_forward = */cnet.ipv4.ip_forward = \
1'  /etc/sysctl.conf
$sudo sysctl -p
7.启动服务,设置开机自启动
$service open***  restart && chkconfing  open*** on

 

客户端的配置请看下一篇


https://blog.51cto.com/sharkyun/1788166