由博主的上一篇博文《网络中数据如何保证数据的安全性?》中介绍得知,CA 具有注册和颁发证书的功能? 但是,证书到底具有哪些信息或者遵循哪些标准呢? 此次博客从这里开始介绍。

一、证书制作的标准

目前使用最广泛的是由 ITU-T 组织定义了证书的制作规范 x509。主要定义了证书结构和认证协议标准。是基于公钥密码体制和数字签名的服务。

在电子商务中,IP,SSL/TLS,S/MIME中都使用了 x509 标准。到目前为止已经有三版了,最新版的 x509 标准定义的证书格式是:

字段说明:

  • 版本号:说明证书采用x509的版本

  • 证书序列号:原来标明证书的个数,每发一个证书序列号就会加1

  • 算法参数:签名算法

  • 发行者名称:CA 的名称

  • 有效日期:证书的有效期

  • 主体名称:证书拥有者的名称,可能是用户名或主机名。

  • 公钥:申请者提供的公钥

  • 发行者ID:CA 的编号

  • 主题ID: 拥有者的编号,CA 的生成

  • 附加信息:其他附加请求

  • CA的签名:CA 签名信息

二、SSL/TLS

SSL(Secure Socket Layer/Transport Layer Security),是一种安全协议。

SSL是应用层与传输层之间的协议,有 sslv1,sslv2,sslv3版本。TLS是仿照SSL的功能,tlsv1等价于sslv3。应用程序如果使用SSL的功能话,需要调用 SSL 的公共库。

以 web 服务访问为例,ssl会话建立的过程大致如下:

三、OpenSSL项目

OpenSSL是一个开源项目,实现了数据的加密解密,证书认证等功能。主要有 3 部分组成:

  • openssl:提供 openssl 命令行工具

  • libssl: 实现 ssl 协议

  • libcrypto: 公共加密库,里面实现了好多的加密算法

openssl命令的使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# 示例
# 查看版本号
[root@centos6-5 ~]# openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
# 利用 MD5 算法生成用户密码
[root@server ~]# openssl passwd -1 -salt `openssl rand -hex 4` 
Password: 
$1$8da8005e$3rBnudq4DtUPDtB5oX/AQ0
# 提取特征码,实现单向加密
[root@centos6-5 ~]# openssl dgst -md5 /etc/passwd
MD5(/etc/passwd)= a957b39dff384602a7048b758a046695
[root@centos6-5 ~]# openssl dgst -out ./md5-passwd -md5 /etc/passwd
[root@centos6-5 ~]# cat ./md5-passwd 
MD5(/etc/passwd)= a957b39dff384602a7048b758a046695
# 实现对称加密
# -a 是基于 base64 编码,-e 加密 
[root@centos6-5 ~]# openssl enc -des3 -e -a -salt -in ./md5-passwd -out ./md5-passwd.enc
enter des-ede3-cbc encryption password:
Verifying - enter des-ede3-cbc encryption password:
[root@centos6-5 ~]# cat ./md5-passwd.enc 
U2FsdGVkX1/1B23N1i5DH5fmBVX1vHMG6ko2yBtt0XchzRExE1z8RaCR5NU98w5q
vYITDKLWWzL4ilW1aSlnq3fAVLS6cI9b
# 解密查看
# -d 解密 diff命令查看俩个文件的差异
[root@centos6-5 ~]# openssl enc -des3 -d -a -salt -in ./md5-passwd.enc -out ./md5-passwd2
enter des-ede3-cbc decryption password:
[root@centos6-5 ~]# diff ./md5-passwd ./md5-passwd2
# 生成秘钥
[root@centos6-5 ~]# (umask 077;openssl genrsa -out /root/mykey 1024)
Generating RSA private key, 1024 bit long modulus
..........++++++
...................++++++
e is 65537 (0x10001)
[root@centos6-5 ~]# cat /root/mykey 
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQC6DEaXhrKwnB0JM7VvLFV1TxQmXFjEKIxoDUugBeCZ1mWt1FEL
pi7hiN2u3BGBwrbwKAZj8I55Z6pGSXEcKmMMTf1vbUopO9tUknV7nfIGjQeBzwqB
hPK9+gj4xK/LvLr/FM8+WcxXW04FFNNW8WGz7uwUgKbW6XtsjMXbVLuVpwIDAQAB
AoGAVp+0loSe2mA1nL04suSffZkuNpY0tlBy31ehaIaUBsyuVvtOKPBdT6FcJjhM
5m/0oWjhYNL2Y0yDGWrEgWqy5pJlbCT7Pow9w0gvoMT+tVzIwXJ4Cz7eL12X+8vk
x6IfNAS0YWHlSF/ZzX3WviYy/77fD8qRaqZj4oy0HwjB4LECQQDiQvuyjJQDrNzy
2TQB20tSIBtZXz4AKlh23At6Emv+EeSiOT12/Juxn2gIDgCuPMiE6WUTr/0TKeDn
djAzu1uDAkEA0oA5SL93UsHTeSDPe3l1A3KdfC7/38f1VCHS/+Ab2T+g0OpI2X5R
dTZLo+pvkvyZhBhooyrsXO71vE9RfLVQDQJBAKORrQgNHMvzYd+mKjTVZgQ+9caM
VfQkqMN0nE9pleyc3t5v5wFn6N5l0P1RsihEBOohGFM9PQVnlxF9nacoYSUCQAdR
7CwKdHTNRrRUnsJ1c8s95hoWbFF026QkVPkO6wj//HCnZQcjLGP+El1N3rlmzVPZ
oXHjITsOGD+HJpdGmtUCQFcXAjw8bQekrSzL7R+f4RgpCfuy749B+Hg9QZc0R79t
/d3dwHBm1fFFe6QEVI1ArL1I8uhlFCwDaZdfQhRz8Y4=
-----END RSA PRIVATE KEY-----
# 提取公钥
# -pubout 指定是公钥输出
[root@centos6-5 ~]# openssl rsa -in /root/mykey -out /root/mypub.key -pubout
writing RSA key
[root@centos6-5 ~]# cat /root/mypub.key 
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6DEaXhrKwnB0JM7VvLFV1TxQm
XFjEKIxoDUugBeCZ1mWt1FELpi7hiN2u3BGBwrbwKAZj8I55Z6pGSXEcKmMMTf1v
bUopO9tUknV7nfIGjQeBzwqBhPK9+gj4xK/LvLr/FM8+WcxXW04FFNNW8WGz7uwU
gKbW6XtsjMXbVLuVpwIDAQAB
-----END PUBLIC KEY-----

