PKI架构的简介,如何使用OPENSSL完成加密与解密,如何自建CA完成证书的签署

简介:

        PKI(Public Key Infrastructure ) 即"公钥基础设施",是一种遵循既定标准的密钥管理平台,它能够为所有网络应用提供加密和数字签名等密码服务及所必需的密钥和证书管理体系。

        认证中心CA 作为PKI 的核心部分,CA 实现了PKI 中一些很重要的功能,概括地说,认证中心(CA)的功能有:证书发放、证书更新、证书撤销和证书验证。CA 的核心功能就是发放和管理数字证书,具体描述如下: 
(1)接收验证最终用户数字证书的申请。 
(2)确定是否接受最终用户数字证书的申请-证书的审批。 
(3)向申请者颁发、拒绝颁发数字证书-证书的发放。 
(4)接收、处理最终用户的数字证书更新请求-证书的更新。 
(5)接收最终用户数字证书的查询、撤销。 
(6)产生和发布证书废止列表(CRL)。 
(7)数字证书的归档。 
(8)密钥归档。 
(9)历史数据归档。

wKioL1N9mQPjRjI4AAMOfsN60PE465.jpg

我们先来看看如何使用OPENSSL对数据进行加密与解密:

openssl enc -ciphername(算法名称)

    -in filename

        the input filename, standard input by default. 输入文件名,标准的默认输入。

    -out filename

        the output filename, standard output by default. 输出文件名,标准的默认输出。

    -e 

        encrypt the input data: this is the default. 默认加密输入的数据。

    -d

        decrypt the input data. 解密输入的数据。

现在我们对/tmp下的fstab文件进行加密:

# openssl idea-ofb -in fstab -e -out fstab.secret

这样就对文件完成加密了,目录下是不是多了一个fstab.secret这个就是加密后的文件。

wKioL1N9qOGxYqNGAAD1TMGA0ZM508.jpg

我们看看加密文件的内容:

# cat fstab.secret

全身乱码看不懂吧,这时我们把源文件fstab删除掉,这样就很好的起到了保密工作。

# rm -f fstab

wKioL1N9qXTyYYMgAAMgc2oHLTk306.jpg

现在我们用这个加密的文件,把我们源文件给还原回来。

# openssl idea-ofb -in fstab.secret -d -out fstab

文件回来了吧,而且内容也正常。

wKiom1N9q7rjABpDAAL3sDIkv1c350.jpg


其他扩展的openssl命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
openssl: 
     # openssl version
     
     # 加密文件
      openssl enc -des3 - in  /path/to/somefile  -e -out  /path/to/somefile .des3
     # 解密文件 
      openssl enc -des3 - in  /path/to/somefile .des3 -d -out  /path/to/somefile
 
     # 一致性校验
      openssl dgst -md5 -hex  /path/to/somefile
      md5sum 
         
         # 评估加密算法的加密速度 
      openssl speed 
 
         # 加密密码  -salt 参数是在加密前给密码加上其他字符一并加密
      man  sslpasswd
      openssl  passwd  -1 -salt 
 
     # 生成随机密码
      openssl rand -base64 num
      openssl rand -hex num


如何使用openssl生成一个私钥:

openssl genrsa -out filename [字符位数]

        generate an RSA private key  生成一个RSA 私钥。

我们现在来生成一个2048位的私钥:

# openssl genrsa -out mytckey 2048

# chmod 600 mytckey

私钥是不能随便让人看的,所以改下权限,除了自己,所有人都不能看。

wKioL1N9s4rCUfukAAD8svxASso680.jpg

提取公钥:

# openssl rsa -in mytckey  -pubout

wKiom1N9tnuhYwiRAAImn3P93eM107.jpg

制作一个证书的签署请求命令介绍:

openssl

    req

        PKCS#10 X.509 Certificate Signing Request (CSR) Management. 证书签署请求管理。

    -new

        this option generates a new certificate request. 这个选项是生成一个新证书的请求。

    -key

        This specifies the file to read the private key from. It also accepts PKCS#8 format private keys for PEM format files.  这是指定读取的私钥在哪,也支持PKCS#8格式的私钥,PEM格式的文件。

    -out

        This specifies the output filename to write to or standard output by default  指定输出文件名

开始制作:

# openssl req -new -key mytckey  -out myreq.csr

接下来要输入所在国家,省份,城市,部门等信息。

这就创建好了一个证书的签署请求。

wKioL1N_ENngQkdjAANDnGJsDCM137.jpg

CA才可以签署证书

所以我们现在来看下,如何自建CA。

openssl配置文件CA的部分配置:

