01-PKI及使用Openssl自建CA

Hyperledger Fabric的账户体系是建立在PKI之上的MSP,因此,在学习之前,需要先对这个体系进行了解,才能深入的明白MSP是如何保证组织/节点和用户之间的互信通信的。

PKI是Public Key Infrastructure的首字母缩写,翻译过来就是公钥基础设施;PKI是一种遵循标准的利用公钥加密技术为电子商务的开展提供一套安全基础平台的技术和规范。

PKI相关的概念可以在基于PKI的CA认证中心的设计与实现的第二章进行快速的了解;或者阅读5分钟让你知道什么是PKI进行一个简要了解。本节的目的是使用openssl工具自己建设一个CA,可以对客户端生成的密钥对进行签名,为其发放证书。

安装openssl

ubuntu下安装openssl的方法很简单,只需要执行下面两个命令:

sudo apt-get install openssl 
sudo apt-get install libssl-dev
# 验证是否安装成功
openssl -v

创建CA根证书

在PKI体系下,CA在发放证书之前,需要先创建一个自己的CA根证书。

我们先创建一个文件夹openssl,里面有两个子文件夹caclient,分别保存ca和client的相关密钥和证书文件。创建CA根证书的操作都是在ca目录下完成的。

1.生成私钥

cd ca
openssl genrsa -out private.key 2048

上面的命令在ca文件夹生成了一个private.key的文件,里面保存了我们指定的2048位的rsa私钥,由于openssl的私钥保存了足够的信息(RSA原理),可以推导出其对应的公钥,具体的导出也有相应的命令。

2.自签名

在PKI体系中,CA的签名可以自签名或从父CA获取,这取决于设计的架构。在本例中,我们使用自签名的方式创建CA的根证书

openssl req -new -x509 -key private.key -out root.crt

上面的命令会根据私钥生成一个自己签名的证书root.crt

有了证书之后,我们可以使用下面的命令查看证书信息

openssl x509 -in root.crt -text | less

3.初始化证书库

对于CA来说,需要记录其已经发放的证书,因此需要先初始化相关的文件,在ubuntu中,openssl的配置文件在/usr/lib/ssl/openssl.cnf中,内有一个属性dir是CA保存证书记录的地方,我们可以修改这个地址,之后执行下面的命令:

# 进入cnf中的dir文件夹,创建文件
cd `dir`
ouch index.txt && touch serial && echo 01 > serial

客户端向CA请求证书

客户端相关的操作都在client目录中处理

1.生成密钥
与上面的操作类似,先生成私钥文件

openssl genrsa -out private.key 1024

2.创建证书请求文件

根据私钥文件,生成证书请求文件CSR,CSR中一般会包含请求者的公钥,这里的请求者就是客户端,由于客户端的私钥文件可推导出公钥,再加上下面的命令执行时要求输入的组织信息,就可以生成CSR了。

openssl req -new -out client.csr -key private.key

查看CSR文件信息

openssl req -in client.csr -text | less

3.从CA获取证书

由于CA相关的数据在ca文件夹,我们先切换到ca中,然后对csr文件进行处理,生产发放给客户端的证书

cd ../ca
openssl ca -in ../client/client.csr -out ../client/client.crt -days 365 -keyfile private.key -cert root.crt

ca命令可以用来发放证书,-in指定了输入的csr文件,-out是发放给客户端的证书 -keyfile是ca的根证书私钥文件,-cert是CA的根证书

至此,我们完成了客户端证书的发放,发放完成后,需要对客户端证书和CA的根证书进行验证

校验证书

openssl verify -CAfile ca1/root.crt client/client.crt

如果返回OK,说明证书校验成功。

client/client.crt: OK

客户端A有了自己的证书之后,就可以在通信时将自己的证书发送给客户端B,客户端B拿到证书后,与CA的根证书进行校验,通过后可以从证书中提取客户端A的公钥,然后对要发送给A的数据进行加密,客户端A收到数据后,使用自己的私钥进行解密后就可以看到信息了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,408评论 4 371
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,690评论 2 307
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,036评论 0 255
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,726评论 0 221
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,123评论 3 296
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,037评论 1 225
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,178评论 2 318
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,964评论 0 213
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,703评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,863评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,333评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,658评论 3 263
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,374评论 3 244
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,195评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,988评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,167评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,970评论 2 279

推荐阅读更多精彩内容

  • CA和证书安全协议(SSL/TLS)OpenSSH 一、CA和证书 (一) PKI(Public Key Infr...
    哈喽别样阅读 1,359评论 0 0
  • SSL(Secure Socket Layer,安全套接字层)是为网络通信提供安全保障和数据完整性的一种安全协议,...
    CHUANHAI阅读 1,722评论 0 7
  • 出口 OUTLET 某种程度上,每个人都口吃。嘴是人表达的出口,我们可以通过嘴来歌唱,说话,嚎叫,哭喊……用各种方...
    城厢故事阅读 232评论 0 1
  • 本是乡绅喜读书,骑士小说赴征途。 古道西风骑瘦马,忠厚桑丘随僮仆。 风车大战意自骄,敢将宝剑舞旋刀。 可怜可笑无聊...
    d03e056874dc阅读 273评论 0 0
  • 跟女友在一起三年了,经历了很多事情,感情没有了刚开始的激情与刺激,慢慢变得平凡,少了几分争吵,多了几分忍让,少了几...
    迷茫中的收获阅读 188评论 0 0