OpenSSL 介紹和使用

一攒菠、SSL 簡(jiǎn)介

按照我的理解來(lái)解釋下哨免,為了讓網(wǎng)絡(luò)通信更安全茎活,需要認(rèn)證和加密,認(rèn)證是說(shuō)明你是要找的人琢唾,加密是為了讓截獲中間報(bào)文第三者無(wú)法得到消息內(nèi)容载荔。
為此有人設(shè)計(jì)了SSL,即套接字上的安全層采桃,簡(jiǎn)單來(lái)說(shuō)就是在TCP之上做一個(gè)安全通信層懒熙,HTTP on SSL 即是HTTPs丘损,現(xiàn)在幾乎所有的銀行網(wǎng)站訪問(wèn)都是基于HTTPS協(xié)議的。
認(rèn)證是通過(guò)證書(shū)+非對(duì)稱(chēng)加密算法來(lái)解決的工扎,具體我也不搬遷了大家去看看
https交互過(guò)程

SSL交互過(guò)程還是很復(fù)雜的徘钥,牽扯到非對(duì)稱(chēng)加密和對(duì)稱(chēng)加密,以及復(fù)雜的交互過(guò)程肢娘,為此有人寫(xiě)了openssl庫(kù)呈础,這個(gè)庫(kù)的使用非常廣泛,本文就是闡明如何安裝和基本使用這個(gè)庫(kù)的蔬浙。
有了這openssl庫(kù)猪落,就可以直接寫(xiě)和HTTPS的交互的代碼了。

二畴博、openssl 功能

openssl可以實(shí)現(xiàn):秘鑰證書(shū)管理笨忌、對(duì)稱(chēng)加密和非對(duì)稱(chēng)加密 。

openssl: 多用途的命令行工具俱病,包openssl官疲,可以執(zhí)行交互或批量命令。
libcrypto: 加密算法庫(kù)亮隙,包openssl-libs途凫。
libssl:加密模塊應(yīng)用庫(kù),實(shí)現(xiàn)了ssl及tls溢吻,包nss维费。

1.1 加密命令

工具: openssl enc, gpg
算法: 3des, aes, blowfish, twofish、3des等促王。
常用選項(xiàng)有:
-in filename:指定要加密的文件存放路徑
-out filename:指定加密后的文件存放路徑
-salt:自動(dòng)插入一個(gè)隨機(jī)數(shù)作為文件內(nèi)容加密犀盟,默認(rèn)選項(xiàng) 加點(diǎn)鹽:)
-e:加密;
-d:解密蝇狼,解密時(shí)也可以指定算法阅畴,若不指定則使用默認(rèn)算法,但一定要與加密時(shí)的算法一致
-a/-base64:當(dāng)進(jìn)行加解密時(shí)迅耘,他只對(duì)數(shù)據(jù)進(jìn)行運(yùn)算贱枣,有時(shí)需要進(jìn)行base64轉(zhuǎn)換,設(shè)置
此選項(xiàng)后加密結(jié)果進(jìn)行base64編碼颤专,解密前先進(jìn)行base64編碼纽哥。
加密解密算法可以通過(guò)自己制定,有什么算法可以通過(guò)openssl help enc去查看加密內(nèi)容栖秕。
enc命令:
幫助: man enc
加密:
openssl enc -e -des3 -a -salt -in testfile -out testfile.cipher
解密:
openssl enc -d -des3 -a -salt –in testfile.cipher -out testfile
openssl ?
 

對(duì)稱(chēng)加密算法
OpenSSL一共提供了8種對(duì)稱(chēng)加密算法春塌,其中7種是分組加密算法,僅有的一種流加密算法是RC4。這7種分組加密算法分別是AES摔笤、DES、Blowfish垦写、CAST吕世、IDEA、RC2梯投、RC5命辖,都支持電子密碼本模式(ECB)、加密分組鏈接模式(CBC)分蓖、加密反饋模式(CFB)和輸出反饋模式(OFB)四種常用的分組密碼加密模式尔艇。其中,AES使用的加密反饋模式(CFB)和輸出反饋模式(OFB)分組長(zhǎng)度是128位么鹤,其它算法使用的則是64位终娃。事實(shí)上,DES算法里面不僅僅是常用的DES算法蒸甜,還支持三個(gè)密鑰和兩個(gè)密鑰3DES算法棠耕。

非對(duì)稱(chēng)加密算法
OpenSSL一共實(shí)現(xiàn)了4種非對(duì)稱(chēng)加密算法,包括DH算法柠新、RSA算法窍荧、DSA算法和橢圓曲線算法(EC)。DH算法一般用戶(hù)密鑰交換恨憎。RSA算法既可以用于密鑰交換蕊退,也可以用于數(shù)字簽名,當(dāng)然憔恳,如果你能夠忍受其緩慢的速度瓤荔,那么也可以用于數(shù)據(jù)加密。DSA算法則一般只用于數(shù)字簽名喇嘱。