wKiom1OBa5zAXAZuAAQVvPFxgEI878.jpg

# cd /etc/pki/CA/

1、为CA生成一个私钥:

# (umask 077; openssl genrsa -out private/cakey.pem 4096)

wKioL1N_FFqDPba0AAO8QspF-DU172.jpg

 # openssl req -new -x509 -key private/cakey.pem  -out cacert.pem -days 3656 

自签证书

# touch serial index.txt

# echo 01 > serial

创建签证数据库文件,和序列号文件,并且给serial一个初始序列。

CA自建好了,现在可以给别人签证了。

wKioL1OBdt_Bh4kbAAJWslW1iSY754.jpg

我们先来签一个刚刚我们刚刚做好的请求

# openssl ca -in myreq.csr  -out mycert.crt -days 3655

这就给别人签好了一张证书。

wKioL1OBltrCMxcgAAKOiVgkzLM076.jpg

 接下来,我们在脚本里实现自建CA和签署证书的操作:

以下是小菜写的脚本:

wKiom1OCGQ3wXYukAAPwcvuiDbY374.jpg

这一块内容完成,有问题欢迎与我交流QQ1183710107。

 

 



本文转自qw87112 51CTO博客,原文链接:http://blog.51cto.com/tchuairen/1415425

相关文章
|
6月前
|
监控 负载均衡 测试技术
服务网格简介:探索现代微服务架构中的服务网格概念和价值
服务网格简介:探索现代微服务架构中的服务网格概念和价值
106 0
|
6月前
|
小程序 安全 网络安全
申请免费 SSL 证书为您的小程序加密通信
申请免费 SSL 证书为您的小程序加密通信
137 0
|
7月前
|
存储 人工智能 Serverless
微服务和 Serverless 架构-函数计算 FC 简介及应用场景
微服务和 Serverless 架构-函数计算 FC 简介及应用场景
739 0
微服务和 Serverless 架构-函数计算 FC 简介及应用场景
|
1月前
|
消息中间件 存储 SQL
Flume【基础知识 01】简介 + 基本架构及核心概念 + 架构模式 + Agent内部原理 + 配置格式(一篇即可入门Flume)
【2月更文挑战第18天】Flume【基础知识 01】简介 + 基本架构及核心概念 + 架构模式 + Agent内部原理 + 配置格式(一篇即可入门Flume)
471 0
|
1月前
|
分布式计算 API 数据处理
Flink【基础知识 01】(简介+核心架构+分层API+集群架构+应用场景+特点优势)(一篇即可大概了解flink)
【2月更文挑战第15天】Flink【基础知识 01】(简介+核心架构+分层API+集群架构+应用场景+特点优势)(一篇即可大概了解flink)
60 1
|
2月前
|
边缘计算 Kubernetes 物联网
大规模 IoT 边缘容器集群管理的几种架构 -0- 边缘容器及架构简介
大规模 IoT 边缘容器集群管理的几种架构 -0- 边缘容器及架构简介
|
2月前
|
存储 消息中间件 API
|
4月前
|
SQL 关系型数据库 MySQL
Presto【基础 01】简介+架构+数据源+数据模型+特点(一篇即可入门支持到PB字节的分布式SQL查询引擎Presto)
Presto【基础 01】简介+架构+数据源+数据模型+特点(一篇即可入门支持到PB字节的分布式SQL查询引擎Presto)
56 0
|
5月前
|
安全 数据安全/隐私保护
使用openssl 模拟ca进行证书的申请和颁发,并使用证书部署网站的安全连接访问,即https的加密通信
使用openssl 模拟ca进行证书的申请和颁发,并使用证书部署网站的安全连接访问,即https的加密通信
46 0
|
5月前
|
存储 算法 安全
20.5 OpenSSL 套接字RSA加密传输
RSA算法同样可以用于加密传输,但此类加密算法虽然非常安全,但通常不会用于大量的数据传输,这是因为`RSA`算法加解密过程涉及大量的数学运算,尤其是模幂运算(即计算大数的幂模运算),这些运算对于计算机而言是十分耗时。其次在`RSA`算法中,加密数据的长度不能超过密钥长度减去一定的填充长度。一般情况下,当RSA密钥长度为`1024`位时,可以加密长度为`128`字节,密钥长度为`2048`位时,可以加密长度为`245`字节;当密钥长度为`3072`位时,可以加密长度为`371`字节。因此,如果需要加密的数据长度超过了密钥长度允许的范围,可以采用分段加密的方法。我们可以将数据包切割为每个`128`
33 1
20.5 OpenSSL 套接字RSA加密传输