關于公私鑰阳掐、各種證書始衅、https基本概念掃盲

最近實習需要寫一些生成證書的腳本,借此機會順便搞清楚了許多關于證書這塊的疑惑缭保。說到這一塊東西汛闸,名詞多到爆炸,對稱加密艺骂、非對稱加密诸老、密鑰、密鑰庫钳恕、公鑰别伏、私鑰蹄衷、CA、證書、數(shù)字簽名共螺、ssh萍虽、https、ssl调卑、keytool、openssl大咱、PKCS恬涧、X.509以及令人眼花繚亂的文件后綴名,cer碴巾、crt溯捆、pem、keystore厦瓢、jks提揍、key、p12煮仇、pfx...

先聽我講個故事劳跃,這次我們不用Bob和Alice,聽完之后再去看這些概念,絕壁恍然大悟浙垫。

故事背景:這是2018年刨仑,為了能夠安全的進行通信,假設每個人都有倆把鎖夹姥,一個叫A鎖杉武,一個叫B鎖,這倆把鎖和一般的鎖有點區(qū)別辙售,每把鎖上即帶有自己的鎖孔又帶有另一把鎖的鑰匙轻抱,因此A鎖和B鎖既是鎖又是鑰匙。A鎖和B鎖唯一配對圾亏,A鎖鎖住之后十拣,只有B鎖可以打開,同樣B鎖鎖住之后志鹃,只有A鎖可以打開夭问。其中一把鎖是公開的,而一把鎖則自己保管曹铃,不公開缰趋。假設默認A鎖是公開的,B鎖是私有的。

故事內容:阿里巴巴子弟小學的小明想給隔壁班的小花寫封表白信秘血,為了不被別人看到味抖,他將信放入在信箱中,并用小花的A鎖將信箱鎖住灰粮,因為小花的B鎖(同是A鎖的鑰匙)只有小花自己有仔涩,所以除了小花以外的任何人拿到信件,都無法看到信件內容粘舟。同樣小花要給小明寫信熔脂,那么也要用小明的A鎖對信件內容進行保護。

小明與小花通過就這樣聊了有一段時間柑肴,后來小花覺得差不多了霞揉,可以進入秀恩愛的階段了,跟小明說晰骑,以后寫信別tm加密了适秩,又不是銀行卡密碼,被人看到又能怎么樣呢硕舆?只要看了之后別瞎改就行了秽荞。于是小明在寫完信后,把信里每個字的拼音首字母拼湊了一個字符串抚官,并取名為消息摘要蚂会,然后僅僅將消息摘要放入信箱耗式,用自己的B鎖鎖住這個信箱刊咳。雖然信件本身沒有放入安全的信箱儡司,但小明作為一個情書高手,隨便一封信都是上萬字跷坝,如果其他人對信件內容做任何改變碉碉,那么拼音首字母組成的字符串幾乎肯定會改變,因此小花拿到信件后贴届,先用小明的A鎖(B鎖的鑰匙)打開信箱,拿到小明的摘要,然后小花再對信件內容做同樣的處理(即計算信件每個字的拼音首字母,實際上不會用這么簡單的算法毫蚓,而是會用不可逆的hash算法)占键,計算出的字符串值如與小明的信息摘要一致,說明這封信就是小明寫給自己的元潘,沒有被任何人篡改畔乙。

故事高潮:事情并沒有那么簡單,小花發(fā)現(xiàn)小明只是在信件里對自己熱情似火翩概,平常見了面連聲招呼都不打牲距,一副不認識的樣子。終于有一天小花忍不住了氮帐,當面質問小明嗅虏,小明卻說,我什么時候給你寫情書了上沐,自作多情吧...于是小花把昨天剛收到的情書狠狠甩在了小明臉上:“上面落款不是你小明嗎皮服?怎么了,慫了?”小明一看上面還真是自己的名字参咙,但是自己寫沒寫信自己還不知道嗎龄广?小明把自己的作業(yè)本拿給小花,并叫自己的同桌做筆跡鑒定蕴侧,小花發(fā)現(xiàn)筆跡的確不大像择同,看來是有人惡作劇,冒充小明給自己寫情書净宵,哎敲才,好尷尬啊。紧武。阻星。