1.2 摘要命令

OpenSSL實(shí)現(xiàn)了5種信息摘要算法茉贡,分別是MD2、MD5者铜、MDC2腔丧、SHA(SHA1)和RIPEMD。SHA算法事實(shí)上包括了SHA和SHA1兩種信息摘要算法作烟,此外愉粤,OpenSSL還實(shí)現(xiàn)了DSS標(biāo)準(zhǔn)中規(guī)定的兩種信息摘要算法DSS和DSS1。

摘要一般有兩個(gè)作用:1)做信息完整性校驗(yàn)拿撩;2)保存密碼衣厘,有些密碼是直接在數(shù)據(jù)庫(kù)中采用MD5(真實(shí)密碼值)保存的,有的還進(jìn)行加鹽處理,使其難以破解影暴,這樣密碼只能重置错邦,無(wú)法告訴你原始過(guò)程,因?yàn)檎遣豢赡娴摹?/p>

 openssl dgst
常用選項(xiàng)有:
[-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1] :指定一種摘要算法
-out filename:將摘要的內(nèi)容保存到指定文件中
dgst命令:
幫助: man dgst
openssl dgst -md5 [-hex默認(rèn)16進(jìn)制] /PATH/SOMEFILE
openssl dgst -md5 testfile
md5sum /PATH/TO/SOMEFILE
MAC: Message Authentication Code型宙,單向加密的一種延伸應(yīng)用撬呢,用于實(shí)現(xiàn)網(wǎng)絡(luò)通
信中保證所傳輸數(shù)據(jù)的完整性機(jī)制
CBC-MAC
HMAC:使用md5或sha1算法

簡(jiǎn)單示例,對(duì)文件1進(jìn)行求md5摘要:


image.png

1.3 生成密碼和base64等

生成密碼需要使用的標(biāo)準(zhǔn)命令為 passwd 妆兑,用法如下:

openssl passwd [-crypt] [-1] [-apr1] [-salt string] [-in file] [-stdin] [-noverify] [-quiet] [-table] {password}
常用選項(xiàng)有:

-1:使用md5加密算法
-salt string:加入隨機(jī)數(shù)魂拦,最多8位隨機(jī)數(shù)
-in file:對(duì)輸入的文件內(nèi)容進(jìn)行加密
-stdion:對(duì)標(biāo)準(zhǔn)輸入的內(nèi)容進(jìn)行加密
image.png

1.4 生成隨機(jī)數(shù)

在SSL交互過(guò)程中,需要生成隨機(jī)數(shù)搁嗓。

 生成隨機(jī)數(shù)需要用到的標(biāo)準(zhǔn)命令為 rand 芯勘,用法如下:
openssl rand [-out file] [-rand file(s)] [-base64] [-hex] num
常用選項(xiàng)有:
-out file:將生成的隨機(jī)數(shù)保存至指定文件中
-base64:使用base64 編碼格式
-hex:使用16進(jìn)制編碼格式
image.png

1.5 生成密鑰對(duì)

首先需要先使用 genrsa 標(biāo)準(zhǔn)命令生成私鑰,然后再使用 rsa 標(biāo)準(zhǔn)命令從私鑰中提取公鑰腺逛。
genrsa 的用法如下:

openssl genrsa [-out filename] [-passout arg] [-des] [-des3] [-idea] [-f4] [-3] [-rand file(s)] [-engine id] [numbits]
常用選項(xiàng):
-out filename:將生成的私鑰保存至指定的文件中
-des|-des3|-idea:不同的加密算法
numbits:指定生成私鑰的大小荷愕,默認(rèn)是2048

一般情況下秘鑰文件的權(quán)限一定要控制好,只能自己讀寫(xiě)棍矛,因此可以使用 umask 命令設(shè)置生成的私鑰權(quán)限路翻,示例如下:


image.png

ras 的用法如下:

openssl rsa [-inform PEM|NET|DER] [-outform PEM|NET|DER] [-in filename] [-passin arg] [-out filename] [-passout arg]
       [-sgckey] [-des] [-des3] [-idea] [-text] [-noout] [-modulus] [-check] [-pubin] [-pubout] [-engine id]
常用選項(xiàng):
-in filename:指明私鑰文件
-out filename:指明將提取出的公鑰保存至指定文件中 
-pubout:根據(jù)私鑰提取出公鑰 
image.png

1.7創(chuàng)建證書(shū)

使用openssl工具創(chuàng)建CA證書(shū)和申請(qǐng)證書(shū)時(shí),需要先查看配置文件茄靠,因?yàn)榕渲梦募袑?duì)證書(shū)的名稱(chēng)和存放位置等相關(guān)信息都做了定義茂契,具體可參考 /etc/pki/tls/openssl.cnf 文件。

