1.搭建https服務(wù)器---前奏
首先需要理解幾個(gè)概念
1.HTTP是一個(gè)網(wǎng)絡(luò)協(xié)議洲胖,是專門用來傳輸Web內(nèi)容;
2.SSL(Secure Sockets Layer)的縮寫----“安全套接層”催束。它是在上世紀(jì)90年代中期,由網(wǎng)景公司設(shè)計(jì)的贬堵。為啥要發(fā)明SSL這個(gè)協(xié)議?因?yàn)樵然ヂ?lián)網(wǎng)上使用的HTTP協(xié)議是明文的比驻,存在很多缺點(diǎn)——比如傳輸內(nèi)容會(huì)被偷窺(嗅探)和篡改檀咙。發(fā)明SSL協(xié)議,就是為了解決這些問題嫁佳。
3.到了1999年挨队,SSL因?yàn)閼?yīng)用廣泛,已經(jīng)成為互聯(lián)網(wǎng)上的事實(shí)標(biāo)準(zhǔn)脱拼。IETF就在那年把SSL 標(biāo)準(zhǔn)化瞒瘸。標(biāo)準(zhǔn)化之后的名稱改為TLS(是“Transport Layer Security”的縮寫),中文叫做“傳輸層安全協(xié)議”熄浓。
4.通常所說的HTTPS協(xié)議情臭,說白了就是“HTTP 協(xié)議”和“SSL/TLS 協(xié)議”的組合省撑。你可以把HTTPS大致理解為——“HTTP over SSL”或“HTTP over TLS”。
5.OpenSSL是TLS/SSL協(xié)議的開源實(shí)現(xiàn)俯在,提供開發(fā)庫和命令行程序竟秫。
6.很多相關(guān)的文章都把這兩者并列稱呼(SSL/TLS),因?yàn)檫@兩者可以視作同一個(gè)東西的不同階段跷乐。
SSL/TLS協(xié)議的基本過程是這樣的:
目標(biāo):使用OpenSSL生成一個(gè)CA根證書肥败,并用這個(gè)根證書頒發(fā)兩個(gè)子證書server和client。
2.生成證書相關(guān)文件
2.1確保安裝OpenSSL
Mac已經(jīng)安裝OpenSSL,可以采用brew info OpenSSL來查看具體內(nèi)容;
linux 可以采用yum install openssl來進(jìn)行下載;
2.2構(gòu)建私鑰
OpenSSL通常使用PEM(Privacy Enbanced Mail)格式來保存私鑰愕提,構(gòu)建私鑰的命令如下:
#導(dǎo)出至為當(dāng)前路徑openssl genrsa -outprivate.pem1024
參數(shù)說明
1.genrsa——使用RSA算法產(chǎn)生私鑰
2.-out——輸出文件的路徑
3.1024——指定私鑰長度
2.3生成CSR證書簽名
使用上一步生成的私鑰(pem文件)馒稍,生成證書請求文件(csr文件):
#導(dǎo)出到同級(jí)目錄下, -subj配置簽名文件的說明,可根據(jù)具體情況做修改openssl req -new-keyprivate.pem -outcsr.pem ?-subj \"/C=CN/ST=myprovince/L=mycity/O=myorganization/OU=mygroup/CN=myname"
參數(shù)說明
1.req——執(zhí)行證書簽發(fā)命令
2.-new——新證書簽發(fā)請求
3.-key——指定私鑰路徑
4.-out——輸出的csr文件的路徑
5.-subj——證書相關(guān)的用戶信息(subject的縮寫)
2.4自簽發(fā)證書文件(cer文件)
openssl x509 -req -days365-sha1 -extensions v3_ca -signkey \ private.pem-incsr.pem-out ca.cer
參數(shù)說明:
1. x509——生成x509格式證書 2. -req——輸入csr文件 3. -days——證書的有效期(天) 4. -sha1——證書摘要采用sha1算法 5. -extensions——按照openssl.cnf文件中配置的v3_ca項(xiàng)添加擴(kuò)展 6. -signkey——簽發(fā)證書的私鑰 7. -in——要輸入的csr文件 8. -out——輸出的cer證書文件
三個(gè)文件如下圖: