**加密解密基础、PKI及SSL、创建私有CA**

进程间通信

wKiom1m6RW2TaAlAAAAQWG--UQ4563.png


socket通信

客户端-->请求--> 路由转发 --> 服务端,取出资源 --> 封装为可响应给客户端的请求报文从接收请求端口发出

wKioL1m6RjKB-41mAABLq3OggfE129.png

wKioL1m6Rrby-lV-AACMTie_iDM553.png


SSL/TLS协议的实现 OpenSSL

OpenSSL程序组件

1
2
3
4
[root@localhost CA]# rpm -ql openssl 
/usr/lib/libcrypto.so.10  //加密解密库 (C,C++程序员调用的库)
/usr/lib/libssl.so.10    //ssl/tls实现 (C,C++程序员调用的库) HTTP --> HTTPS
/usr/bin/openssl        //命令行工具


SSL Secure Socket Layer 安全的套接字层

TLS Transfer Layer Secure  传输层安全

wKioL1nMZDajoNrTAAAy-E5_l6I201.png


SSL分层

1
2
3
4
用组件拼装而成的密码学协议软件(TLS, SSL)
标准算法组合成半成品
算法实现:AES-128-CBC-PKCS7
算法原语:AES(对称加密),RSA(非对称加密),MD5(单向加密)



NIST制定的安全标准:保密性、完整性、可用性

SOCKET通信模型中面临的风险:窃听、伪装、重放、消息篡改、拒绝服务

保证安全的手段(安全机制):加密、身份认证、访问控制、完整性校验、路由控制、公证

提供安全机制的服务:认证、访问控制、保密性、完整性、不可否认性

保证服务的安全(算法和协议):对称、非对称、单向、密钥交换

wKioL1m6SOPhiJBCAAAxLepL5OY922.png

wKioL1m6SNKxWhAPAABK7S4St_k923.png

wKiom1m6SP2QlrdYAAB2HouEZYQ322.png


wKioL1m6SVnzb1t7AAA_FZPY5kU310.png

wKiom1m6SYSSGUX_AAAqgrZ-wPY068.png


加密解密的基础原理

对称加密、非对称加密、单向加密、密钥交换

wKioL1m6TJOBA4n1AAB-GYkNdk4353.png

wKiom1m6TyHg8z44AACfXiKV0xM247.png

wKiom1m6UGSReRO7AABunbaw4Kk039.png

wKiom1m6UVnTBd7KAAAvN5XGtw8855.png

wKiom1m6UYmyM7u6AABblPy4SEE771.png


证书颁发机构CA、证书的作用

wKioL1nDbq2AoMUcAAAYeU3VQjs641.png


PKI

wKiom1m6UfDDO03gAAArzsWOzys930.png


证书的规范