故事講完了,文章開頭涉及的所有概念都與信息的安全傳輸有關畦幢,可以說呛讲,一切都是為了安全吗氏。關于通信安全弦讽,我們通常有三個基本的需求

  • 通信的數(shù)據(jù)本身是被加密的,第三方即使拿到了數(shù)據(jù)仿村,也是無法輕易破解的密文蔼囊。
  • 通信的數(shù)據(jù)本身不加密畏鼓,但是可以確保內容不被篡改
  • 能夠驗證通信方身份

我們以上面的故事為例說一下這三點安全需求,一開始小明與小花通過A鎖(對應公鑰)加密,B鎖(對應私鑰)解密的通信方式即符合第一點让禀,信件內容本身被加密,而因為公私鑰唯一配對,只有配對的密鑰才可以解密麻车,因此很難被第三人破解动猬。

之后赁咙,為了秀恩愛彼水,他們采用了B鎖(私鑰)加密链瓦,A鎖(公鑰)解密的通信方式慈俯,其中用私鑰對消息摘要加密后的字符串稱為數(shù)字簽名,這樣雖然信件可以被人直接看到,但如果被人篡改掉后可以輕易發(fā)現(xiàn)數(shù)據(jù)被篡改刑峡。本來以為滿足第一條和第二條就可以安全的通信了氛琢,但最后才發(fā)現(xiàn)小明根本不是小明!為什么會出現(xiàn)這樣的問題撮奏?因為“小明”說他是小明畜吊,小花就以為他是小明,他沒有提供任何證明自己真的是小明的認證捌年。因此要想安全通信礼预,我們還需要一個權威第三方的機構來做身份認證,這個機構就是CA機構褒颈,通過認證后谷丸,CA機構會頒發(fā)權威的證書淤井,而有了證書就可以證明身份,就不會出現(xiàn)身份被假冒的情況漩绵。而認證的過程則需要向CA機構提供自己的身份信息以及私鑰止吐。

對稱加密 VS 非對稱加密

對稱加密就是通信雙方或多方采用的密鑰是一樣的。加解密速度快不同,但不夠安全二拐。因為一旦密鑰泄露,誰都可以對數(shù)據(jù)進行解密饭望。非對稱加密就是當然就是通信雙方使用的密鑰不同杰妓。而公鑰和私鑰就是非對稱加密的一種方式。比較常用的對稱加密算法如
AES验靡、DES高职,非對稱加密比較常見的則有sha256,RSA怔锌。
非對稱加密算法有倆個密鑰,一個公鑰岛杀,一個私鑰类嗤。公鑰和私鑰必須配對出現(xiàn),一對公鑰和一個私鑰統(tǒng)稱為一個密鑰精偿,而密鑰庫中可以存放多個密鑰还最,即多對公私鑰拓轻。

  • 公鑰是公開的扶叉,私鑰是保存在自己本地的
  • 通信雙方各有一套公鑰和私鑰
  • 公鑰加密的數(shù)據(jù)只有私鑰可以解密
  • 私鑰加密的數(shù)據(jù)只有公鑰可以解密

如果你用github的話,應該注意到github鏈接有倆種方式达吞。一種是https,一種是ssh,通過https經常需要輸密碼吞鸭,而通過ssh則不需要刻剥≡炻玻回憶你設置ssh的步驟,本地生成了一個密鑰對撵术,并將公鑰上傳到了github嫩与。每次傳輸用自動本地私鑰加密,服務器用你上傳的公鑰解密处坪,就不需要手動輸入密碼了同窘。

keytool VS openssl