至此,openssl 的基本介绍和使用全部完成。对于如何建立 CA 服务器,签名证书,会在下一篇博客中介绍到。

本文转自 羊木狼 51CTO博客,原文链接:http://blog.51cto.com/guoting/1534974,如需转载请自行联系原作者

OpenSsl工具的介绍相关推荐

  1. 使用OpenSSL工具制作X.509证书的方法及其注意事项总结

    如何使用OpenSSL工具生成根证书与应用证书 // 生成顶级CA的公钥证书和私钥文件,有效期10年(RSA 1024bits,默认) openssl req -new -x509 -days 365 ...

  2. Docker编排工具Fig介绍

    本文讲的是Docker编排工具Fig介绍,[编者的话]Fig是一个基于Docker的用于快速搭建开发环境的工具,目前Fig团队已经加入Docker公司.Fig通过一个配置文件来管理多个Docker容器 ...

  3. Java XML解析工具 dom4j介绍及使用实例

    Java XML解析工具 dom4j介绍及使用实例 dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory ...

  4. python机器学习可视化工具Yellowbrick介绍及平行坐标图实战示例

    python机器学习可视化工具Yellowbrick介绍及平行坐标图实战示例 目录 python机器学习可视化工具Yellowbrick介绍及平行坐标图实战示例 yellowbrick简介及安装

  5. Windows系统内存分析工具的介绍

    Windows系统内存分析工具的介绍(进程管理器,资源管理器,性能监视器, VMMap, RamMap,PoolMon) 微软官方提供多种工具来分析Windows 的内存使用情况,除了系统自带的任务管 ...

  6. 10款屏幕取色器/颜色拾取工具软件介绍及下载地址[转]

    10款屏幕取色器/颜色拾取工具软件介绍及下载地址(附截图) 2009年12月07日 14:13 在做网页设计和程序界面的时候,看到比较喜欢的图片颜色,总是要拾取下来应用到自己的网页或图片的颜色中,但是 ...

  7. MySQL自带工具使用介绍

    MySQL自带工具使用介绍: 1)mysql命令:mysql命令事是使用最多的命令工具了,为用户提供了一个命令行接口来操作管理MySQL的服务器. 命令格式: Usage:mysql [OPTIONS ...

  8. Linux下压力测试工具Webbench介绍

    1 安装操作步骤: #tar zxvf webbench-1.5.tar.gz #cd webbench-1.5 #make && make install [root@localho ...

  9. [原创]Paros工具培训介绍

    [原创]Paros工具培训介绍 Paros Proxy工具介绍 Paros proxy是一个对Web应用程序的漏洞进行评估的代理程序,它支持动态地查看/编辑 HTTP/HTTPS信息,可以改变cook ...

最新文章

  1. python特性和属性_Python之属性、特性和修饰符
  2. android百度地图轨迹实现,android 获取GPS经纬度在百度地图上绘制轨迹
  3. 正多边形中心到各边的向量合
  4. LeetCode Excel Sheet Column Number(进制转换问题)
  5. android导航条高度修改,Android中修改TabLayout底部导航条Indicator长短的方法
  6. Jmeter基础(二)
  7. 《剑指offer》孩子们的游戏---约瑟夫问题
  8. javaweb学习总结(十四):JSP原理
  9. Memcached简介
  10. 编写Shell脚本(批处理,一次执行多条命令)
  11. 将二维数组名作为函数实参
  12. ROS 创建msg和srv 编写发布者和订阅者节点 编写服务端和客户端节点(python版本)
  13. centos8 ssh配置_JumpServer 堡垒机CentOS 8 安装部署(四)
  14. hex转换成C语言源程序吗,第6节:把.c源代码编译成.hex机器码的操作流程
  15. html标签--使用
  16. c语言- 负号运算符,C语言运算符盘点,C语言运算符知识点讲解
  17. 产业数字化转型升级案例:联合利华数字化供应链管理
  18. 串口线接法是什么 详细步骤介绍
  19. 微信公众号H5跳转小程序,wx-open-launch-weapp
  20. 爬取NBA球员生涯数据,并在Excel中可视化显示

热门文章

  1. css过度效果 从无到有,求教,对于CSS3 transition和transform实现的一个特效原理不是太明白?...
  2. python拼图游戏代码,OpenCV Python实现拼图小游戏
  3. emlog-FLY主题模板1.4版本免费完全开源
  4. [手把手教]discuzX2插件制作教程__最菜鸟级别的入门坎 【二】
  5. 0xff00是65208
  6. Sql Server 2005 row_number()分页性能测试
  7. magento block 程序中获取各种url及绝对路径的方法
  8. Google News优化技巧
  9. Python与数据库(2)Oracle
  10. 斗地主AI算法——第四章の权值定义