**加密解密基礎、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?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、比對特征碼是否相同


基于公鑰加密通信機制

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?4)?123


生成隨機數

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?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









本文轉自 lccnx 51CTO博客,原文鏈接:http://blog.51cto.com/sonlich/1965404,如需轉載請自行聯系原作者

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:
http://www.pswp.cn/news/392976.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/392976.shtml
英文地址,請注明出處:http://en.pswp.cn/news/392976.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

json 文件打讀取

1。獲取文件路徑 /** BookController.class.getClassLoader().getResource("static/json/book_nav.json").getPath() 獲取當期運行時的項目json文件路徑*/JSONObject json JsonResourceUtils.getJsonObjFromResource(BookController.class.getClassLoader().getReso…

16F877A和24C02通信匯編語言,pic單片機IIC通信讀24C02程序例 16F877A 主頻4M

#define _iic_h_//pic單片機IIC通信初始化函數聲明void iiccsh(void);//pic單片機IIC通信讀外圍設備函數聲明//功能&#xff1a;傳送一個8位地址&#xff0c;返回一個8位數據unsigned char iicread(unsigned char data);//pic單片機IIC通信給外圍器件發送函數聲明//功能&#x…

如何從XMLHttpRequest創建自定義獲取API

What is your worst nightmare?你最可怕的噩夢是什么&#xff1f; That sounded dark, but it’s not a rhetorical question. I really want to know because I am about to tell you mine. Along the way, we will learn some things like how the fetch API works and als…

leetcode637. 二叉樹的層平均值

給定一個非空二叉樹, 返回一個由每層節點平均值組成的數組。示例 1&#xff1a;輸入&#xff1a;3/ \9 20/ \15 7 輸出&#xff1a;[3, 14.5, 11] 解釋&#xff1a; 第 0 層的平均值是 3 , 第1層是 14.5 , 第2層是 11 。因此返回 [3, 14.5, 11] 。/*** Definition for a b…

5.3 上午

觀看英語課程——《戀練有詞》 學習Linux 轉載于:https://www.cnblogs.com/bgd140206110/p/6801164.html

AD庫轉換為KiCAD庫的方法

AD庫轉換為KiCAD庫的方法 參照博主另外一篇文檔&#xff1a; AD轉換為KiCAD的方法&#xff0c;點擊此處轉載于:https://www.cnblogs.com/zhiqiang_zhang/p/11109560.html

遺傳算法求解裝箱問題c語言,求解裝箱問題的遺傳算法-南昌航空大學期刊網.pdf...

求解裝箱問題的遺傳算法-南昌航空大學期刊網1998 2 Journal of Nanchang Institute of Aeronautical Technology 21998方 平    李 娟( 南昌航空工業學院)  ( 西北工業大學): ( Bin Packing) ,, , D( irst it De-creasing) ,: ; ; ;: TP301. 6( )( Bin Packing) , :1 2 …

mysql索引隨記

為什么80%的碼農都做不了架構師&#xff1f;>>> 先了解下Btree&#xff1a;https://my.oschina.net/u/3646190/blog/1593094 為什么每個數據項&#xff0c;即索引字段要盡量的小&#xff0c;比如int占4字節&#xff0c;要比bigint8字節少一半&#xff1f; 通過上面…

leetcode79. 單詞搜索(回溯算法)

給定一個二維網格和一個單詞&#xff0c;找出該單詞是否存在于網格中。 單詞必須按照字母順序&#xff0c;通過相鄰的單元格內的字母構成&#xff0c;其中“相鄰”單元格是那些水平相鄰或垂直相鄰的單元格。同一個單元格內的字母不允許被重復使用。 示例: board [ [‘A’,‘…

react鉤子_迷上了鉤子:如何使用React的useReducer()

react鉤子So the React Conference just happened and as always something new happened. Hooks happened! The React team talked about suspense, lazy loading, concurrent rendering, and hooks :D.因此&#xff0c;React會議剛剛發生&#xff0c;并且一如既往地發生了一些…

開發注意事項

明確需求 - 溝通 - 定好上下游接口 次序亂不得轉載于:https://www.cnblogs.com/zslzz/p/6802437.html

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

注意上面的Main方法中出現的UnityAppController&#xff0c;該類就是作為控制類來實現Unity在iOS上顯示的功能&#xff0c;在Main方法中就是將該控制器作為參數傳遞&#xff0c;即Main方法之后就會進入該類執行。所以這是我們進入到UnityAppController.mm&#xff0c;來查看該類…

oracle審計實施

1、語句審計 Audit session; Audit session By ; 與instance連接的每個會話生成一條審計記錄。審計記錄將在連接時期插入并且在斷開連接時期進行更新。 保留有關會話的信息比如連接時期斷開連接時期處理的邏輯和物理I/O&#xff0c;以及更多信息將存儲在單獨一條審計 記錄中…

JPDA 架構研究5 - Agent利用環境指針訪問VM (內存管理篇)

引入&#xff1a; 我們在前面說到JVMTI的客戶端Agent,又提到Agent通過環境指針來訪問VM。這里就來看看環境指針到底有多大的訪問VM的能力。 分類1&#xff1a;內存管理 a.Allocate. 分配內存 jvmtiError Allocate(jvmtiEnv* env,jlong size,unsigned char** mem_ptr) size:分配…

leetcode94. 二叉樹的中序遍歷(dfs)

給定一個二叉樹&#xff0c;返回它的中序 遍歷。示例:輸入: [1,null,2,3]1\2/3輸出: [1,3,2]代碼 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val x; }* }*/ class …

vtk刪除一個actor_如何構建一個基于actor的簡單區塊鏈

vtk刪除一個actorScalachain is a blockchain built using the Scala programming language and the actor model (Akka Framework).Scalachain是使用Scala編程語言和參與者模型( Akka Framework )構建的區塊鏈。 In this story I will show the development process to build…

java枚舉的簡單介紹

1.枚舉&#xff0c;enum關鍵字&#xff0c;相當于public final static. 2.舉例&#xff1a; 首先定義了一個名為spiciness的枚舉類型。 public enum Spiciness {NOT, MILD, MEDIUM, HOT, FLAMING } 再來測試一下enum&#xff0c;這個測試方法表明它有tostring()方法&#xff0…

瀏覽器中插入富文本編輯器

常用的富文本編輯器有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,那么我們有多少方法可以…

android觸摸指紋會觸發按鍵功能,Android P新特性:利用觸摸指紋識別器能阻止手機息屏...

設想你正在閱讀手機上的文章&#xff0c;突然間顯示屏變暗了一點。顯然&#xff0c;你設置的30秒或1分鐘超時息屏對于常規使用來說還可以&#xff0c;但對于閱讀純文本片段&#xff0c;還遠遠不夠。因此&#xff0c;這時你會輕觸屏幕&#xff0c;可能會上下滑動&#xff0c;以防…