第一步:創(chuàng)建為 CA 提供所需的目錄及文件
![i(http://upload-images.jianshu.io/upload_images/1737506-a44da07298662473.png!web?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

第二步:指明證書(shū)的開(kāi)始編號(hào)
]# echo 01 >> serial

第三步:生成私鑰慨绳,私鑰的文件名與存放位置要與配置文件中的設(shè)置相匹配掉冶;


image

第四步:生成自簽證書(shū),自簽證書(shū)的存放位置也要與配置文件中的設(shè)置相匹配脐雪,生成證書(shū)時(shí)需要填寫(xiě)相應(yīng)的信息厌小;


image

命令中用到的選項(xiàng)解釋?zhuān)?br> -new:表示生成一個(gè)新證書(shū)簽署請(qǐng)求
-x509:專(zhuān)用于CA生成自簽證書(shū),如果不是自簽證書(shū)則不需要此項(xiàng)
-key:生成請(qǐng)求時(shí)用到的私鑰文件
-out:證書(shū)的保存路徑
-days:證書(shū)的有效期限战秋,單位是day(天)璧亚,默認(rèn)是365天

(2)頒發(fā)證書(shū)

在需要使用證書(shū)的主機(jī)上生成證書(shū)請(qǐng)求,以 httpd 服務(wù)為例脂信,步驟如下:
第一步:在需要使用證書(shū)的主機(jī)上生成私鑰癣蟋,這個(gè)私鑰文件的位置可以隨意定
第二步:生成證書(shū)簽署請(qǐng)求
第三步:將請(qǐng)求通過(guò)可靠方式發(fā)送給 CA 主機(jī)


image

第四步:CA 服務(wù)器拿到證書(shū)簽署請(qǐng)求文件后頒發(fā)證書(shū),這一步是在 CA 服務(wù)器上做的


image

查看證書(shū)信息的命令為:


image

(3)吊銷(xiāo)證書(shū)

吊銷(xiāo)證書(shū)的步驟也是在CA服務(wù)器上執(zhí)行的狰闪,以剛才新建的 httpd.crt 證書(shū)為例疯搅,吊銷(xiāo)步驟如下:
第一步:在客戶(hù)機(jī)上獲取要吊銷(xiāo)證書(shū)的 serial 和 subject 信息
第二步:根據(jù)客戶(hù)機(jī)提交的 serial 和 subject 信息,對(duì)比其余本機(jī)數(shù)據(jù)庫(kù) index.txt 中存儲(chǔ)的是否一致
第三步:執(zhí)行吊銷(xiāo)操作


image

第四步:生成吊銷(xiāo)證書(shū)的吊銷(xiāo)編號(hào) (第一次吊銷(xiāo)證書(shū)時(shí)執(zhí)行)
# echo 01 > /etc/pki/CA/crlnumber

第五步:更新證書(shū)吊銷(xiāo)列表
# openssl ca -gencrl -out /etc/pki/CA/crl/ca.crl

查看 crl 文件命令:
# openssl crl -in /etc/pki/CA/crl/ca.crl -noout -text

轉(zhuǎn)自:http://www.178linux.com/48764?utm_source=tuicool&utm_medium=referral
其他:http://man.linuxde.net/openssl埋泵、http://www.reibang.com/p/56f7a350b0ab

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末幔欧,一起剝皮案震驚了整個(gè)濱河市罪治,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌礁蔗,老刑警劉巖觉义,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異浴井,居然都是意外死亡谁撼,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)滋饲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人喊巍,你說(shuō)我怎么就攤上這事屠缭。” “怎么了崭参?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵呵曹,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我何暮,道長(zhǎng)奄喂,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任海洼,我火速辦了婚禮跨新,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘坏逢。我一直安慰自己域帐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布是整。 她就那樣靜靜地躺著肖揣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪浮入。 梳的紋絲不亂的頭發(fā)上龙优,一...
    開(kāi)封第一講書(shū)人閱讀 51,590評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音事秀,去河邊找鬼彤断。 笑死,一個(gè)胖子當(dāng)著我的面吹牛易迹,可吹牛的內(nèi)容都是我干的瓦糟。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼赴蝇,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼菩浙!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤劲蜻,失蹤者是張志新(化名)和其女友劉穎陆淀,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體先嬉,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡轧苫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了疫蔓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片含懊。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖衅胀,靈堂內(nèi)的尸體忽然破棺而出岔乔,到底是詐尸還是另有隱情,我是刑警寧澤滚躯,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布雏门,位于F島的核電站,受9級(jí)特大地震影響掸掏,放射性物質(zhì)發(fā)生泄漏茁影。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一丧凤、第九天 我趴在偏房一處隱蔽的房頂上張望募闲。 院中可真熱鬧,春花似錦愿待、人聲如沸蝇更。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)年扩。三九已至,卻和暖如春访圃,著一層夾襖步出監(jiān)牢的瞬間厨幻,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工腿时, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留况脆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓批糟,卻偏偏與公主長(zhǎng)得像格了,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子徽鼎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容