easyrsa2,easyrs3结构对比,迁移尝试

#目录结构对比

easyrsa2.x目录

#easy-rsa2.x
keys
├── 01.pem #可能是证书制作过程中的中间产物,3.x版本看不到
├── 02.pem
├── 03.pem
├── 04.pem
├── ca.crt#根证书
├── ca.key#ca秘钥
├── client1.crt#客户端证书
├── client1.csr#客户端证书请求文件
├── client1.key#客户端秘钥
├── crl.pem#疑似证书吊销相关
├── dh2048.pem#dm密码
├── index.txt#证书列表
├── index.txt.attr
├── index.txt.attr.old
├── index.txt.old#证书列表备份
├── revoke-test.pem
├── serial#下一个证书的编号
├── serial.old
├── vpnserver.crt#服务器证书
├── vpnserver.csr
└── vpnserver.key

##easyrsa3.x的目录

3x对目录进行了调整,其中certs_by_serial包含前面提到的pem. issued存储已签发证书,private存储私钥,reqs存储证书请求列表。

pki/
├── ca.crt
├── certs_by_serial
│   ├── 1106A234004527B9A3B2DCC0F5C54B2E.pem
│   ├── 63F0273AD1E90D1105E213A70EA6B1F3.pem
│   └── 8C358150E2C79D3C2DCE36E46C53A9DC.pem
├── crl.pem
├── crl.pembak
├── dh.pem
├── index.txt
├── index.txt.attr
├── index.txt.attr.old
├── index.txt.old
├── issued
│   ├── client1.crt
│   ├── client2.crt
│   └── server.crt
├── private
│   ├── ca.key
│   ├── client1.key
│   ├── client2.key
│   ├── server.key
│   ├── server.key.4RJyLAmonH
│   └── server.key.oxtWZEYF6g
├── reqs
│   ├── client1.req
│   ├── client2.req
│   └── server.req
├── serial
└── serial.old

#迁移的可能性: 这里先做个假设,如果我们都是按照标准教材来操作证书签发的,按照两个版本的文档来看,easy-rsa2.x的证书存储在/etc/openvpn/easy-rsa/keys。而easyrsa3.x则存储在/etc/openvpn/pki。暂时假设是这样的.

迁移流程

  1. 创建目录 cert_by_serial,issued,private,reqs
  2. 数字起始的pem移动到certs_by_serial
  3. .crt移动到issued
  4. .keys移动到private目录。
  5. 证书请求文件**.csr更名为.req**后移动到reqs目录。

bash版

#migrate.sh
keys="etc/openvpn/easy-rsa/keys"
rsapath="/etc/openvpn/pki" #指定新证书目录
#复制keys到pki
cp -r $keys $rsapath
#创建目录
mkdir ${rsapath}/{cert_by_serial,issued,private,reqs}
#找到数字开头的pem,移动到cert_by_serial
find $rsapath -maxdepth 1 -regex ".*./[0-9]+.pem"| xargs -I {} mv {} $rsapath/cert_by_serial/
#移动证书和秘钥
mv $rsapath/*.key $rsapath/private
mv $rsapath/*.crt $rsapath/issued
#重命名并移动请求文件
ls $rsapath/*.csr|xargs -I {} basename {} .csr|xargs -I {} mv $rsapath/{}.csr $rsapath/reqs

这里有个小问题是,证书列表的格式似乎有点小区别,结构上整体应该是一致的,2.x中第四列证书序列号是01,02的序列,而3.x应该是md5计算的证书摘要信息。

看起来似乎很简单,不得不说bash是在是一个有点恶心的东西,如果是python的话,虽然可能会长很多,但是至少能看得懂

python版

import os,shutil,re

#按照自己的需要指定原始目录和目标目录
keys = /etc/openvpn/easyrsa/keys
pki = /etc/openvpn/pki 

#复制文件到pki
shutil.copytree(keys,pki)
#创建目录
dirs = ["cert_by_seria","issued","private","reqs"]
for i in dirs:
    os.mkdir(os.path.join(pki,i))

pem = re.compile("^\d+\.pem$")
for i in os.listdir(pki):
    filename = os.path.join(pki,i)
    #根据文件后缀类型移动到对应目录
    if os.path.isfile(filename):
        if pem.match(i):
            shutil.move(filename,os.path.join(pki,"cert_by_seria",i))
        if i.endswith("crt"):
            shutil.move(filename,os.path.join(pki,"issued",i))
        if i.endswith("key"):
            shutil.move(filename,os.path.join(pki,"private",i))
        if i.endswith("csr"):
            newname=i[:-3]+"req"
            shutil.move(filename,os.path.join(pki,'reqs',newname))


            
    

#下一步 找个机会跑起来验证下

转载于:https://my.oschina.net/mhyes/blog/879438

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值