keytool和openssl是倆個證書管理工具.keytool是java JDK自帶的證書管理工具,使用keytool可以生成密鑰丧没,創(chuàng)建證書呕童。只要裝了jdk,并正確設置了環(huán)境變量,就可以之間通過命令行執(zhí)行keytool命令來管理證書往声。
openssl則是一個開源的安全套接字層密碼庫,功能比keytool更加豐富撼嗓。

X.509 VS PKCS

PKCS全稱Public-Key Cryptography Standards 即公鑰標準且警,PKCS已經發(fā)布了15個標準。
PKCS#12 包含了公鑰和私鑰的二進制格式的證書形式杏头,以pfx作為證書文件后綴
X.509 則是一個通用的證書標準醇王,規(guī)定了證書應該包含哪些內容,X.509通常有倆種編碼方式棘伴,一種是二進制編碼焊夸,另一種是base64編碼
X.509#DER 二進制格式證書,常用后綴.cer .crt
X.509#PEM 文本格式證書颇象,常用后綴.pem

ssl vs https

因為http是明文傳輸遣钳,非常不安全劝评,因此又提出了ssl(Secure Sockets Layer即安全套接字)層協(xié)議蒋畜,即在原來的基礎上又加了一層協(xié)議用于保障安全傳輸,可以認為https=ssl+http姻成。很多人剛開始接觸https,用瀏覽器F12打開控制臺后才睹±湃粒可能發(fā)現(xiàn)數(shù)據(jù)仍然沒有加密乎澄。要注意https是傳輸層加密置济,瀏覽器F12控制臺你看到的還是應用層的數(shù)據(jù)。
因為本文主要是概念掃盲羞酗,幫助理解檀轨,因此關于這部分具體細節(jié)不作介紹。

各種常見文件后綴

.keystore和.jks和.truststore都是java用來存放密鑰的文件
.key nginx中私鑰文件
而不同的證書文件后綴都是為了區(qū)分不同種類的證書的讹挎,主要有倆個分類維度

  1. 證書內容是只包含公鑰筒溃,還是即包含公鑰又包含私鑰
    如.pfx 和 .p12 即包含公鑰又包含私鑰
    .crt浑测、.cer尽爆、.pem只包含公鑰
  2. 通過編碼格式來區(qū)分
    通常.crt和.cer為二進制編碼
    .pem為base64編碼
    不同的證書格式之間有時候需要轉換,用到時候查對應的openssl或keytool命令就好了槐雾。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末株灸,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子屹蚊,更是在濱河造成了極大的恐慌汹粤,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芹壕,死亡現(xiàn)場離奇詭異,居然都是意外死亡鲫趁,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門糠惫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來硼讽,“玉大人固阁,你說我怎么就攤上這事〔⑵耄” “怎么了况褪?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵秧均,是天一觀的道長疙描。 經常有香客問我,道長效五,這世上最難降的妖魔是什么畏妖? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任半夷,我火速辦了婚禮巫橄,結果婚禮上湘换,老公的妹妹穿的比我還像新娘。我一直安慰自己帆离,他們只是感情好,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布囱修。 她就那樣靜靜地躺著赎瑰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪破镰。 梳的紋絲不亂的頭發(fā)上餐曼,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天,我揣著相機與錄音鲜漩,去河邊找鬼源譬。 笑死,一個胖子當著我的面吹牛孕似,可吹牛的內容都是我干的泛烙。 我是一名探鬼主播宇立,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼津函,長吁一口氣:“原來是場噩夢啊……” “哼魂那!你這毒婦竟也來了活逆?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎知纷,沒想到半個月后乍桂,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡担租,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片进萄。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖桂躏,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情拂封,我是刑警寧澤票唆,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布琳水,位于F島的核電站仔燕,受9級特大地震影響,放射性物質發(fā)生泄漏翎朱。R本人自食惡果不足惜叁熔,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一诫隅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧围小,春花似錦樱溉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至祷舀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工森篷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像他爸,于是被迫代替她去往敵國和親鄙煤。 傳聞我的和親對象是個殘疾皇子澜共,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內容