wKioL1m6UkaB0Mm-AABOrfeMfhU781.png

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
# openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -text -subject -serial
Certificate:
    Data:
        Version: 3 (0x2)    //版本号
        Serial Number1 (0x1//序列号(每个从的惟一标识)
    Signature Algorithm: sha1WithRSAEncryption   //签名算法ID
        Issuer: C=CD, ST=CD, L=ChengDu           //CA名称
                                                 //证书有效期
            Not Before: Sep 21 07:16:20 2017 GMT
            Not After : Sep 21 07:16:20 2018 GMT
        Subject: C=CD, ST=CD, O=MageEdu,        //主体名称(主机名)
        Subject Public Key Info:                //主体公钥
                Modulus:
                    00:eb:bd:58:2d:05:54:49:6d:ac:42:98:ee:cb:fb:
                    ec:62:20:e1:1e:e4:64:ef:a3:0f:23:17:5b:fb:66:
                    6d:a9:ce:81:c3:53:b5:f8:d9:87:da:c5:f3:2d:77:
                    f2:de:3b:ed:92:81:a5:6c:73:f6:83:3c:c2:e5:71:
                    49:02:02:ae:45:d0:e0:45:f2:41:34:f8:25:87:41:
                    82:aa:27:e2:17:ca:fc:74:f3:50:98:b0:6c:b0:26:
                    8b:a5:0d:a7:ca:4b:f5:72:f9:44:87:8b:15:51:ea:
                    9a:84:6d:22:aa:fe:84:62:5a:59:33:c3:ff:29:51:
                    a9:1a:56:c3:63:22:9a:6d:2c:65:10:a0:57:78:c2:
                    aa:70:3d:32:eb:59:dc:f7:a9:0c:ea:e5:8e:29:1c:
                    2f:27:0d:53:87:e1:2b:eb:fe:f8:8f:61:8f:86:ab:
                    f1:9c:ee:29:11:c1:71:ca:41:24:3e:1d:e1:3c:84:
                    60:8a:d8:4d:ad:4c:b2:ca:8f:25:29:8a:11:1a:6f:
                    1c:03:88:4a:66:99:73:34:7d:76:da:85:77:da:65:
                    3a:e5:d3:ca:58:9f:8c:3a:3b:d5:e2:9e:77:1e:b2:
                    f3:c8:5a:b6:2d:2b:68:71:20:9f:94:41:0c:4b:2f:
                    93:f5:11:4c:89:9e:d9:48:ac:de:62:d9:5e:16:73:
                    5d:39
                Exponent: 65537 (0x10001)
        X509v3 extensions:          //扩展信息
            X509v3 Subject Key Identifier:   //发行者的惟一标识
                C5:AE:93:32:58:BC:DC:F4:97:E5:D7:52:15:37:11:4D:ED:4C:B1:8E
            X509v3 Authority Key Identifier:  //主体的惟一标识
                keyid:D4:F7:60:6F:E8:F4:2D:A6:F7:5D:09:55:D2:5D:56:DE:1F:93:91:33
    Signature Algorithm: sha1WithRSAEncryption     //发行者签名,签名算法
         3c:90:f8:cf:d6:91:36:ab:4b:12:27:22:78:85:7f:32:15:4e:
         ac:60:30:63:65:fe:91:be:1b:e5:22:65:34:4d:f0:b2:2c:d9:
         43:38:b9:76:1e:10:ca:27:ab:e9:db:00:bd:d9:87:96:b5:a9:
         ee:34:34:01:05:88:fc:59:ef:1d:9b:3f:8e:49:fa:e8:c9:54:
         15:d0:63:14:7d:51:e9:c8:8c:50:77:81:5c:f2:56:f8:c2:ba:
         16:46:cc:7f:e2:72:27:56:4e:a7:c4:2c:b4:64:44:9a:84:bc:
         b2:19:5e:dd:3c:20:1c:a9:8c:93:ae:94:e4:8d:8e:d1:b7:47:
         3a:c5:f6:df:42:6f:d9:66:d8:25:97:03:94:01:60:f5:a7:60:
         c3:33:55:c3:cb:12:f8:14:1e:df:17:00:26:49:ce:74:fc:8f:
         56:16:10:b3:16:6e:09:06:8c:8f:84:e9:ec:e2:84:06:82:ac:
         27:8d:c5:f6:83:d8:3d:8d:de:d9:3e:e7:ae:15:41:a9:8d:42:
         e9:9d:8d:b8:d7:29:47:21:45:3c:39:49:7a:96:31:bb:95:93:
         7b:1b:29:07:dc:fe:ad:7c:f0:28:c5:cb:b5:65:8f:1f:7e:60:
         a3:86:50:9f:c3:da:53:1f:6b:ec:ab:7c:1a:7e:39:40:37:23:
         83:17:39:54
subject= /C=CD/ST=CD/O=MageEdu/OU=Ops/CN=www.magedu.com/emailAddress=lccnx.foxmail.com
serial=01
1、找到CA名,和签名算法 
2、找到信任机构的CA证书
3、用证书中的公钥解密加密的数字签名     //身份认证
4、用相同的签名算法对证书提取特征码     //完整性检验
5、比对特征码是否相同


基于公钥加密通信机制

wKiom1m6UufSygJOAABJldsH0zw273.png

SSL Hand shark: 一个IP地址只能建立一个SSL会话

wKiom1m6VJGyeIGoAAAy0IRiq0U953.png


openssl工具使用

wKioL1m6VMfgHOcqAAAMgKFYM_I006.png

wKioL1m6VUqQECx8AAAmpTpQZqQ526.png

wKioL1m6VUrxq50_AAAdhBiTddg916.png

wKioL1m6VUvzi_lwAAAdAQIF3uc493.png


对称加密

wKiom1m6Vp2hTWRRAAA00llInOw632.png

使用示例

1
2
3
4
5
6
7
8
9
使用示例:
1、创建临时文件
# mktemp -p /tmp lcc.XXXX
/tmp/lcc.hFdo
2、加密
    # openssl enc -e -seed-cfb -a -salt -in lcc.hFdo -out lcc.ciphertext
3、解密
    # openssl enc -d -seed-cfb -a -salt -in lcc.ciphertext -out lcc.txt

单向加密

wKiom1m6WJOR9kzYAABkFPWGr5M994.png使用示例

1
2
3
4
5
# sha1sum lcc.txt 
5448d7dc19288c6ee87a25d4e2e990f72d786971  lcc.txt
# openssl dgst -sha1 -hex lcc.txt 
SHA1(lcc.txt)= 5448d7dc19288c6ee87a25d4e2e990f72d786971


生成用户密码

wKiom1m6WTaDCLCpAAAc8BFJrPo226.png

使用示例

1
2
# openssl passwd -1 -salt $(openssl rand -hex 4
# openssl passwd -1 -salt $(openssl rand -hex 4123


生成随机数

wKioL1m6WbyA9s-cAAAegW9iUB8236.png

使用示例

1
2
# openssl rand -hex 4      (8位)
# openssl rand -base64 16 | tr -d '='


生成密钥对

wKioL1m6WtDjQs8yAAA56vqJWM4956.png

wKiom1m6XFCAMmn2AABBclt0Ncg359.png

使用示例

# openssl genrsa  -out lcc.private 1024

# openssl  rsa  -in lcc.private -out lcc.pubkey -pubout


私有网络安全通信的实现方案

构建私有CA

1
2
3
4
5
6
#  echo "01" > /etc/pki/CA/serial        //必须为01,否则签发不了
#  touch /etc/pki/CA/index.txt
# cd /etc/pki/CA
# (umask 077;openssl genrsa -out private/cakey.pem 1024)
# openssl req -new -x509 -key  private/cakey.pem -out cacert.pem -days 7300

申请请求

1
2
3
4
5
# install -d /etc/httpd/ssl
# cd /etc/httpd/ssl
# (umask 077;openssl genrsa -out httpd.key 1024)
# openssl req -new -key httpd.key -out httpd.csr -days 365


传给CA

CA所在的主机必须有软件能得以实现SSH协议<dropbear, telnet, openssh-server>,才能使用客户端工具<scp, sftp, ssh>

1
# scp -P 9999 /etc/httpd/ssl/httpd.csr root@192.168.80.129


CA验证

CA签发

1
# openssl ca -in /tmp/httpd.csr -out /tmp/httpd.crt -days 365


从证书存取库中获取证书

1
# scp -P 9999 root@192.168.80.129:/etc/pki/CA/certs/httpd.crt /etc/httpd/ssl/


验证证书

1
2
3
# openssl x509 -in certs/httpd.crt -noout -serial -subject
serial=01
subject= /C=CD/ST=CD/O=MageEdu/OU=Ops/CN=www.magedu.com/emailAddress=lccnx.foxmail.com


在客户端进行吊销证书

1、获取serial

1
# openssl x509 -in /etc/httpd/ssl/httpd.crt -noout -serial -subject


2、在CA,index.txt中查看serial与客户端是否相同

吊销

1
2
3
4
# openssl ca -revoke newcerts/01.pem 
Using configuration from /etc/pki/tls/openssl.cnf
Revoking Certificate 01.
Data Base Updated


3、生成吊销证书编号

1
# echo "01" > /etc/pki/CA/crlnumber


4、更新吊销列表 

1
2
# openssl ca -gencrl -out thisca.crl
Using configuration from /etc/pki/tls/openssl.cnf


5、查看crl文件

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
# openssl crl -in thisca.crl -noout -text
Certificate Revocation List (CRL):
        Version 2 (0x1)        //版本号
    Signature Algorithm: sha1WithRSAEncryption       //签名算法
        Issuer: /C=CD/ST=CD/L=ChengDu/O=MageEdu/OU=Ops/CN=ca.magedu.com/emailAddress=lccnx@foxmail.com
        Last Update: Sep 21 08:14:35 2017 GMT 有效期
        Next Update: Oct 21 08:14:35 2017 GMT
        CRL extensions:    扩展信息
            X509v3 CRL Number:  吊销号码
                1
Revoked Certificates:
    Serial Number01
        Revocation Date: Sep 21 08:12:49 2017 GMT
    Signature Algorithm: sha1WithRSAEncryption
         5d:9e:a2:60:e3:78:9d:24:42:92:b6:72:81:92:43:d7:02:12:
         54:f0:8e:08:21:d8:55:34:1c:70:53:8d:ac:bd:44:15:37:30:
         ba:ef:d2:79:24:52:83:a1:bb:39:70:af:93:10:64:06:b6:e6:
         76:fd:12:cf:b5:f7:07:16:c6:cd:08:a9:46:d3:76:64:24:93:
         7d:b4:5a:6d:da:38:08:31:7b:6e:76:a6:4e:5a:c2:cc:e6:24:
         be:76:b9:38:46:ed:c7:16:61:88:8c:ac:90:bd:4e:c9:9d:e5:
         73:8a:76:c4:57:82:80:29:06:c8:81:cd:7b:37:08:ee:81:25:
         d6:04:8e:dd:dd:d8:1b:47:44:e4:bb:bc:3c:7f:cb:97:68:27:
         b0:32:ea:fb:d1:84:91:7e:50:05:14:0a:1d:65:2a:5e:ba:41:
         1d:dd:a4:39:e5:d2:b5:2b:33:b0:56:b3:78:cc:99:69:c9:89:
         0e:a0:71:f1:5f:ca:40:57:73:72:4d:f0:3d:ea:57:d7:53:6d:
         90:ca:59:57:65:1b:ec:b5:4d:6f:7e:41:64:c1:c6:d4:ab:b1:
         01:b5:a3:e3:67:0c:59:c9:bc:e6:6c:d1:ae:20:05:3f:85:87:
         32:f8:bf:3c:9a:ba:e8:c2:e9:fd:e8:b8:54:92:86:45:95:ca:
         c3:53:13:41









本文转自 lccnx 51CTO博客,原文链接:http://blog.51cto.com/sonlich/1965404,如需转载请自行联系原作者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/392976.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5.3 上午

观看英语课程——《恋练有词》 学习Linux 转载于:https://www.cnblogs.com/bgd140206110/p/6801164.html

mysql索引随记

为什么80%的码农都做不了架构师&#xff1f;>>> 先了解下Btree&#xff1a;https://my.oschina.net/u/3646190/blog/1593094 为什么每个数据项&#xff0c;即索引字段要尽量的小&#xff0c;比如int占4字节&#xff0c;要比bigint8字节少一半&#xff1f; 通过上面…

c语言写桌面程序unity,Unity和iOS原生界面交互示例

注意上面的Main方法中出现的UnityAppController&#xff0c;该类就是作为控制类来实现Unity在iOS上显示的功能&#xff0c;在Main方法中就是将该控制器作为参数传递&#xff0c;即Main方法之后就会进入该类执行。所以这是我们进入到UnityAppController.mm&#xff0c;来查看该类…

浏览器中插入富文本编辑器

常用的富文本编辑器有CKEditor、UEEditor、TinyEditor、KindEditor等、以下以kindeditor编辑器的使用为例。 1.官网下载KindEditor编辑器http://kindeditor.net/down.php&#xff0c; 当前最新版本为4.1.11&#xff0c;解压缩后放入项目的static目录&#xff0c;作为js插件引用…

获取Extjs文本域中的内容

经常在Ext.select()和Ext.query()等问题上纠结&#xff0c;今天终于有了点新认识&#xff1a; 需求&#xff0c;假设我们的页面上有个panel ,其id为clusterstab_edit_details,这个panel的内部有个textarea,这个textarea的name为editDetails_Description,那么我们有多少方法可以…

Asp.NetCoreWebApi - RESTful Api

REST 常用http动词 WebApi 在 Asp.NetCore 中的实现3.1. 创建WebApi项目.3.2. 集成Entity Framework Core操作Mysql 3.2.1. 安装相关的包(为Xxxx.Infrastructure项目安装)3.2.2. 建立Entity和Context3.2.3. ConfigureService中注入EF服务3.2.4. 迁移数据库3.2.5. 数据库迁移结果…

android动画影子效果,Android TV常用动画的效果,View选中变大且有阴影(手机也能用)...

因为电视屏幕比较大&#xff0c;而我们看电视时距离电视有一定距离&#xff0c;这样就需要动画效果比较明显&#xff0c;这个动画就是应用最广泛的&#xff0c;因为很酷&#xff0c;呵呵&#xff0c;你懂得&#xff0c;看了就知道。效果如下图&#xff1a;public class MainAct…

linux 高可用----keepalived+lvs

什么是高可用&#xff1f; HA&#xff08;high availability&#xff09;即高可用性&#xff1b;就是在高可用集群中发生单点故障时&#xff0c;能够自动转移资源并切换服务&#xff0c;以保证服务一直在线的机制。 LVS LVS&#xff1a;&#xff08;linux virtual server&#…

用户配置相关文件

用户配置相关文件小总结 /etc/passwd 记录用户相关的信息 /etc/shadow 密码影子文件 /etc/group 记录用户组相关的信息 /etc/gshadow 密码影子文件&#xff08;组密码&#xff09; /etc/passwd 文件中各段的内容 第1段&#xff1a;用户名 第…

华为5c android n风格,华为荣耀畅玩5C的屏幕怎么样

华为荣耀畅玩5C的屏幕怎么样屏幕方面&#xff0c;华为荣耀畅玩5C采用了5.2英寸1080P级别GFF贴合屏幕&#xff0c;塑料边框采用了弧面状的设计&#xff0c;握感比较舒适。华为荣耀畅玩5C采用了双主天线的设计&#xff0c;分别在上下的塑料区域。此外&#xff0c;边框以及后盖的上…

spring解析配置文件(三)

一、从XmlBeanDefinitionReader的registerBeanDefinitions&#xff08;doc,resource&#xff09;开始 1 protected int doLoadBeanDefinitions(InputSource inputSource, Resource resource) 2 throws BeanDefinitionStoreException { 3 try { 4 …

使用kibana和elasticsearch日志实时绘制图表

前言&#xff1a; 此文接的是上篇&#xff0c;上次的内容是&#xff0c;用python操作elasticsearch存储&#xff0c;实现数据的插入和查询。 估计有些人一看我的标题&#xff0c;以为肯定是 logstash kibana elasticsearch的组合。这三个家伙也确实总是勾搭在一块。 其实logst…

android 网络调试 源代码,Android源代码调试环境搭建

我们在调试Android应用程序的时候&#xff0c;有时候遇到一些莫名其妙的问题&#xff0c;因此我们需要查看Android内部是如何调用的。我们都知道Android是一个伟大的开源项目&#xff0c;因此debug的时候肯定是支持源代码级别调试的。采用源代码调试&#xff0c;一方面有利于发…

如何使用HTTP压缩优化服务器

鉴于互联网上的宽带有限&#xff0c;网络管理人员任何旨在加速接入速度的努力都是有价值的。其中的一个方法就是通过HTTP压缩技术实现接入速度的加速&#xff0c;它通过减少在服务器和客户端之间传输的数据量&#xff0c;显著地提高网站的性能。数据压缩本身并不新鲜。但是&…

OpenGL研究3.0 多边形区域填充

OpenGL研究3.0 多边形区域填充 DionysosLai(906391500qq.com)2014-06-22 所谓多边形区域填充。就是将多边形内部区域&#xff0c;所有已相同色块填充。注意&#xff1a;这里讨论的多边形是简单多边形&#xff08;即不考虑诸如五角星这样的相交多边形&#xff09;。简单多边形&a…

ping、网络抖动与丢包

基本概念&#xff1a; ping: PING指一个数据包从用户的设备发送到测速点&#xff0c;然后再立即从测速点返回用户设备的来回时间。也就是俗称的“网络延迟” 一般以毫秒&#xff08;ms&#xff09;计算 一般PING在0~100ms都是正常的速度&#xff0c;不会有较为明显的卡顿。 测试…

[luoguP2801] 教主的魔法(二分 + 分块)

传送门 以为对于这类问题线段树都能解决&#xff0c;分块比线段树菜&#xff0c;结果培训完才知道线段树是一种特殊的分块方法&#xff0c;有的分块的题线段树不能做&#xff0c;看来分块还是有必要学的。 对于这个题&#xff0c;先分块&#xff0c;然后另开一个数组对于每个块…

鸿蒙系统适配开发,捕获科技拟建立鸿蒙开发组 为区块链钱包客户适配鸿蒙系统做筹备...

遭遇美国“实体清单”封杀的第85天&#xff0c;华为“鸿蒙”横空出世&#xff01;8月9日下午&#xff0c;在华为全球开发者大会上&#xff0c;当余承东正式宣布鸿蒙系统(Harmony OS)发布的时候&#xff0c;全场掌声雷动&#xff01;世界上第一个由中国企业自主研发的全平台微内…

关于VCP(Virtual Com Port)拓展的调试经历(一)

* The Overview 前日&#xff0c;接到老板部署的任务&#xff0c;将现有的基于STM32L151与L432的LoRaWAN程序中添加USB CDC(Communication Device Class)功能&#xff0c;并枚举为VCP(Virtual Com Port)用以替代以往的串口打印。很疑惑为什么以前架构代码的时候没有添加进去。。…

三星s6 android 8.0,再见Android 8.0,三星s6全系列系统都停止了,第一代国王已经倒下了吗?...

对于Android用户而言&#xff0c;最令人兴奋的事情是系统更新&#xff0c;因为该更新意味着更流畅的体验和更加用户友好的功能. 但是&#xff0c;旧的三星S6并不是那么幸运&#xff0c;并且不再错过Android 8.0.三星s6的全系列指的是三星s6&#xff0c;三星s6 edge&#xff0c;…