进程间通信
socket通信
客户端-->请求--> 路由转发 --> 服务端,取出资源 --> 封装为可响应给客户端的请求报文从接收请求端口发出
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 传输层安全
SSL分层
1 2 3 4 | 用组件拼装而成的密码学协议软件(TLS, SSL) 标准算法组合成半成品 算法实现:AES- 128 -CBC-PKCS7 算法原语:AES(对称加密),RSA(非对称加密),MD5(单向加密) |
NIST制定的安全标准:保密性、完整性、可用性
SOCKET通信模型中面临的风险:窃听、伪装、重放、消息篡改、拒绝服务
保证安全的手段(安全机制):加密、身份认证、访问控制、完整性校验、路由控制、公证
提供安全机制的服务:认证、访问控制、保密性、完整性、不可否认性
保证服务的安全(算法和协议):对称、非对称、单向、密钥交换
加密解密的基础原理
对称加密、非对称加密、单向加密、密钥交换
证书颁发机构CA、证书的作用
PKI
证书的规范
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 Number : 1 ( 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 、比对特征码是否相同 |
基于公钥加密通信机制
SSL Hand shark: 一个IP地址只能建立一个SSL会话
openssl工具使用
对称加密
使用示例
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 |
单向加密
使用示例
1 2 3 4 5 | # sha1sum lcc.txt 5448d7dc19288c6ee87a25d4e2e990f72d786971 lcc.txt # openssl dgst -sha1 -hex lcc.txt SHA1(lcc.txt)= 5448d7dc19288c6ee87a25d4e2e990f72d786971 |
生成用户密码
使用示例
1 2 | # openssl passwd - 1 -salt $(openssl rand -hex 4 ) # openssl passwd - 1 -salt $(openssl rand -hex 4 ) 123 |
生成随机数
使用示例
1 2 | # openssl rand -hex 4 ( 8 位) # openssl rand -base64 16 | tr -d '=' |
生成密钥对
使用示例
# 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 Number : 01 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 |