日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

加密和解密技术基础、PKI及创建私有CA

發(fā)布時間:2023/12/29 编程问答 66 豆豆
生活随笔 收集整理的這篇文章主要介紹了 加密和解密技术基础、PKI及创建私有CA 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、數(shù)據(jù)加密和解密概述


數(shù)據(jù)加密和解密是一門歷史悠久的技術(shù),從古代就已經(jīng)出現(xiàn)了,一直發(fā)展到當代。其中,數(shù)據(jù)加密的目的有很多,可以是為了保證本地數(shù)據(jù)存取的安全性,可以是為了保證數(shù)據(jù)流在網(wǎng)絡傳輸過程中的保密性,也可以是為了驗證數(shù)據(jù)的完整性,還可以通過數(shù)據(jù)加密來實現(xiàn)密鑰的交換等。


數(shù)據(jù)加密依賴于某種加密算法和加密密鑰,而數(shù)據(jù)解密則依賴于某種解密算法和解密密鑰。而在當代加密解密技術(shù)中,加密密鑰既可以與解密密鑰相同,也可以和解密密鑰不同,這取決于使用什么方法進行加解密。



二、安全的目標


就信息傳輸過程來說,安全目標有以下三個要點:
(1)保密性:確保通信雙方之間的通信數(shù)據(jù)不會被無關(guān)的第三方所竊取,這是最基本的要求。

(2)完整性:確保通信時數(shù)據(jù)不會丟失或被第三方篡改、破壞,一旦數(shù)據(jù)丟失或被篡改時,通信的一方能夠立即發(fā)現(xiàn)。

(3)可用性:確保授權(quán)用戶能夠按需合法訪問資源。



三、安全***類型


對應于以上的安全目標,分別有以下三種***類型:

(1)威脅保密性的***:竊聽/竊取、通信量分析;

(2)威脅完整性的***:篡改、偽裝、重放、否認;

(3)威脅可用性的***:拒絕服務(Dos)、分布式拒絕服務(DDos);



四、安全防范的解決方案


為了防范安全***,可以分別從技術(shù)層面上和服務層面上防范:

(1)技術(shù)層面:提供加密和解密技術(shù)。這個層面解決了本地數(shù)據(jù)存儲加密和通信過程中數(shù)據(jù)加密的一系列問題,可分為傳統(tǒng)加密算法和現(xiàn)代加密算法:

????①傳統(tǒng)加密算法:替換加密算法、置換加密算法;

????②現(xiàn)代加密算法:現(xiàn)代塊加密方法

(2)服務層面:提供用于抵御***以及為了達到上述安全目標而特地設(shè)計的服務。在這一層面上主要有認證機制和訪問控制機制:

????①認證機制:確定訪問資源的用戶是誰、通信對方的身份是否為期望的另一方等;

????②訪問控制機制:確定某個用戶是否有權(quán)限訪問資源;如果有權(quán)限訪問資源,再進一步確定用戶所能夠訪問的資源以及對資源能夠執(zhí)行的操作(查看、使用、修改、創(chuàng)建等);


在以上技術(shù)和服務這兩個層面中會用到的密鑰算法和協(xié)議有對稱加密、公鑰加密(非對稱加密)、單向加密以及認證協(xié)議。接下來介紹在實現(xiàn)安全通信過程中所用到的加密算法以及它們的實現(xiàn)。



五、加密算法和實現(xiàn)


1、對稱加密


(1)特點:加密和解密使用同一個密鑰;通信時,雙方要想實現(xiàn)基于對稱加密算法來實現(xiàn)通信需要預先共享密鑰。


(2)用途:用于實現(xiàn)數(shù)據(jù)保密性。


(3)常見算法

DES:Data Encryption Standard,即數(shù)據(jù)加密標準。DES算法是以64bits(8Bytes)為塊,在加密端把數(shù)據(jù)分成多塊,對每塊數(shù)據(jù)(64bits)進行加密,生成64bits密文;在解密端則把64bits密文轉(zhuǎn)換為64bits明文。各個塊之間建立一定的聯(lián)系,DES使用16個迭代塊來完成迭代。其中,加密和解密使用56bits密鑰。

3DES:Triple DES,即三輪DES加密機制。3DES加密次數(shù)是DES的三個數(shù)量級(10^3)。

AES:Advanced Encryption Standard,即高級加密標準。AES支持多種變長密鑰,如128bits, 192bits, 256bits, 384bits等。

其它對稱加密算法有:Blowfish, Twofish, IDEA, RC6, CAST5等。


注意:DES算法存在缺陷,而且只使用56bits的密鑰太短;為了提供更高的安全性,可使用DES的派生算法3DES來進行加密,但3DES算法和DES算法一樣存在可被***的缺陷。后來DES被AES所替代。


(4)缺陷

密鑰過多:如果通信是基于C/S模式,則服務器端與每一個客戶端之間的通信都必須使用不同的密鑰,造成服務器端密鑰過多的問題。

密鑰分發(fā)困難:對稱加密可實現(xiàn)通信時數(shù)據(jù)加密功能,但問題是雙方通信之前必須交互密鑰,而密鑰在交換過程中也同樣保證保密性,這時會造成密鑰分發(fā)困難的問題,必須依賴于一種安全的方法來實現(xiàn)密鑰的交換。



2、非對稱加密


(1)特點:也稱為公鑰加密。加密和解密數(shù)據(jù)使用不同的密鑰,例如用公鑰加密的數(shù)據(jù)只能使用與之配對的私鑰進行解密,而用私鑰加密則只能使用與之配對的公鑰進行解密。相比于對稱加密,公鑰加密可把公鑰直接公開,即使公鑰在通信時被竊取,因為沒有與之配對的私鑰,所以仍然無法解密數(shù)據(jù)。

????①公鑰:public key,從私鑰中提取產(chǎn)生,可公開給所有人。

????②私鑰:secret key,通過工具創(chuàng)建生成,由使用者自己留存,必須保證其私密性。


(2)用途

數(shù)字簽名:主要用于讓接受方確認發(fā)送方的身份。

密鑰交換:通過對方的公鑰加密一個對稱密鑰,并發(fā)送給對方,對方通過其私鑰解密之后就可以獲取對稱密鑰了。這解決了上述對稱加密算法中密鑰分發(fā)困難這一問題。

數(shù)據(jù)加密:這種直接使用公鑰加密算法來實現(xiàn)通信時數(shù)據(jù)的保密性的方式并不常用,因為這種方式要比使用對稱加密慢上3個數(shù)量級,不推薦。


(3)常見算法:

RSA:名稱由RSA三個提出者(Ron Rivest,?Adi Shamir,?Leonard Adleman)的姓氏首字母組合而成,這種算法的可靠性由對極大整數(shù)做因數(shù)分解的難度決定;RSA既能實現(xiàn)數(shù)字簽名,又能實現(xiàn)加解密。

DSA:Digital Signature Algorithm,即數(shù)字簽名算法,又稱DSS(Digital Signature Standard, 數(shù)字簽名標準);DSA僅能實現(xiàn)數(shù)字簽名,不能用于加解密。

其他公鑰加密算法有ELGamal等。


(4)缺陷:通信效率低。



3、單向加密


(1)特點:提取數(shù)據(jù)特征碼,只能加密,不能解密,它是基于兩個特性。

????①定長輸出:提取出來的數(shù)據(jù)量是定長的,與進行加密的數(shù)據(jù)的量無關(guān)。

????②雪崩效應:初始條件的微小改變會引起加密結(jié)果的巨大變化。


(2)用途:用于實現(xiàn)數(shù)據(jù)完整性的驗證。


(3)常見算法

md5:Message Digest 5,即信息摘要,'5'是版本號;取出的特征碼定長為128bits。

sha1:Secure Hash Algorithm 1,即安全哈希算法,'1'是版本號;取出的特征碼定長為160bits。

其他的單向加密算法還有:sha224、sha256、sha384、sha512 ...分別表示定長輸出224bits、256bits、384bits、512bits ...


注意:CentOS 5用戶密碼加密使用的是md5,CentOS 6/7用戶密碼加密使用的是sha512.



4、密鑰交換(IKE, Internet Key Exchange)


兩種實現(xiàn)方式:

公鑰加密:常見的算法有RSA等。

DH算法:Deffie-Hellman(迪菲-赫爾曼)算法。

其他用于實現(xiàn)密鑰交換的算法有:ECDH(橢圓曲線DH)、ECDHE(臨時橢圓曲線DH)等。

?

以下為DH算法的工作原理圖:

以下為更一般的描述:

  • Alice生成隨機自然數(shù)a、隨機大質(zhì)數(shù)p和原根g;

  • Alice計算,計算結(jié)果為A,并把p,g,A發(fā)送給Bob;

  • Bob生成隨機自然數(shù)b,根據(jù)Alice發(fā)過來的p,g,計算,計算結(jié)果為B;

  • Bob把B發(fā)送給Alice,并計算,計算結(jié)果為K;而Alice計算,計算結(jié)果也為K;

  • Alice和Bob以K值作為密鑰進行通信。


  • 注意:在整個密鑰協(xié)商過程中,p、g、和的值是可以公開給***者的,而a,b,K值是不公開的。但即使***者知道、p和g的值,也無法計算出a,同理,***者無法通過、g和g的值計算出b,更不用說計算出K值(最終Alice和Bob協(xié)商好的密鑰)了。這個問題就是著名的離散對數(shù)問題。



    六、一次加密通信的過程


    這里以發(fā)送方Alice和接收方Bob為例。


    加密和發(fā)送過程:

    1、當發(fā)送方Alice有數(shù)據(jù)要發(fā)送給Bob時,為了確保數(shù)據(jù)能夠完整發(fā)送至Bob,首先需要使用單向加密算法去計算出這段要發(fā)送的數(shù)據(jù)的特征碼;

    2、為了便于Bob收到數(shù)據(jù)之后可驗證身份,發(fā)送方Alice使用本地私鑰加密這段特征碼,并將加密后的特征碼附加在數(shù)據(jù)后面;

    3、為了確保通信過程是保密的,發(fā)送方Alice生成一個臨時的對稱密鑰,并使用這個對稱密鑰加密整段數(shù)據(jù);

    4、發(fā)送方Alice獲取Bob的公鑰,再使用Bob的公鑰加密來加密剛才生成的臨時的對稱密鑰,并把加密后的對稱密鑰附加在整段加密數(shù)據(jù)后面,而后發(fā)送給Bob。


    接收和解密過程:

    接收和解密的過程和解密發(fā)送的過程剛好相反。

    1、接收方Bob收到數(shù)據(jù)之后,先使用自己的私鑰去解密這段加密過的對稱密鑰(由Alice生成);

    2、接收方Bob用解密得到的對稱密鑰去解密整段(發(fā)送方用對稱密鑰)加密的內(nèi)容;此時接收方Bob得到Alice發(fā)送給自己的數(shù)據(jù)和加密后的特征碼;

    3、接收方Bob用對方Alice的公鑰去解密這段特征碼,如果能解密出來,則發(fā)送方的身份得到驗證(沒錯,就是Alice發(fā)送的);

    4、接收方Bob再用同樣的單向加密算法去計算這段數(shù)據(jù)的特征碼,與解密得到的特征碼進行比較,如果相同,則數(shù)據(jù)完整性得到驗證,否則說明數(shù)據(jù)有可能被篡改或被破壞。


    圖解加密通信過程:

    問題總結(jié):


    (1)什么是數(shù)字簽名?

    數(shù)字簽名就是對數(shù)據(jù)的特征碼進行加密。


    (2)如何保證公鑰不被篡改?

    解決方法:將公鑰放在證書中。只要證書是可信的,那么公鑰就是可信的。


    (3)公鑰加密計算量太大,如何減少耗用的時間?

    解決方法:每一次對話(session),雙方都生成一個臨時的“會話密鑰”(session?key),用來 加密信息。由于“會話密鑰”是對稱加密,因此運算速度快,比公鑰加密快3個數(shù)量級,而公鑰加密 本身只用于加密“會話密鑰”本身,這樣就減少了耗用的時間。



    七、數(shù)字證書認證機構(gòu)--CA


    前面的加密通信過程中能夠保證通信過程的保密性、通信數(shù)據(jù)的完整性,但這是以雙方(Alice和Bob)能夠在此之前可靠地獲取對方的公鑰為前提的。如果不能保證能夠可靠獲取對方公鑰,那么就有可能出現(xiàn)中間人***(Man-in-the-middle attack,縮寫:MITM)。假設(shè)這個中間人是Eve,Eve就可以分別與Alice和Bob建立聯(lián)系,而這時Alice獲取的是“假的”Bob公鑰,而Bob獲取的是“假的”Alice公鑰;這時候Alice和Bob在毫不知情的情況下進行通信,但其實他們之間數(shù)據(jù)包的轉(zhuǎn)發(fā)是經(jīng)由Eve的,如圖:

    上述的通信過程中缺失的一環(huán)在于通信雙方不能保證可靠地獲取對方的公鑰,因此,為了保證可靠地獲取通信對方的公鑰,于是就有了數(shù)字證書認證機構(gòu)(Certificate Authority,縮寫:CA)。CA就是為了能夠保證通信雙方能夠可靠獲取對方的公鑰,而特地設(shè)定的一個雙方公信的第三方可信機構(gòu)。威瑞信(VeriSign)就是其中一家非常有名的數(shù)字證書認證機構(gòu)。


    為了避免出現(xiàn)上述一環(huán)的缺失,Alice和Bob可向公信的CA申請有效的證書,并由CA分別頒發(fā)給Alice和Bob,其中這個證書中的信息包括了證書擁有者的名稱、公鑰、證書的有效期等信息,而CA還會提取證書中信息的特征碼,并用CA自己的私鑰進行加密,再把加密后的特征碼附加在證書中最后面。此后,當雙方通信時,Alice和Bob雙方都把自己的證書發(fā)給對方,并都分別使用CA的公鑰去解密證書中的特征碼,如果能解密,則說明證書的確由他們所信任的CA機構(gòu)所頒發(fā);接著使用同樣的單向加密算法去提取證書中信息的特征碼,與解密出來的特征碼進行比較,如果兩者相同,說明證書內(nèi)容完整,沒有被篡改或破壞,而對方的證書中就有對方的公鑰。


    但這又引入了一個問題,Alice和Bob如何可靠地獲取CA的呢?顯然,不能基于網(wǎng)絡通信的方式獲取CA的公鑰(否則又會出現(xiàn)中間人***等問題),而應該當面交易。全球有多個CA機構(gòu),這些CA的數(shù)量是有限、基本固定的;它們彼此之間存在互信鏈,也就是說CA的信任關(guān)系是可以傳遞的。為了管理方便,全球有一個根CA,它與其他CA是從屬關(guān)系。


    為了解決通信主機能夠可靠獲取CA的公鑰,CA需要自簽一份證書,就是CA自簽名證書,在證書信息中包括了CA的名稱、CA的公鑰等,通信主機(這里是Alice和Bob)需要獲取CA證書,這樣才能獲取CA公鑰以及其他的CA信息,并能通過CA證書來驗證其他通信主機的證書是否可靠。CA證書的獲取需要通過當面交易來實現(xiàn),而微軟公司直接在windows操作系統(tǒng)上集成了在全球具有公信力的CA證書,但在Linux中一般不內(nèi)置CA證書,需要自己通過可靠手段獲取。


    雖然通過上述手段可以極大地保證通信過程的安全性,但仍然存在問題,例如在這整個通信過程中使用的某種算法出現(xiàn)漏洞依然不夠安全。



    八、公鑰基礎(chǔ)設(shè)施--PKI


    以上述為例子,如果Alice的私鑰丟失或者被竊取,則需要立即向CA機構(gòu)申請吊銷證書,聲明證書作廢,將損失將至最低;為了能夠第一時間讓其他人知道證書已經(jīng)吊銷,可以通過各種媒體來傳播,例如新聞、報紙等。由此可見,CA不單要頒發(fā)證書,還需要提供證書吊銷列表,公開聲明有哪些證書已經(jīng)吊銷及不能再信任。因此,為了可以更好地管理CA,發(fā)展出了一套以CA為核心的體系--公鑰基礎(chǔ)設(shè)施(Public Key Infrastructure,縮寫為:PKI)。


    PKI架構(gòu)主要包括以下四部分:

    ①簽證機構(gòu):Certificate Authority,縮寫為CA;負責簽署證書;

    ②注冊機構(gòu):Registration Authority,縮寫為RA;負責接收簽署證書的申請;

    ③證書吊銷列表:Certificate Revocation List,縮寫為CRL;負責公開所有已經(jīng)吊銷的證書;

    ④證書存取庫:Certificate Repository,縮寫為CR;負責將公開所有已申請的證書的相關(guān)信息;


    為了統(tǒng)一數(shù)字證書的格式,國際電信聯(lián)盟(ITU-T)制定了數(shù)字證書標準--X.509,即數(shù)字證書的格式遵循X.509標準。在X.509v3版本中,定了數(shù)字證書的結(jié)構(gòu)以及認證協(xié)議標準。而由X.509v3定義的數(shù)字證書應該包括以下幾個部分:

    1. 版本號

    2. 序列號(標識第幾個證書)

    3. 簽名算法

    4. 發(fā)行者名稱(CA名稱)

    5. 有效期限

    6. 主體名稱

    7. 主體公鑰

    8. 發(fā)行者的唯一標識

    9. 主體的唯一標識

    10. 擴展信息

    11. 發(fā)行者的簽名(即CA對整個證書的簽名;CA把以上內(nèi)容進行單向加密,得到特征碼;再使用CA自己的私鑰對特征碼進行加密,并附在證書后面,用來生成發(fā)行者數(shù)字簽名)



    九、總結(jié):CA如何在A和B通信之間發(fā)揮作用?


    基本過程:

    1、首先,在A和B通信之前需要互相發(fā)送證書;

    2、A和B之間協(xié)商通信過程中要使用的加密算法(對稱加密、公鑰加密、單向加密、密鑰交換);

    3、開始驗證證書:

    1)用CA的公鑰去解密CA的簽名,如果能解密,則說明證書來源可靠;

    2)用同樣的單向加密算法計算出證書中信息的特征碼,與解密得到的特征碼進行比較;如果兩者相同,則說明證書完整性可靠;

    3)檢查證書的有效日期是否在當前時間的合理范圍內(nèi);如果證書過期了則不會被認可;

    4)檢查證書的主體名稱與期望通信的對方是否一致;如果不一致則不會被認可;

    5)檢查證書是否被吊銷過;如果沒有吊銷則可使用該證書,否則證書不會被認可。


    注意:在每次通信過程中,以上步驟一步也不能少;另外,A和B需要事先獲取CA自簽名證書,因為持有CA自簽名證書是用來驗證CA頒發(fā)給其他人或主機的證書的前提。



    十、SSL/TLS概述


    1、為什么需要SSL?


    我們知道,服務程序一般都會存在bug,***只要找到服務程序的bug就可以基于網(wǎng)絡進行***。對于這種情況,我們的服務程序邏輯要盡可能做得足夠安全,但程序總會有bug,因此需要做好安全防范,解決思路是使用一個監(jiān)控程序?qū)λ械馁Y源訪問做監(jiān)控,如果***者想做一些未經(jīng)授權(quán)的資源訪問,則這個監(jiān)控程序自動報警。通俗地來講,就是“一旦它把手伸到不該伸的地方就報警”,這是一種輔助機制。但這種輔助機制只能確保本地服務程序不會被違規(guī)機制所訪問到,不能確保資源在網(wǎng)絡傳輸過程是安全的。


    在早期計算機未普及時,使用計算機網(wǎng)絡進行通信的主機很少,網(wǎng)絡安全不是很受到重視。而在早期設(shè)計的一些協(xié)議本身就不具備加解密功能,例如http,ftp,smtp,pop3等協(xié)議。即便后來隨著互聯(lián)網(wǎng)的發(fā)展,網(wǎng)絡安全得到越來越多的關(guān)注,這些協(xié)議也很難在其中添加加解密功能,因為早期的很多協(xié)議已經(jīng)成為了網(wǎng)絡通信的公共功能和基礎(chǔ)設(shè)施,一旦在這些基礎(chǔ)協(xié)議(例如http)添加上加解密功能,則會牽一發(fā)而動全身,各個依賴于這些基礎(chǔ)服務程序開發(fā)出來的程序勢必會受到影響。


    因此,網(wǎng)景公司為http協(xié)議研發(fā)設(shè)計了一種可被調(diào)用的功能模塊,這個功能模塊所處的位置在應用層和傳輸層之間的半層,作為公共功能庫,也稱為半層庫。任何程序在研發(fā)時可調(diào)用這個半層庫以實現(xiàn)加解密和密鑰分發(fā)的功能,不調(diào)用則不使用。這個半層庫就是SSL庫。



    2、SSL是什么?


    SSL(Secure Sockets Layer,安全套接字層)是一種安全的加解密協(xié)議,它的實現(xiàn)也是需要程序(算法)來實現(xiàn)。SSL是位于應用層和傳輸層之間的半層庫,基于任何其它協(xié)議(例如HTTP、FTP等)進行通信時,只要調(diào)用了SSL這半層庫就可以實現(xiàn)安全加密通信了。SSL的功能包括加密、數(shù)字證書認證、完整性保護而對SSL協(xié)議的一種開源實現(xiàn)OpenSSL程序就可以完成這些功能。基于HTTP協(xié)議進行通信時,只要調(diào)用了SSL庫,就可以實現(xiàn)基于HTTPS進行更安全的通信了,因此HTTPS不是一個新的應用層協(xié)議。因為調(diào)用了SSL庫,因此基于HTTPS進行通信同樣可實現(xiàn)加密通信、數(shù)字證書認證、完整性保護等功能了。通常,HTTP直接和TCP通信,一旦使用SSL,則HTTP變成和SSL通信,再由SSL和TCP進行通信了。


    SSL是一種公共功能,但SSL本身只是一種規(guī)范和協(xié)議,需要程序員開發(fā)出一種遵循SSL協(xié)議規(guī)范的程序來實現(xiàn)。對于其他協(xié)議和程序也一樣,例如httpd、nginx是HTTP協(xié)議的服務端程序?qū)崿F(xiàn),而各種瀏覽器如IE、Chrome及Firefox等則是HTTP協(xié)議的客戶端程序?qū)崿F(xiàn);在Windows界面上的遠程終端程序Xshell、在Linux上的SSH程序也是SSH協(xié)議的客戶端程序?qū)崿F(xiàn)。而SSL協(xié)議在Linux上的開源實現(xiàn)有OpenSSL和GPG,其中OpenSSL是SSL協(xié)議和SSL庫的實現(xiàn),而GPG是PGP協(xié)議的實現(xiàn),Openssl和GPG也是密鑰算法和協(xié)議的實現(xiàn)。


    任何一個加密解密庫(例如ssl庫)要求必須滿足以下兩個功能:

    ①實現(xiàn)加解密的基本功能;

    ②能夠基于網(wǎng)絡通信方式實現(xiàn)密鑰分發(fā)。



    3、加密通信協(xié)議歷史

    1994年,NetScape公司設(shè)計了主要用于Web的SSL?1.0版,但因漏洞太多所以沒有發(fā)布。 1995年,NetScape公司發(fā)布了SSL?2.0版,但同樣有很多漏洞。 1996年,SSL?3.0版問世,由NetScape發(fā)布,并得到大規(guī)模應用。 1999年,IEIF將SSL標準化,發(fā)布了SSL的升級版TLS?1.0。 2006年和2008年,TLS進行了兩次升級,分別發(fā)布了TLS?1.1和TLS?1.2。 截止至2016年1月,TLS?1.3仍然處于草案階段。


    協(xié)議:

    SSL:Secure?Sockets?Layer,安全套接字層協(xié)議。 TLS:Transport?Layer?Security,傳輸層安全協(xié)議。


    目前應用最廣泛的是TLS 1.2版,在主瀏覽器上都有支持。

    TLS 1.0通常被標識為SSL 3.1,TLS 1.1為SSL 3.2,TLS 1.2為SSL 3.3。


    4、SSL/TLS分層設(shè)計

    雖然SSL/TLS主要是為了實現(xiàn)加解密以及密鑰分發(fā)的功能,但也采用了分層設(shè)計規(guī)范來對其進行實現(xiàn),各分層設(shè)計如下:

    1、最底層:基礎(chǔ)算法原語的實現(xiàn),如aes,rsa,md5等。 2、再上一層:各種算法的實現(xiàn)。 3、再上一層:各種組合算法實現(xiàn)的半成品。 4、最上層:用各種組件拼裝而成的各種成品密碼學協(xié)議軟件。

    SSL/TLS采用分層設(shè)計的好處在于SSL/TLS可以提供諸多應用程序在不同級別進行調(diào)用,可以直接調(diào)用其軟件程序,也可以調(diào)用其半成品,甚至可以調(diào)用其算法。



    5、SSL/TLS協(xié)議的基本過程

    (1)客戶端向服務器端索要并驗證證書。 (2)雙方協(xié)商生成“會話密鑰”。 (3)雙方采用“會話密鑰”進行加密通信。


    上面過程的前兩步,又稱為“握手階段”(handshake)


    握手階段的詳細過程:

    “握手階段”一共有四個步驟,我們一個個來看。需要注意的是,在“握手階段”過程中,客戶端和服務端之間的通信是明文的。


    5.1 客戶端發(fā)出請求(ClientHello)

    首先,由客戶端(通常是瀏覽器)向服務器端發(fā)送一個加密通信請求,這個就叫做ClientHello請求。

    在這一步中,客戶端主要向服務器提供以下信息:

    (1)支持的加密通信協(xié)議版本,如:TLS?1.2。 (2)客戶端生成的一個隨機數(shù),稍后用于生成“會話密鑰”。 (3)支持的加密算法,如:AES,?3DES,?RSA算法。 (4)支持的壓縮算法。

    這里需要注意的是,客戶端向服務器發(fā)送的信息中不包括服務器的域名,這是因為從理論上一個服務器只能包含一個網(wǎng)站,否則會分不清客戶端請求的是哪個網(wǎng)站的證書,這也是為什么一臺服務器上只有一張數(shù)字證書的原因。


    顯然,這對于虛擬主機來說非常不方便,因此TLS協(xié)議在2006年時添加了Server Name Indication擴展,允許客戶端向服務器提供它所請求的域名。


    5.2 服務器回應(ServerHello)

    服務器接收到客戶端的請求后,就會作出回應,這就叫做ServerHello。服務器的回應應該包括以下內(nèi)容:

    (1)確認使用的加密通信協(xié)議版本,如:TLS?1.2。如果瀏覽器與服務器支持的版本不同,服務器關(guān) 閉加密通信。 (2)服務器生成的一個隨機數(shù),稍后用于生成“會話密鑰”。 (3)確認使用的加密算法,如:AES,?3DES,?RSA。 (4)服務器證書。

    處理上面這些信息,如果服務器需要確認客戶端的身份,就會在這一步中再添加一項請求,即要求客戶端提供“客戶端證書”。比如,金融機構(gòu)往往只允許客戶連接入自己的網(wǎng)絡,在這個網(wǎng)絡中創(chuàng)建了其私有CA;并且,金融機構(gòu)會向正式客戶提供一個USB密鑰,里面就包含有一張證書。


    5.3 客戶端回應

    客戶端收到服務器回應后,首先要驗證服務器證書。如果證書不是可信CA機構(gòu)頒布、或者證書中完整性驗證不通過、或者證書已經(jīng)過期、或者證書持有者與客戶端期望通信的主機不一致、或者證書已經(jīng)吊銷,就會向訪問者發(fā)出一個警告,由其選擇是否要繼續(xù)通信。

    如果證書確認無誤,就會從證書中取出服務器的公鑰,并向服務器發(fā)送以下內(nèi)容:

    (1)一個隨機數(shù)。該隨機數(shù)用服務器公鑰加密,防止被竊聽。 (2)編碼變更通知,表示隨后的信息將用雙方商定的加密方法和密鑰發(fā)送。 (3)客戶端握手結(jié)束通知,表示客戶端握手階段已經(jīng)結(jié)束。這一項同時也是前面發(fā)送的所有內(nèi)容的 hash值,用來供服務器校驗,

    在這一步中客戶端發(fā)送給服務器端的隨機數(shù)是整個握手階段中的第三個隨機數(shù),又稱"pre-master key"。有了它之后,客戶端和服務器就同時有了三個隨機數(shù),接著雙方就用事先商定的加密方法,各自由這三個隨機數(shù)生成同一把本次通信要用到的“會話密鑰”。

    至于為什么為什么一定要用三個隨機數(shù)來生成“會話密鑰”:

    (1)不管是客戶端還是服務器,都要使用隨機數(shù),確保每次通信生成的臨時“會話密鑰”都不相同。 (2)由于SSL協(xié)議中的證書是靜態(tài)的,因此很有必要引入一種隨機的因素,來確保通信中使用的“會 話密鑰”足夠隨機,不具有可猜測性。 (3)SSL協(xié)議不信任通信雙方的主機能夠生成真正的隨機數(shù),因為如果隨機數(shù)是軟件生成的,那么這 個由軟件生成的隨機數(shù)就有章可循,生成的只是偽隨機數(shù),因此為了避免這一情況,就將客戶端、 服務端的隨機數(shù)和pre-master-secret(或者pre-master?key,由客戶端生成)這個隨機數(shù)“合并”、“攪和”起來,通過 密鑰生成器生成一個“會話密鑰”,使其足夠隨機,不具有可猜測性。

    此外,如果在前一步中,服務器需要向客戶端請求證書時,則在這一步中客戶端會向服務器發(fā)送“客戶端證書”。


    5.4 服務器的最后回應

    服務器收到客戶端的發(fā)來的第三個隨機數(shù)"pre-master-secret"之后,計算生成本次會話用到的“會話密鑰”。而后,向客戶端發(fā)送如下內(nèi)容:

    (1)編碼變更通知,表示隨后的信息將用雙方商定的加密方法和密鑰發(fā)送。 (2)服務器握手結(jié)束通知,表示服務器的握手階段已經(jīng)結(jié)束。這一項同時也是前面發(fā)送的所有內(nèi)容的 hash值,用來供客戶端校驗。

    至此,整個握手階段全部結(jié)束。接下來,客戶端與服務器進入加密通信。如果是基于HTTPS進行加密通信,握手階段之后的通信過程就完全使用普通的HTTP協(xié)議了,只不過使用“會話密鑰”加密內(nèi)容。




    6、SSL/TLS的開源實現(xiàn)

    前面提到,SSL/TLS的開源實現(xiàn)為OpenSSL和GPG,這里介紹OpenSSL。


    OpenSSL的組件:

    OpenSSL是對SSL/TLS協(xié)議、SSL/TLS庫的實現(xiàn),其組件包括以下三部分:

    libcrypto庫:加密解密庫,專門用于實現(xiàn)加密解密功能。

    libssl庫:用于實現(xiàn)ssl安全通信機制的庫。

    openssl多用途命令行工具:可實現(xiàn)加解密功能,以及模擬ssl實現(xiàn)安全通信功能。


    需要注意的是,如果只是使用加解密功能,而不需要實現(xiàn)網(wǎng)絡通信,則直接調(diào)用libcrypto庫即可;如果既要使用加解密功能,又要實現(xiàn)網(wǎng)絡安全通信,則可以調(diào)用libcrypo庫和libssl庫。而openssl這個工具則內(nèi)部封裝了libcrypto庫和libssl庫,可以實現(xiàn)上述加解密和安全通信的功能。libcrypto庫和libssl庫主要由開發(fā)者寫程序時調(diào)用。




    接下來介紹這個openssl多用途命令行工具對上述密鑰算法和協(xié)議的實現(xiàn)。


    openssl有眾多子命令,這些子命令可分為三類:

    (1)標準命令 (2)信息摘要命令(dgst子命令) (3)加密命令(enc子命令)

    查看:


    接下來介紹如何使用openssl命令實現(xiàn)對稱加密、單向加密、公鑰加密,以及如何生成用戶密碼和隨機數(shù)。


    對稱加密:

    (1)對稱加密工具:openssl enc, gpg

    (2)支持的對稱加密算法:des, 3des, aes, blowfish, twofish


    使用對稱加密算法加解密時,需要使用openssl的子命令enc。這里可查看enc幫助手冊:

    [root@localhost?~]#?whatis?enc enc??????????????????(1ssl)??-?symmetric?cipher?routines [root@localhost?~]#?man?enc


    這里以/root目錄下的test文本文件作為示例吧:

    [root@localhost?~]#?cat?test? I?love?you,Bob!


    使用算法3des對test文本進行對稱加密

    [root@localhost?~]#?openssl?enc?-e?-a?-des3?-salt?-in?test?-out?test.cipher //加密后輸出為test.cipher文本文件。 enter?des-ede3-cbc?encryption?password:????//此處輸入密鑰,由3des算法結(jié)合密鑰才能加密。 Verifying?-?enter?des-ede3-cbc?encryption?password:????//再次確認密鑰。 [root@localhost?~]#? [root@localhost?~]#?cat?test.cipher????//重新查看加密后的文本。 U2FsdGVkX18R/MdkP4l4Z8Gxrgfdsf6zne+EBjC4zWWunysQw39QYw==????//已加密為密文。

    說明(enc子命令):

    -d:表示解密。 -e:表示加密。 -ciphername:表示加密算法的名稱。 -salt:表示在加密時添加雜質(zhì)。 -in:讀入指定文件。 -out:輸出為指定文件。 -a/-base64:編碼為文本格式。沒加此選項時,輸出為二進制格式(顯示為亂碼)


    也可對剛剛加密的文本進行解密

    [root@localhost?~]#?openssl?enc?-d?-a?-des3?-salt?-in?test.cipher?-out?test.plain //解密后輸出為test.plain文本文件。 enter?des-ede3-cbc?decryption?password:????//輸入解密密鑰,對稱加密時為加密密鑰。 [root@localhost?~]#? [root@localhost?~]#?cat?test.plain????//查看解密后的文本文件。 I?love?you,Bob!????//已解密為明文。


    單向加密:

    單向加密工具:openssl dgst, gpg, md5sum, sha1sum, ...


    這里同樣只介紹openssl dgst。單向加密需要用到openssl的子命令dgst,可查看其幫助手冊:

    [root@localhost?~]#?whatis?dgst dgst?????????????????(1ssl)??-?message?digests dgst?[md2]???????????(1ssl)??-?message?digests dgst?[md4]???????????(1ssl)??-?message?digests dgst?[md5]???????????(1ssl)??-?message?digests dgst?[mdc2]??????????(1ssl)??-?message?digests dgst?[ripemd160]?????(1ssl)??-?message?digests dgst?[sha1]??????????(1ssl)??-?message?digests dgst?[sha]???????????(1ssl)??-?message?digests //根據(jù)自己需要選擇即可。


    單向加密操作:

    [root@localhost?~]#?openssl?dgst?-md5?test MD5(test)=?00843d3c93ab6f87ed642a66960a6815


    使用其他工具也能得到相同的加密結(jié)果:

    [root@localhost?~]#?md5sum?test 00843d3c93ab6f87ed642a66960a6815??test


    公鑰加密:

    前面提到,公鑰加密的用途有三個:數(shù)字簽名、密鑰交換、數(shù)據(jù)加密解密,它們各自的實現(xiàn)方式如下:

    (1)數(shù)字簽名:

    ①工具:openssl rsautl, gpg

    ②算法:RSA, DSA, ELGamal


    (2)密鑰交換:

    ①工具:openssl dh, gpg

    ②算法:RSA, DSA, ELGamal


    (3)加密解密:

    ①工具:openssl rsautl, gpg

    ②算法:RSA, ELGamal


    這里生成本地私鑰:

    [root@localhost?~]#?openssl?genrsa?1024 //此處'1024'指明生成的私鑰長度為1024bits.并使用rsa算法生成私鑰。Generating?RSA?private?key,?1024?bit?long?modulus ......++++++ ..............................................................................................++++++ e?is?65537?(0x10001) -----BEGIN?RSA?PRIVATE?KEY----- MIICXQIBAAKBgQC9uvCH3FsCZ4+nZJYNYXY8obVWRHFqO4lzunc4KmNuTIh/vwNZ 3BDijEse6gZNRjSyi3S8NcL8X6nX5mbQVYeP/LN1qU61hQZSnISH+ITtzq/fmRZI ZdaUeHWnwoHh4TS0kbrHvTNrAU/xVmKdLs/bezlWp9JpkqcF3q4rIDADuQIDAQAB AoGBAJpnBdQq2c2tJdUeIJcnF6fkGcTo0juX1BZgSyFkLaLXmcYMVtfMJdmYPpIb 9aDxX3Vl1ExOnC3yVDAlispEsJpvsFbmqkmDO5xp4ejlHcjHjrkkOYdGX5jM0ziO ns1yZCa7VW2FgZ1BfGUlPvViuf/JwoCl+FF6MCTiA9qYnEMBAkEA6npEERTfZtRN /3RhoLeEnU+tGspuL302AMCwZiaxdz2+oERVrLxzoyh8q9NjDyVNrBJfrfqf8/Fd 8KnRb0vq0QJBAM8lNDXoaMv8eLn8aKAOsz/fvOZdiat2pJylqsEl/vCksabymMHH VTOKvBJmoEmBZZPGiqYM72cUgdsaCJbGdGkCQQDB/N2LdEVPgZ32FocevDXPIDgK zidSyrh+7uwB10lDaaXoWiC3hEH3XmumjICL60TTc3ANNChZXftmPFi1R43BAkBq q/kADcfxy/kLpdznF8rdCMXJR7/+iWFpvbJ6NqvblqRZmbJqj9Djcv046JqAX99E Q0jhC+Y5Cgl5ICXuJxKJAkB+oRerGIBLzhKA2PiR05HqBZ9Uylg7GtVaCBhlbMUK Nqvni0dpY7b7uv8F0Xpu9CvT3ybVjZJFqiL1MVcmj3Rq -----END?RSA?PRIVATE?KEY-----


    可以直接將生成的私鑰通過重定向的方式導入文件,但openssl支持通過-out選項直接將生成的私鑰導出為指定文件,效果和重定向一樣,這里直接使用-out選項作為示例:

    [root@localhost?~]#?openssl?genrsa?-out?/tmp/private.key?512 Generating?RSA?private?key,?512?bit?long?modulus .......++++++++++++ ....++++++++++++ e?is?65537?(0x10001) [root@localhost?~]#? [root@localhost?~]#? [root@localhost?~]#?cat?/tmp/private.key????//查看生成的private.key文件。 -----BEGIN?RSA?PRIVATE?KEY----- MIIBPAIBAAJBAOM4bUGEPA24bcWsB4qShkfddp/ChBAQ1REkuLASvs/c7wpjmhti C9+NS7hP1PIUL4drrGbu2PjxMhkqAmaahScCAwEAAQJAWViUzZBbtOFyeKn+hSS8 nIGe5Y8tMswLnCQeY03brgvqVY//JG8QRG9sIxRpD0saupLv5n8KI7hbt5Btin/r kQIhAPXMzCUmODyrd5Nv/oyeVPUrWoPgisziUWnpMZy+qrNbAiEA7KZA2FBGteBs axwlNrobCb7k4zX+yxKQ7R91YEhMGyUCIQDJyn8SRIVIsZAyd3Anq1ieCiB+QdpR h79EztAPGaz0HwIhAJp+Wz0dA1y/e+hdQoo862PsZP9Ug9fNciHr9LP73vulAiEA vVT+5vLL/6h31qIltgNn8Qdpd4DhMEn3aNQfj/eAPFs= -----END?RSA?PRIVATE?KEY-----

    但是!這樣會出現(xiàn)一個問題,我們不妨查看以下這個生成的私鑰文件的屬性:

    [root@localhost?~]#?ll?/tmp/private.key -rw-r--r--.?1?root?root?497?Mar??6?00:44?/tmp/private.key

    一般生成的本地私鑰僅自己可見,且一般不放在/tmp目錄下(這里僅作為演示)。


    所以我們可以在輸出私鑰時直接設(shè)置好權(quán)限,如下:

    [root@localhost?~]#?(umask?077;?openssl?genrsa?-out?/tmp/private2.key?512) Generating?RSA?private?key,?512?bit?long?modulus ..............++++++++++++ .........++++++++++++ e?is?65537?(0x10001) [root@localhost?~]#? [root@localhost?~]#?ll?/tmp/private2.key? -rw-------.?1?root?root?497?Mar??6?00:51?/tmp/private2.key????//僅用戶自己能訪問。

    注意:這里使用了'umask 077',將權(quán)限掩碼設(shè)置為'077',這樣生成的私鑰文件的權(quán)限就是'600'了。這里還需要注意的是,在命令兩端用小括號括起來表示調(diào)用子shell執(zhí)行括號中的命令,執(zhí)行結(jié)束后即退出子shell,因為在子shell中設(shè)置的權(quán)限掩碼不會改變當前shell的權(quán)限掩碼。


    因此,生成本地私鑰的格式為:

    #?(umask?077;?openssl?genrsa?-out?/PATH/TO/PRIVATE_KEY_FILE?NUM_BITS)

    這里/PATH/TO/PRIVATE_KEY_FILE需要根據(jù)自己的需要替換為私鑰的輸出文件,NUM_BITS替換為生成私鑰的位長。


    我們前面提到,公鑰是從私鑰中提取得到,這里就直接提取剛才生成的私鑰為例:

    [root@localhost?~]#?openssl?rsa?-in?/tmp/private2.key?-pubout //其中-pubout選項表示提取出公鑰。 writing?RSA?key -----BEGIN?PUBLIC?KEY----- MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMeCHQUzzvDOqXvwsywlTW6LagW5Wz9U 0x5liKDtX//NJ2wHAmR/6kufaW+yw2pzBd7kFgrJTHTRkt4AnfZtsgECAwEAAQ== -----END?PUBLIC?KEY-----


    生成用戶密碼:

    用戶密碼的生成工具有:passwd, openssl passwd


    這里可以查看openssl的子命令passwd的幫助手冊:

    [root@localhost?~]#?whatis?passwd passwd???????????????(1)??-?update?user's?authentication?tokens passwd???????????????(5)??-?password?file passwd?[sslpasswd]???(1ssl)??-?compute?password?hashes //此處標識為'1ssl'的第三項即為openssl的子命令passwd的幫助手冊。 [root@localhost?~]#?man?sslpasswd


    使用openssl生成用戶密碼格式如下:

    #?openssl?passwd?-1?-salt?SALT

    這里'SALT'根據(jù)自己的需要進行替換。


    示例:

    [root@localhost?~]#?openssl?passwd?-1?-salt?hello1234 Password:? $1$hello123$281DIFsN1M4.qkU0KTrJN.

    需要注意的是,這里的'-1'表示使用md5算法進行單向加密,目前openssl還不支持使用sha512進行單向加密,因此不能使用'-6'標識sha512算法并使用之進行加密。


    生成隨機數(shù):

    隨機數(shù)生成工具有:openssl rand


    語法格式:

    #?openssl?rand?-hex?NUM????//采用16進制編碼輸出。 #?openssl?rand?-base64?NUM????//采用文本編碼輸出。

    這里的'NUM'表示生成的隨機數(shù)的字節(jié)數(shù),可根據(jù)自己的需要進行替換。


    生成8個16進制隨機數(shù):

    [root@localhost?~]#?openssl?rand?-hex?4 7a3df49f


    產(chǎn)生base64編碼的100位隨機數(shù):

    [root@localhost?~]#?openssl?rand?-base64?100 U5lwC1cgtgfNJ9s55jU6xR0rpTsErzJ4mZUsR+kVrASZsvNyTP/q/7/E1sG8bRqc 3ZYCKISsK60Au5tnX16WgKRLr533axQgur7z/JhxEezcnc4wqSHsaq6nqvVBT3H9 oQTEzA==


    以8個16進制隨機數(shù)作為salt設(shè)置密碼:

    [root@localhost?~]#?openssl?passwd?-1?-salt?$(openssl?rand?-hex?4) Password:? $1$9a9222ab$gMoHzmXOgGRMdTE54w5Jz0

    借助'openssl rand'來生成密碼是常用的技巧。


    這里介紹一下Linux系統(tǒng)上的隨機數(shù)生成器:

    /dev/random:僅從熵池返回隨機數(shù),一旦熵池中的隨機數(shù)用盡,則會阻塞,導致程序無法取隨機數(shù)。 /dev/urandom:從熵池中返回隨機數(shù),一旦熵池中的隨機數(shù)用盡,則會利用軟件生層偽隨機數(shù),不 會導致阻塞;偽隨機數(shù)不安全。

    這里的熵池就是運行中的內(nèi)核維護的一段內(nèi)存空間,在這片內(nèi)存空間中存放了大量隨機數(shù),而在系統(tǒng)剛啟動時為空。熵池中隨機數(shù)的來源主要有:

    (1)硬盤IO中斷時間間隔:當發(fā)生IO操作時,各個IO操作之間的時間差即作為隨機數(shù),放在內(nèi)存中。 (2)鍵盤IO中斷時間間隔:鍵盤的兩次擊鍵之間的時間差作為隨機數(shù),放在內(nèi)存中。

    因此由硬件產(chǎn)生的隨機數(shù)不具有可猜測性,相對于軟件產(chǎn)生的偽隨機數(shù)更安全。在安全性要求較高時不會使用/dev/urandom生成,因為有可能會生成偽隨機數(shù),而偽隨機數(shù)不安全。

    需要注意的是,一旦程序取了內(nèi)存中的某個隨機數(shù),則相當于“剪切”了內(nèi)存中的這個隨機數(shù)(保證兩個程序取到的隨機數(shù)不同)。容易想到,如果程序取內(nèi)存中隨機數(shù)的速度比生成隨機數(shù)的速度塊時,則有可能耗盡內(nèi)存中的隨機數(shù),在這種情況下就可能造成阻塞,程序需要等待熵池中的隨機數(shù)的生成。

    如果阻塞了應該如何解決?方法之一自然是快速敲鍵盤以產(chǎn)生大量隨機數(shù),而另一種方法是增加IO操作數(shù),例如復制一個大文件至另外路徑下(會產(chǎn)生大量IO操作),第二種方法產(chǎn)生隨機數(shù)的速度要快得多。


    通過openssl構(gòu)建和管理私有CA:

    CA有兩種,一種是公共信任的CA,另一種是私有CA。私有CA可用于實現(xiàn)小范圍內(nèi)的證書驗證。

    建立私有CA的工具有openssl和OpenCA,OpenCA是openssl的二次封裝,更為人性化。但熟練掌握openssl創(chuàng)建和管理私有CA能幫助我們更好地理解CA背后的工作機制,因此這里介紹openssl創(chuàng)建和管理私有CA。


    當openssl命令基于CA工作時,配置文件為:/etc/pki/tls/openssl.cnf.

    這里介紹以下配置文件中的一些配置項:

    [?ca?]????????//openssl子命令ca。 default_ca?=?CA_default????//默認CA配置項為CA_default。[?CA_default?]????????//CA的默認工作環(huán)境定義。 dir?=?/etc/pki/CA????//證書的工作目錄。 certs?=?$dir/certs????//?已簽署證書的存放目錄。 crl_dir?=?$dir/crl????//吊銷證書的存放目錄。 database?=?$dir/index.txt????//數(shù)據(jù)庫,存放當前已頒發(fā)證書的索引。new_certs_dir?=?$dir/newcerts????//該目錄的每個文件存放對應證書的詳細信息。certificate?=?$dir/cacert.pem????//CA證書。 serial?=?$dir/serial????//該文件存放當前要申請的證書的序列號,如果要申請證書,則使用該序列號。 crlnumber?=?$dir/crlnumber????//該文件存放當前要吊銷的證書的序列號,如果要申請證書,則使用該序列號。crl?=?$dir/crl.pem????//當前吊銷的證書。 private_key?=?$dir/private/cakey.pem????//CA的私鑰。default_days?=?365????//證書的有效期限。 default_crl_days?=?30????//CRL的有效期限。 default_md?=?sha256????//默認的消息摘要算法。[?req?]????//openssl的子命令req,用于生成證書簽署請求。


    構(gòu)建私有CA時,在確定配置為CA的服務器上生成一個自簽證書,并為CA提供所需要的目錄及文件即可。步驟如下:

    (1)生成私鑰。

    (2)生成自簽證書。

    (3)為CA提供所需的目錄及文件。


    下面一步步進行演示和說明。

    演示之前,需要準備一臺CA服務器主機和HTTP服務器主機(后面實驗用到),它們的IP地址分別為:

    CA服務器主機:10.10.10.140/24 HTTP服務器主機:10.10.10.139/24


    (1)生成私鑰。

    [root@CA?~]#?(umask?077;?openssl?genrsa?-out?/etc/pki/CA/private/cakey.pem?4096) Generating?RSA?private?key,?4096?bit?long?modulus ....................++ ....................................................++ e?is?65537?(0x10001)

    需要注意的是,這里生成的私鑰文件名為cakey.pem,這個文件名必須和配置文件中的定義保持一致,并保證生成出來的私鑰文件的權(quán)限符合要求。

    [root@CA?~]#?ll?/etc/pki/CA/private/cakey.pem? -rw-------.?1?root?root?3243?Mar?22?09:15?/etc/pki/CA/private/cakey.pem


    (2)生成自簽證書。

    [root@CA?~]#?openssl?req?-new?-x509?-key?/etc/pki/CA/private/cakey.pem?-out?/etc/pki/ CA/cacert.pem?-days?3655 //如果是生成證書簽署請求,則不用加上-x509選項,如果是CA為自己頒發(fā)自簽證書,則需要加上 -x509選項。 You?are?about?to?be?asked?to?enter?information?that?will?be?incorporated into?your?certificate?request. What?you?are?about?to?enter?is?what?is?called?a?Distinguished?Name?or?a?DN. There?are?quite?a?few?fields?but?you?can?leave?some?blank For?some?fields?there?will?be?a?default?value, If?you?enter?'.',?the?field?will?be?left?blank. ----- Country?Name?(2?letter?code)?[XX]:CN????//國家名(2個字符)。 State?or?Province?Name?(full?name)?[]:Guangdong????//省名。 Locality?Name?(eg,?city)?[Default?City]:Guangzhou????//城市名。 Organization?Name?(eg,?company)?[Default?Company?Ltd]:iTab???//公司名,這里以iTab示例。 Organizational?Unit?Name?(eg,?section)?[]:Ops????//單位名。 Common?Name?(eg,?your?name?or?your?server's?hostname)?[]:ca.iTab.com //如果是個人之間通信,則填寫證書持有者名稱;如果是服務器之間通信,則填寫服務器主機名。 Email?Address?[]:caadmin@iTab.com????//郵箱名,可不填寫。

    這里需要注意的是,我們知道證書中存放的是公鑰,但這里-key選項接著的是私鑰文件路徑,這是怎么回事呢?其實,這個命令在生成自簽證書時會自動從私鑰中提取出公鑰,并放入證書中。


    各選項的意義:

    -new:生成新證書簽署請求。 -x509:生成自簽格式證書,專用于創(chuàng)建私有CA時。 -key:生成請求證書用到的私鑰文件路徑。 -out:生成的請求文件路徑;如果是自簽操作,則直接生成簽署過的證書。 -days:證書的有效時長,單位是day。


    (3)為CA提供所需的目錄及文件。

    創(chuàng)建所需的目錄及文件:

    [root@CA?~]#?mkdir?-pv?/etc/pki/CA/{certs,crl,newcerts} [root@cA?~]#?touch?/etc/pki/CA/{serial,index.txt}

    需要注意的是,這里創(chuàng)建的文件有可能是系統(tǒng)上默認就存在的,如果不存在則創(chuàng)建。


    serial這個文件需要給明第一個證書的號碼是多少:

    [root@CA?~]#?echo?01?>?/etc/pki/CA/serial

    這里表示一旦要為其他服務器主機簽署證書時,這個要申請的證書的序列號為01,此后會自動遞增。


    要用到證書進行安全通信的服務器,需要向CA請求簽署證書。步驟如下:

    (1)用到證書的主機生成私鑰。

    (2)生成證書簽署請求。

    (3)將證書簽署請求通過可靠方式發(fā)送給CA主機。

    (4)在CA主機上簽署證書,并通過可靠方式將簽署證書發(fā)送給申請證書簽署請求的主機。


    這里以httpd服務器為例,若要基于https進行加密通信時,需要在Web服務器上做如下操作:

    (1)Web服務器主機生成私鑰。

    這里將生成的私鑰放置于/etc/httpd/ssl目錄下:

    [root@www?~]#?mkdir?/etc/httpd/ssl [root@www?~]#?(umask?077;?openssl?genrsa?-out?/etc/httpd/ssl/httpd.key?2048) Generating?RSA?private?key,?2048?bit?long?modulus ...................................................+++ .........................+++ e?is?65537?(0x10001)

    需要注意的是,這里在Web服務器主機上創(chuàng)建的私鑰文件放置目錄可根據(jù)自己需要存放,這一點和CA主機上的私鑰必須存放在/etc/pki/CA/private目錄下不同。


    (2)Web服務器生成證書簽署請求。

    [root@www?~]#?openssl?req?-new?-key?/etc/httpd/ssl/httpd.key?-out?/etc/httpd/ssl/httpd. csr?-days?365 //這里申請簽署1年期限的證書;由于不是生成自簽證書,因此不需要加上'-x509'選項。 You?are?about?to?be?asked?to?enter?information?that?will?be?incorporated into?your?certificate?request. What?you?are?about?to?enter?is?what?is?called?a?Distinguished?Name?or?a?DN. There?are?quite?a?few?fields?but?you?can?leave?some?blank For?some?fields?there?will?be?a?default?value, If?you?enter?'.',?the?field?will?be?left?blank. ----- Country?Name?(2?letter?code)?[XX]:CN State?or?Province?Name?(full?name)?[]:Guangdong Locality?Name?(eg,?city)?[Default?City]:Guangzhou Organization?Name?(eg,?company)?[Default?Company?Ltd]:iTab Organizational?Unit?Name?(eg,?section)?[]:Ops Common?Name?(eg,?your?name?or?your?server's?hostname)?[]:www.iTab.com Email?Address?[]:webmaster@iTab.comPlease?enter?the?following?'extra'?attributes to?be?sent?with?your?certificate?request A?challenge?password?[]:????//挑戰(zhàn)式密碼。 An?optional?company?name?[]:

    這里最后要求輸入的挑戰(zhàn)式密碼的作用在于,如果此處的Web服務器主機向CA服務器基于網(wǎng)絡發(fā)送證書簽署請求時,一旦被竊取,則會要求竊取者輸入挑戰(zhàn)式密碼才可以查看證書請求中的信息。這兩個密碼可以不填寫。

    這里需要注意的是,由于剛才創(chuàng)建的CA是私有CA,而私有CA是在小范圍內(nèi)進行通信的,因此Web服務器主機和CA服務器主機最好在同一地域、同一公司、同一單位內(nèi),否則有可能會出錯。


    (3)通過可靠方式將Web服務器的證書簽署請求發(fā)送給CA主機。

    這一步需要注意的是,一般是CA機構(gòu)當面來到申請的服務器上拷貝證書簽署請求(例如U盤拷貝),而不使用網(wǎng)絡傳輸?shù)姆绞健5@里僅是作為實驗環(huán)境,因此直接用遠程復制工具scp將Web服務器主機上的證書請求發(fā)送至CA主機上:

    [root@www?~]#?scp?/etc/httpd/ssl/httpd.csr?root@10.10.10.140:/tmp/ root@10.10.10.140's?password:? httpd.csr????????????????????????????100%?1054?????1.0KB/s???00:00???? [root@www?~]#


    (4)在CA主機上簽署證書,并通過可靠方式將簽署證書發(fā)送給Web服務器。

    CA主機收到了證書簽署請求:

    [root@CA?~]#?ls?/tmp/httpd.csr? /tmp/httpd.csr

    為Web服務器主機簽署證書:

    [root@CA?~]#?openssl?ca?-in?/tmp/httpd.csr?-out?/etc/pki/CA/certs/httpd.crt?-days?365 //CA簽署的證書必須存放在/etc/pki/CA/certs目錄下。 Using?configuration?from?/etc/pki/tls/openssl.cnf Check?that?the?request?matches?the?signature Signature?ok Certificate?Details:Serial?Number:?1?(0x1)ValidityNot?Before:?Mar?22?05:13:01?2017?GMTNot?After?:?Mar?22?05:13:01?2018?GMTSubject:countryName???????????????=?CNstateOrProvinceName???????=?GuangdongorganizationName??????????=?iTaborganizationalUnitName????=?OpscommonName????????????????=?www.iTab.comemailAddress??????????????=?webmaster@iTab.comX509v3?extensions:X509v3?Basic?Constraints:?CA:FALSENetscape?Comment:?OpenSSL?Generated?CertificateX509v3?Subject?Key?Identifier:?23:3C:F0:B2:F6:D4:D3:6E:57:30:86:09:69:A4:57:E7:84:1E:8A:98X509v3?Authority?Key?Identifier:?keyid:8F:34:8D:89:F1:D4:57:88:55:99:0D:15:35:02:1D:B4:F8:11:CA:28Certificate?is?to?be?certified?until?Mar?22?05:13:01?2018?GMT?(365?days) Sign?the?certificate??[y/n]:y????//詢問是否簽署證書。1?out?of?1?certificate?requests?certified,?commit??[y/n]y????//詢問是否確定簽署證書。 Write?out?database?with?1?new?entries Data?Base?Updated????//證書簽署成功。 [root@www?~]#


    接著將證書通過可靠方式發(fā)送給Web服務器主機,這里在實驗環(huán)境下同樣使用scp命令即可:

    [root@CA?~]#?scp?/etc/pki/CA/certs/httpd.crt?root@10.10.10.139:/etc/httpd/ssl/ root@10.10.10.139's?password:? httpd.crt?????????????????????????100%?5865?????5.7KB/s???00:00???? [root@www?~]#


    在Web服務器主機上查看:

    [root@www?~]#?cd?/etc/httpd/ssl/ [root@www?ssl]#?ls httpd.crt??httpd.csr??httpd.key [root@www?ssl]#? [root@www?ssl]#?rm?-f?httpd.csr //因為已經(jīng)有了已簽署的證書httpd.crt了,所以這里把httpd.csr這個證書請求刪除了。


    此外,如果有需要還可以在Web服務器主機或CA服務器主機上查看證書中的信息,這里在Web服務器主機上查看證書信息:

    [root@www?ssl]#?openssl?x509?-in?/etc/httpd/ssl/httpd.crt?-noout?-serial?-subject serial=01 subject=?/C=CN/ST=Guangdong/O=iTab/OU=Ops/CN=www.iTab.com/emailAddress=webmaster@iTab.com

    相關(guān)選項:

    -noout:不輸出編碼格式的證書信息。 -serial:輸出證書的序列號。 -subject:輸出證書的主體標識信息。


    在CA主機上同樣可以查看證書的序列號和主體標識信息:

    [root@CA?~]#?openssl?x509?-in?/etc/pki/CA/certs/httpd.crt?-noout?-serial?-subject serial=01 subject=?/C=CN/ST=Guangdong/O=iTab/OU=Ops/CN=www.iTab.com/emailAddress=webmaster@iTab.com [root@CA?~]#


    吊銷證書時,步驟如下:

    (1)客戶端獲取要吊銷的證書的serial和subject信息(在使用證書的主機上執(zhí)行)。

    (2)CA主機先根據(jù)客戶端提交的serial和subject信息,對比其與本地數(shù)據(jù)庫index.txt中的存儲是否一致;如果一致,則吊銷證書。

    (3)生成吊銷證書的吊銷編號(第一次吊銷證書時執(zhí)行)。

    (4)更新證書吊銷列表。


    這里繼續(xù)以上述例子進行示例。

    (1)如果Web服務器主機要吊銷證書,首先應該獲取要吊銷的證書的serial和subject信息:

    [root@www?~]#?openssl?x509?-in?/etc/httpd/ssl/httpd.crt?-noout?-serial?-subject?>? crl_info [root@www?~]#? [root@www?~]#?cat?crl_info????//查看生成的文件。 serial=01 subject=?/C=CN/ST=Guangdong/O=iTab/OU=Ops/CN=www.iTab.com/emailAddress=webmaster@iTab.com [root@www?~]#? [root@www?~]#? [root@www?~]#?scp?crl_info?root@10.10.10.140:/tmp/ //將serial和subject信息發(fā)送到CA主機。 root@10.10.10.140's?password:? crl_info??????????????????????????100%??100?????0.1KB/s???00:00


    (2)CA主機根據(jù)客戶端(Web服務器)提交的serial和subject信息,將其與本地數(shù)據(jù)庫index.txt中存儲的信息進行比較,如果一致,則可以吊銷該證書:

    [root@CA?~]#?cat?/tmp/crl_info serial=01 subject=?/C=CN/ST=Guangdong/O=iTab/OU=Ops/CN=www.iTab.com/emailAddress=webmaster@iTab.com [root@CA?~]#? [root@CA?~]#?cat?/etc/pki/CA/index.txt V????180322051301Z????01????unknown????/C=CN/ST=Guangdong/O=iTab/OU=Ops/CN=www.iTab.com /emailAddress=webmaster@iTab.com????//對比結(jié)果一致。 [root@CA?~]#

    吊銷證書的語法格式:

    # openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem

    其中的SERIAL要換成證書真正的序列號。


    開始吊銷證書:

    [root@CA?~]#?openssl?ca?-revoke?/etc/pki/CA/newcerts/01.pem????//這里序列號為01. Using?configuration?from?/etc/pki/tls/openssl.cnf Revoking?Certificate?01. Data?Base?Updated [root@CA?~]#? [root@CA?~]#?cat?/etc/pki/CA/index.txt R????180322051301Z????170322114603Z????01????unknown????/C=CN/ST=Guangdong/O=iTab/OU=Op s/CN=www.iTab.com/emailAddress=webmaster@iTab.com? //可以發(fā)現(xiàn),CA主機上的數(shù)據(jù)庫index.txt中對應項中的首個字母變?yōu)?#39;R',表示已吊銷。


    (3)因為對于該私有CA來說是第一次吊銷其他主機的證書,因此需要生成吊銷證書的吊銷編號:

    [root@CA?~]#?echo?01?>?/etc/pki/CA/crlnumber

    下次再吊銷其他證書時就不用執(zhí)行這個操作了。


    (4)更新證書吊銷列表:

    [root@CA?~]#?openssl?ca?-gencrl?-out?/etc/pki/CA/thisca.crl


    使用ls查看:

    [root@CA?~]#?cd?/etc/pki/CA/ [root@CA?CA]#?ls?-1 cacert.pem certs crl crlnumber crlnumber.old httpd.crl index.txt index.txt.attr index.txt.attr.old index.txt.old newcerts private serial serial.old thisca.crl????//就是這個文件。


    查看crl文件:

    [root@CA?~]#?openssl?crl?-in?/etc/pki/CA/thisca.crl?-noout?-text Certificate?Revocation?List?(CRL):????//證書吊銷列表。Version?2?(0x1)Signature?Algorithm:?sha256WithRSAEncryptionIssuer:?/C=CN/ST=Guangdong/L=Guangzhou/O=iTab/OU=Ops/CN=ca.iTab.com/emailAddress=caadmin@iTab.comLast?Update:?Mar?22?12:11:34?2017?GMTNext?Update:?Apr?21?12:11:34?2017?GMTCRL?extensions:X509v3?CRL?Number:?2 Revoked?Certificates:Serial?Number:?01Revocation?Date:?Mar?22?11:46:03?2017?GMTSignature?Algorithm:?sha256WithRSAEncryption3e:12:b2:12:23:c7:e2:fe:25:ea:3d:cd:16:ad:ea:01:9b:8f:94:0a:d4:78:95:87:09:55:6b:9b:6e:c3:34:e9:d1:8c:ca:a1:a0:7b:b6:50:01:31:d7:7b:b7:3a:50:94:39:ea:fa:0b:cb:79:63:53:28:c0:cc:66:55:2e:fa:f2:15:50:b4:66:4d:16:99:22:35:09:70:cc:1e:e1:5a:d5:2c:8a:cb:9b:95:5e:94:dc:fa:13:cf:21:dd:a4:8d:84:a9:ae:52:2f:1d:40:00:ae:ca:7a:9a:a7:bd:97:15:2e:6b:d7:ca:f7:44:cd:a3:41:58:19:ff:5a:50:48:bf:9d:4a:b5:c9:8c:ae:e8:b2:0e:53:95:63:63:0d:d2:ff:e8:64:3f:23:59:78:74:fd:ab:f8:2c:9b:fd:5d:31:41:9f:8a:42:da:06:23:0c:34:13:bf:10:0a:9a:eb:57:a4:03:85:14:5b:9c:b3:b5:c4:2f:38:be:9f:71:9f:70:a1:3e:cf:1e:b3:05:b1:67:38:6f:87:e0:44:69:b8:a8:b1:09:6e:6d:32:29:7c:49:cf:ae:46:7e:c4:e8:a9:58:b1:2c:37:db:4f:d1:19:61:d4:0c:38:b2:8f:61:97:bb:ce:cf:61:4d:15:c4:05:02:1e:e3:73:7c:0c:4c:54:de:33:80:b4:26:3c:95:0a:da:d0:68:cb:e3:ac:54:42:a5:0b:25:cf:63:f0:f2:d0:2c:69:c6:21:c1:21:cf:dd:e2:a5:a7:03:59:0d:18:53:b2:36:b6:03:a8:4a:38:7c:c2:51:31:0e:4f:f7:e7:d9:dd:63:63:42:39:23:38:75:89:07:0f:53:73:1e:d0:01:07:48:dd:c5:71:39:59:fc:31:c1:fd:5d:9c:eb:dd:58:e5:09:7f:23:84:9e:f9:23:05:bd:6a:9e:ba:67:ef:8b:98:3f:f8:1d:53:ac:22:63:57:19:b5:bc:6f:81:cd:d7:71:31:e8:a9:fd:bb:ac:03:2d:82:8e:f6:9c:25:dd:80:bd:30:5d:13:00:c8:4a:b4:f2:a6:7a:bd:53:8c:0b:68:bf:8d:b2:86:7f:b8:ce:fa:11:88:24:2a:d7:ae:d7:17:85:7f:fa:0e:79:bc:03:d4:a8:88:22:d9:a4:2a:ac:12:01:8f:e9:1e:a8:57:31:19:a1:2d:aa:8d:30:3e:13:e6:33:cd:f9:95:4f:1f:99:7e:65:5b:23:3a:f2:41:0c:12:c9:5b:22:4e:a8:29:be:25:75:8b:fc:5e:3d:aa:1c:42:93:87:98:33:e9:82:4c:ea:d6:20:2c:a3:29:8a:fd:43:63:07:a9:3c:ee:09:dc:04:31:ec:ec [root@CA?~]#


    十一、參考鏈接

    RFC 4366,?Transport Layer Security (TLS) Extensions



    轉(zhuǎn)載于:https://blog.51cto.com/xuweitao/1909366

    總結(jié)

    以上是生活随笔為你收集整理的加密和解密技术基础、PKI及创建私有CA的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    国产在线高清 | 日本三级在线观看中文字 | 国产麻豆剧传媒免费观看 | 国产精品久久久久婷婷 | 网站在线观看你们懂的 | 爱爱一区 | a级国产片 | 草久久久| 久草在线视频精品 | 在线韩国电影免费观影完整版 | 欧美国产精品一区二区 | 中文字幕高清有码 | 久久久久欧美精品999 | 精品国产一区二区三区久久影院 | 午夜精品视频免费在线观看 | 99久久国产免费,99久久国产免费大片 | 精品在线观看一区二区 | 97超碰人人澡人人 | 日本中文字幕在线 | 在线观看国产福利片 | 欧美国产三区 | 欧美男女爱爱视频 | 午夜三级理论 | 在线涩涩 | 在线视频日韩欧美 | 91福利小视频 | 欧美日韩精品久久久 | 国产小视频在线免费观看视频 | 亚洲精品国产自产拍在线观看 | 欧美亚洲成人xxx | 久青草视频在线观看 | 国产亚洲视频中文字幕视频 | 97色涩 | 午夜免费福利片 | 成 人 黄 色 免费播放 | 国产亚洲综合性久久久影院 | 亚洲更新最快 | 美国三级黄色大片 | 欧美一进一出抽搐大尺度视频 | 色吊丝在线永久观看最新版本 | 色婷婷久久久综合中文字幕 | 韩国在线一区二区 | 免费一级特黄录像 | 久久久免费高清视频 | 91激情小视频 | a天堂最新版中文在线地址 久久99久久精品国产 | 久久综合久久88 | 久久久久久国产精品美女 | 精品国精品自拍自在线 | 成人av播放 | 日韩午夜小视频 | 色中色亚洲 | 一级一级一片免费 | av中文电影 | 国产黄色片免费在线观看 | 少妇按摩av | 久久久久久片 | 免费av福利| 日本99久久 | 久久久男人的天堂 | 97福利视频 | 丁香色综合| 国产中文字幕视频在线 | 亚洲久草网| 91福利社在线观看 | 丁香免费视频 | 婷婷在线免费视频 | 中文字幕人成乱码在线观看 | 午夜精品在线看 | 成年人黄色大全 | 国产专区欧美专区 | 在线视频一区观看 | a极黄色片 | 午夜精选视频 | 久久99久久99精品免费看小说 | 精品99久久 | 最近免费中文字幕mv在线视频3 | 日日操天天射 | 日韩欧美一区二区三区在线 | 国产剧情在线一区 | 久久一久久 | 欧美日韩国产一区 | 91在线观看欧美日韩 | 成人性生交大片免费观看网站 | 国产一区二区三区免费观看视频 | 精品久久久久久电影 | 五月婷网站 | 婷婷久久综合网 | 欧洲高潮三级做爰 | 91资源在线免费观看 | 国产精品一区二区三区四区在线观看 | 日韩免费三区 | 国产原创av在线 | 高潮久久久久久久久 | 在线观看国产日韩欧美 | 欧美三级免费 | 又大又硬又黄又爽视频在线观看 | 国产一区二区精品在线 | 亚洲三级在线免费观看 | 精品国产一区二 | av丁香| 中文字幕在线看视频 | 久久久久久久精 | 国产视频在线观看一区二区 | 亚洲视频 中文字幕 | 亚洲综合网站在线观看 | 久久午夜电影 | 天天色宗合 | 久久综合九色九九 | 蜜臀91丨九色丨蝌蚪老版 | 亚洲 成人 欧美 | 成年人网站免费观看 | 久草a在线| 黄色影院在线免费观看 | 日本精品一二区 | 玖玖在线看 | 一区二区在线不卡 | 国产精品一区二区在线看 | 日韩亚洲精品电影 | 天天综合久久 | 久久成人欧美 | 国内精品久久久久影院一蜜桃 | 日韩毛片精品 | 久久综合久久伊人 | 国产精品色视频 | 久草视频免费在线观看 | 色老板在线 | 日韩精品久久中文字幕 | 超碰人人乐 | 欧美精品乱码99久久影院 | 久久精品4 | 国产精品视频在线看 | 天天操天天干天天操天天干 | 久久久久久国产一区二区三区 | 国产生活一级片 | 天堂av在线免费观看 | 久久精品国产美女 | 亚洲黄色激情小说 | av视屏在线播放 | 黄色成人av | 国产日韩精品久久 | 欧美少妇的秘密 | 天天综合网久久综合网 | 久久免费在线观看 | 国产精品国产三级国产aⅴ无密码 | 国产亚州精品视频 | 五月激情站 | 久久少妇av | 免费成人av在线看 | 中文高清av | 国产黄色大片免费看 | 三级黄色在线观看 | 中文在线免费看视频 | 日日干夜夜草 | 国产成人精品999 | av在线8 | 成人毛片在线视频 | 中文字幕在线日 | 国产一区在线免费观看 | 欧美日韩免费视频 | 永久免费的啪啪网站免费观看浪潮 | 日韩高清无线码2023 | 国内精品久久久久久久 | 三级黄色网址 | 国产精品久久久久av免费 | 手机成人在线 | 久久男人免费视频 | 伊人婷婷综合 | 色香com.| 91传媒激情理伦片 | 天天操网站 | 手机在线小视频 | 久久精品国产免费看久久精品 | 99理论片 | 91中文字幕在线观看 | 中午字幕在线观看 | 在线视频a| 91麻豆精品91久久久久同性 | 国内精品久久久久久久97牛牛 | 干干干操操操 | 国产成人一区二区三区在线观看 | 国产麻豆成人传媒免费观看 | 不卡国产在线 | 欧美韩日精品 | 狠狠色狠狠色合久久伊人 | 久久国产精品免费一区二区三区 | 亚洲最新在线视频 | 91成人看片| 国产成人精品一区一区一区 | 中文字幕一区二区三区在线视频 | 五月天婷亚洲天综合网精品偷 | 天天操天天弄 | 啪嗒啪嗒免费观看完整版 | 久久久久看片 | 国产高清视频在线播放一区 | 欧美福利视频一区 | 亚洲一级特黄 | 国产综合精品一区二区三区 | 五月婷婷一级片 | 久久综合毛片 | 国产视频午夜 | 中文国产字幕在线观看 | 久久久久久久久影院 | 日韩一级黄色av | 色天天| 一区 在线 影院 | 99久久综合狠狠综合久久 | 久久久久久国产精品999 | 久久观看| 国产精品久免费的黄网站 | 91成人网页版 | 伊人小视频 | 久久国产二区 | 国产999| 激情婷婷在线观看 | 国产成人精品午夜在线播放 | 午夜av一区 | 美女黄视频免费看 | 天天天天天操 | 精品久久一区二区 | 日韩区欠美精品av视频 | 三级动图 | 色婷婷88av视频一二三区 | 亚洲精品小视频在线观看 | 亚洲高清久久久 | 99国产精品久久久久久久久久 | 久久精品网 | 久久精品久久精品久久39 | 婷婷精品 | 免费日韩一区二区三区 | 亚洲欧美日韩国产一区二区 | 成人亚洲免费 | 天天色天天爱天天射综合 | 最近更新好看的中文字幕 | 亚洲视频综合在线 | 国产精品自在线拍国产 | 久久久久区 | 少妇18xxxx性xxxx片 | 999成人 | 波多野结依在线观看 | 欧美精品首页 | 丝袜美腿av | 国产亚洲aⅴaaaaaa毛片 | 日本久久免费视频 | 国产黄色网| 综合色播| 国内精品久久久久久 | 天天综合区 | 中文字幕在线看视频国产 | 国产精品毛片一区视频 | 日本公乱妇视频 | 免费看的黄色的网站 | 人人爽人人爽人人片av | 91av视频在线免费观看 | 在线观看av片 | 色吧av色av | 国产免费观看视频 | 久久免费视频5 | 午夜精品视频一区二区三区在线看 | 在线观看一级视频 | 久久精精品视频 | 四虎国产视频 | 久久曰视频| 精品国产乱码一区二 | 激情伊人五月天久久综合 | 国产精品久久中文字幕 | 欧美成人在线免费 | 久久人人爽人人人人片 | 免费成人看片 | 日日爱av| 天天干天天操天天 | 精品久久久久久久久久久院品网 | 日韩一级成人av | 国产黄 | 成人国产精品久久久久久亚洲 | 91色九色| 四虎免费av | 香蕉看片| 免费看片网址 | 一二三区视频在线 | 日韩午夜视频在线观看 | 国产麻豆视频 | 国产美女被啪进深处喷白浆视频 | 亚洲精品小视频 | 99久久影院 | 久久久国产一区 | 免费视频你懂的 | 在线观看黄色免费视频 | 黄色小说免费在线观看 | 日韩成人黄色 | 韩国av一区二区三区在线观看 | 久久老司机精品视频 | av激情五月 | 亚洲精品乱码久久久久久蜜桃欧美 | 91免费在线 | 欧美成人一区二区 | 六月天色婷婷 | 国产精品系列在线观看 | 亚洲爽爽网 | 久久免费一| 日韩av免费一区 | 午夜成人免费影院 | 色欧美88888久久久久久影院 | 手机看片国产 | 中文永久字幕 | 九九有精品 | 国产精品一区久久久久 | 精壮的侍卫呻吟h | 久久国产精品免费一区二区三区 | 99久久这里有精品 | 国产一级二级在线观看 | 韩国一区二区在线观看 | 亚洲天天摸日日摸天天欢 | 久久综合欧美 | 日韩久久午夜一级啪啪 | 亚洲涩涩涩| 欧美午夜性 | 久久精品国产成人精品 | 日韩免费三区 | 依人成人综合网 | 日韩性色 | 中文字幕在线观看视频网站 | 欧美日韩精品在线视频 | 六月色 | 91精品久久香蕉国产线看观看 | 国产精品18久久久久久不卡孕妇 | 日本公妇色中文字幕 | 一区二区三区电影在线播 | 一区二区三区免费在线观看视频 | 国产又粗又猛又爽又黄的视频先 | 日韩欧美专区 | 亚洲国产999 | 亚洲天天干| 丁香 久久 综合 | 免费亚洲电影 | 在线精品观看 | av色影院 | 国产一区久久久 | 国产91对白在线播 | 中文字幕在线观看视频网站 | av在线a| 99r在线播放 | 日韩在线观看视频一区二区三区 | 在线 视频 亚洲 | 91黄色成人 | 国产精品白虎 | 99久久久久国产精品免费 | 黄色一及电影 | 最近2019中文免费高清视频观看www99 | 国产综合激情 | 日韩性色 | 最近能播放的中文字幕 | 成人毛片一区二区三区 | 在线观看 国产 | 成人精品福利 | 久久久国产精品亚洲一区 | 久久久精品欧美 | 正在播放国产一区二区 | 欧美在线1区 | 91日本在线播放 | 久久精品久久久久久久 | 国产精品va在线播放 | 亚洲在线激情 | 午夜精品一区二区三区免费视频 | 在线免费av播放 | 99久久www免费 | 久久久久综合 | 伊人狠狠| 精品国产1区2区3区 国产欧美精品在线观看 | 国产麻豆剧果冻传媒视频播放量 | 黄色av免费电影 | 色综合亚洲精品激情狠狠 | 久久久久黄 | 欧美尹人 | 日韩高清成人在线 | 99在线高清视频在线播放 | 欧美成人猛片 | 久久久亚洲国产精品麻豆综合天堂 | 日韩欧美高清一区二区 | 国产一区二区视频在线 | 日本中文字幕观看 | 国产高清精品在线观看 | 在线观看免费色 | 成年人在线播放视频 | 在线观看精品视频 | 成人毛片网 | 国产日本亚洲高清 | 久久福利电影 | 黄色性av | 免费a v在线 | 天天看天天干 | 天天草天天草 | 亚洲无吗视频在线 | 亚洲一区二区视频 | 一本一道波多野毛片中文在线 | 国产成人av电影在线观看 | 午夜精品一区二区三区免费视频 | 日韩在线观看第一页 | 亚洲精品456在线播放乱码 | 在线观看免费色 | 国产精品美女视频网站 | 欧美精品一区在线 | 免费午夜av | 久久精品99北条麻妃 | 国产精品久久久久久久久岛 | 四虎最新域名 | 在线国产一区二区三区 | 欧美日产在线观看 | av福利网址导航 | 99视| 国产1级视频 | 久久久久成人精品 | 日韩网站一区二区 | 伊人射| 婷婷色站 | 久久美女精品 | 精品国产人成亚洲区 | www久久| 美女黄频网站 | 热久久电影 | 在线免费观看黄 | 日韩免费三区 | 免费在线看v | 99色人| a黄色大片 | 久久精品—区二区三区 | 精品国模一区二区 | 免费在线色视频 | 久久99精品久久久久久清纯直播 | 成人性生交大片免费观看网站 | 在线观看91精品国产网站 | 三级av在线播放 | 国产精品剧情在线亚洲 | 我要色综合天天 | 97成人在线视频 | 激情婷婷av | 园产精品久久久久久久7电影 | 91视频免费国产 | 成人cosplay福利网站 | 五月天六月色 | 日本最新一区二区三区 | 在线观看精品黄av片免费 | 国产女v资源在线观看 | 免费中午字幕无吗 | 成人av电影在线 | 亚洲1区在线 | 色婷婷国产在线 | 麻豆一区在线观看 | 婷婷六月丁香激情 | 国产在线超碰 | 免费观看完整版无人区 | 99性视频 | 久久午夜影视 | 国产免费视频在线 | 亚洲a网| 精品影院一区二区久久久 | 亚洲黄色免费网站 | 色姑娘综合天天 | 国产精品日韩在线观看 | 精品久久久久久亚洲综合网站 | 成人羞羞视频在线观看免费 | 欧美 亚洲 另类 激情 另类 | 成人黄色大片网站 | 在线看毛片网站 | 黄色成人小视频 | 日精品| 91人人揉日日捏人人看 | 亚洲不卡av一区二区三区 | 色5月婷婷| 99久久久久国产精品免费 | 一区二区三区视频 | 91在线免费视频观看 | 国产黄色片一级 | 99中文视频在线 | 久久久久伦理电影 | 久久精品久久综合 | 国产免费视频在线 | 国产精品99在线播放 | 亚洲激情六月 | 一区二区三区韩国免费中文网站 | 欧美一级特黄高清视频 | av一级在线| 精品国产乱子伦一区二区 | 日韩大片免费在线观看 | 国产精品久久久久久久午夜片 | 日韩在线观看三区 | www久久精品 | 亚洲一区网 | 成人国产精品久久久久久亚洲 | 美女免费视频网站 | 国产一区二区免费在线观看 | 久久这里有精品 | 免费成人结看片 | 96超碰在线 | 国产精品一区免费观看 | 狠狠激情中文字幕 | 91最新网址在线观看 | 狠狠色丁香久久婷婷综合_中 | 人人草人人草 | 久久久午夜电影 | 在线观看视频中文字幕 | 日日精品| 五月天六月色 | 日韩电影在线一区二区 | 99久精品视频 | 精品国产免费人成在线观看 | 国产一区在线观看免费 | 日韩精品免费在线观看视频 | 9999亚洲| 日韩在线观看视频网站 | 亚洲1区在线 | 国产麻豆精品95视频 | 97成人在线 | 国产1级毛片 | 中文字幕资源站 | 午夜久久福利影院 | 天天激情综合 | 麻豆视频入口 | 久久另类视频 | 色婷婷88av视频一二三区 | 国产a免费| 久久久久久综合 | 久久这里精品视频 | 中文字幕一区二区三区四区久久 | 伊人影院99| 视频二区 | 日韩大片在线看 | 国产中文视频 | 国产视频每日更新 | 欧美高清视频不卡网 | a天堂免费| 在线观看免费成人 | 国产成人福利 | 亚洲伦理一区 | 国产中文字幕久久 | 色综合a| 日韩欧美不卡 | 狠狠干网站| 日韩综合精品 | 亚洲精品美女免费 | 国产资源免费 | 少妇搡bbbb搡bbb搡忠贞 | 色噜噜狠狠狠狠色综合 | 国产一区二区综合 | 国产精品一区二区三区电影 | 日日夜夜婷婷 | 久久香蕉影视 | 成人黄色影片在线 | 天天操天天操一操 | 欧美日韩aaaa | 久久久黄色免费网站 | 国产美女主播精品一区二区三区 | 成人在线免费av | 2019精品手机国产品在线 | 亚洲一片黄 | 国产第一页在线观看 | 国产精品久久电影观看 | 日本精品久久久一区二区三区 | 国产不卡精品 | 国产亚洲成av人片在线观看桃 | 激情婷婷av | 中文字幕精品视频 | 国产无遮挡猛进猛出免费软件 | 亚洲 欧美 另类人妖 | av中文在线播放 | 中文字幕在线免费播放 | 国产视频精选在线 | 日韩免费视频观看 | 成年人免费av | 91精品久久香蕉国产线看观看 | 亚洲成成品网站 | 久久99亚洲精品久久 | 美女网站在线免费观看 | 97香蕉超级碰碰久久免费软件 | 啪嗒啪嗒免费观看完整版 | 国产亚洲在线视频 | 午夜99| 亚洲国产精品999 | 天天干天天操天天干 | 人人dvd| 国产精品久久久久久久免费 | 国产aaa免费视频 | 天天操狠狠操夜夜操 | 黄色免费网站下载 | 国产老熟 | 久久成人免费电影 | 操一草 | 国产激情小视频在线观看 | 天天综合久久 | 99爱在线观看 | 国产精品扒开做爽爽的视频 | 亚洲综合精品视频 | 91精品区 | 久久国产影院 | 精品无人国产偷自产在线 | 天天色综合天天 | 日韩网站在线免费观看 | 精品一区二区免费在线观看 | 伊人天天综合 | 国产精品专区h在线观看 | 日本精品中文字幕在线观看 | 人人插人人搞 | 黄色片网站免费 | 亚洲成av人片在线观看 | 999精品在线| 国产真实精品久久二三区 | 亚洲精品久久久久中文字幕二区 | 午夜久久久久久久 | 911精品视频 | 欧美一级片免费观看 | 91精品久久久久久综合五月天 | 久久一区二| 国产精品免费观看国产网曝瓜 | 91日韩精品一区 | 中文字幕刺激在线 | 亚洲精选国产 | 超碰com | 五月天视频网站 | 麻豆一二三精选视频 | 一区二区三区四区五区在线 | 四虎影视成人永久免费观看亚洲欧美 | 999成人精品 | 中文字幕在线国产 | 精品福利在线观看 | 日韩在线免费不卡 | 久草精品视频在线看网站免费 | 中文字幕在线网 | 天天爽人人爽夜夜爽 | 免费观看的黄色 | 久热色超碰 | 亚洲精品动漫成人3d无尽在线 | 国产欧美日韩精品一区二区免费 | 久久午夜色播影院免费高清 | 欧美了一区在线观看 | 天天干,天天操 | 一区二区影院 | 超碰.com| 天天操天天干天天摸 | 99看视频在线观看 | 久久久99精品免费观看 | 右手影院亚洲欧美 | www.久久色 | 久草在线综合网 | 日韩中文幕 | 国产五十路毛片 | 国产成人高清在线 | av电影中文字幕在线观看 | 国产一级二级av | 国产精品私人影院 | 国产中文字幕网 | 亚洲国产精品人久久电影 | 国产特黄色片 | 中文字幕国产 | 日本精品久久久久 | 婷婷色六月天 | 97视频亚洲 | 免费特级黄色片 | 天天综合中文 | 免费亚洲片 | www久久 | 久久久免费观看视频 | 99久久精品视频免费 | 国产综合精品一区二区三区 | 一级α片 | 黄色特级一级片 | 91精品国产综合久久福利 | 成人在线一区二区 | 亚洲精品午夜aaa久久久 | 久久99国产精品视频 | 国产精品欧美一区二区三区不卡 | 欧美性极品xxxx做受 | 亚洲欧美成人 | 国产精品ⅴa有声小说 | 日日操天天操狠狠操 | 国产99久久久精品 | 日本不卡一区二区三区在线观看 | 伊人夜夜 | 国产黄av | 日本中文字幕高清 | 三级黄色三级 | 国内精品久久久久影院日本资源 | 成人免费视频播放 | www.狠狠色.com| 亚洲免费在线观看视频 | 久久久久久亚洲精品 | 国产丝袜美腿在线 | 国产精品免费视频网站 | av大全在线免费观看 | 国产手机在线观看视频 | 在线黄色国产电影 | 国产美女网站在线观看 | 视频直播国产精品 | 精品乱码一区二区三四区 | 干av在线| 一区三区视频在线观看 | 中文网丁香综合网 | 日日干影院 | 国产成人av在线 | 日韩精品一区二区三区水蜜桃 | 色婷婷一| 成年人在线视频观看 | 人人藻人人澡人人爽 | 久久五月情影视 | 久久大片 | 天天曰天天射 | 午夜精品一区二区三区免费 | 国产麻豆视频 | 欧美日韩18 | 日韩激情第一页 | 91香蕉视频污在线 | 91秒拍国产福利一区 | 久久综合久久综合这里只有精品 | 色视频在线 | 天天色天天射天天操 | 97成人在线| 欧美一级片在线播放 | 在线97| 蜜臀av麻豆| 亚洲少妇久久 | 韩日av在线 | 欧美精品九九 | 欧洲av不卡 | 日日夜夜网站 | 成人小视频在线播放 | 国产麻豆精品95视频 | 国产精品久久麻豆 | 国产综合在线观看视频 | 亚洲第一av在线播放 | 亚洲一区二区精品3399 | 亚洲国产美女精品久久久久∴ | 玖玖视频精品 | 亚洲午夜精品电影 | 奇米影视8888在线观看大全免费 | 国产一区网址 | 精品国产一区二区三区久久久蜜月 | 91少妇精拍在线播放 | 久久精视频 | 亚洲激情一区二区三区 | 免费观看一区二区三区视频 | 久久免费的精品国产v∧ | 天天操夜夜操国产精品 | 日韩黄色av网站 | 国产aa精品| 深夜免费小视频 | 日韩视频一区二区在线 | 国产视频在线免费观看 | 成年人视频免费在线播放 | 日韩资源在线 | 99国产免费网址 | a在线视频v视频 | 亚洲免费av在线 | 日日夜夜精品视频 | 免费看十八岁美女 | 亚一亚二国产专区 | 日韩av电影一区 | 色婷婷久久 | 国产美腿白丝袜足在线av | 91久久爱热色涩涩 | 亚洲一级二级三级 | 欧美成人视 | 91av中文字幕 | 日韩在线精品视频 | 在线观看91精品国产网站 | 久久人91精品久久久久久不卡 | 久久综合中文色婷婷 | av成人在线播放 | 免费进去里的视频 | 亚洲黄色小说网址 | 成人av免费在线 | 成人永久免费 | 日韩高清二区 | 成人在线观看你懂的 | 欧美日韩中文在线视频 | 国产精品国产三级国产aⅴ无密码 | 在线小视频 | 99久久夜色精品国产亚洲 | 免费看国产视频 | 中文在线字幕观看电影 | av久久在线 | 欧美一级片在线 | 在线观看视频你懂 | 在线精品亚洲一区二区 | 亚洲天天看| 亚洲欧洲一区二区在线观看 | 午夜精品久久久久久久99 | 麻豆传媒视频观看 | 国产九九精品视频 | 中文字幕中文中文字幕 | 色多多视频在线观看 | 久久精品亚洲国产 | 免费视频你懂的 | 6080yy精品一区二区三区 | 日韩试看| 精品视频不卡 | 国产视频中文字幕在线观看 | 欧美一区二区在线免费看 | 伊人国产女 | 91精品国产综合久久福利 | 在线免费视频你懂的 | 狠狠色丁香婷婷综合 | 婷婷国产在线 | 91精品在线免费视频 | 国产亚洲欧洲 | 日韩免费电影一区二区三区 | 最近免费中文字幕 | aaawww | 日韩在线中文字幕视频 | 国产中文字幕一区二区 | 久久a热6| 玖草影院 | 亚洲天堂网在线观看视频 | 日日夜夜网 | 国产精品一区二区在线 | 日韩精品电影在线播放 | 中文字幕日韩电影 | 激情 婷婷 | 西西4444www大胆视频 | 草免费视频 | 欧美精品999| 成人黄色片免费看 | 日韩av免费一区二区 | 日韩电影中文,亚洲精品乱码 | 98福利在线 | 日韩精品一区二区三区第95 | 国产 一区二区三区 在线 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 一二区av | 日韩电影精品 | 色婷婷综合成人av | 最新日韩精品 | 在线观看色网 | 国产在线播放一区二区三区 | 欧美一区在线看 | 久久久亚洲麻豆日韩精品一区三区 | 亚洲国产中文字幕在线 | 在线亚洲小视频 | 中文字幕av在线不卡 | 韩国三级一区 | 日本一区二区三区免费看 | 亚洲人在线视频 | 精品视频国产 | 日韩影视在线 | 黄色在线看网站 | 国产99久久精品 | 日韩91精品| 国产91成人在在线播放 | 天天色天天综合 | 久久久99国产精品免费 | 日韩精品91偷拍在线观看 | 国产在线观看中文字幕 | 精品久久九九 | 国产福利91精品 | 中文字幕在线播放一区 | 国产99色 | 一区二区三区 中文字幕 | 国内精品亚洲 | 九九九九热精品免费视频点播观看 | 日日爱夜夜爱 | 一区在线观看 | 91成人看片| 99热精品免费观看 | 9797在线看片亚洲精品 | 久久视频在线观看免费 | 99精品免费久久久久久日本 | 毛片基地黄久久久久久天堂 | 九九爱免费视频在线观看 | 91中文字幕 | 久久久www成人免费毛片 | 久久女同性恋中文字幕 | 久久精品综合一区 | 一区二区三区中文字幕在线观看 | 久久精品免费播放 | 亚洲精品在线播放视频 | 午夜的福利 | 久久精品三 | 天天草天天插 | 久久 精品一区 | 国产成人一区二区三区久久精品 | 国产福利一区二区三区在线观看 | 日日噜噜噜噜夜夜爽亚洲精品 | 国产破处在线视频 | 国产在线视频在线观看 | 精品国产精品久久 | 国产中文字幕视频 | 人人看看人人 | av黄色免费网站 | 国产黄色av | 日韩av午夜在线观看 | av成年人电影 | 人人盈棋牌| 中文字幕在线免费看线人 | 国产在线最新 | 人交video另类hd | 免费电影一区二区三区 | 欧美性视频网站 | 精品欧美在线视频 | 久久精品一区二区三 | 久久人人精 | 美女福利视频 | 97超碰成人 | 深夜男人影院 | 九九久久久久久久久激情 | 国产午夜精品一区 | 国产在线精 | av福利在线 | 精品视频成人 | 国产精品久久中文字幕 | 999久久久免费视频 午夜国产在线观看 | 婷婷在线免费观看 | 成人久久免费 | 五月婷在线 | 91精品久久久久 | 久久婷婷视频 | 国产剧情一区二区在线观看 | 欧美精品一区二区蜜臀亚洲 | 久久免费a| 人人干狠狠干 | 亚洲欧美一区二区三区孕妇写真 | a精品视频 | 成人欧美日韩国产 | 亚洲欧美日韩国产 | 看片黄网站 | 中文字幕高清免费日韩视频在线 | 亚洲成年人在线播放 | 91免费国产在线观看 | 成人av一区二区三区 | 亚洲成人午夜av | 久久国产高清 | 中文理论片 | 欧美精品久久久久性色 | 亚洲国产日韩精品 | 久久亚洲综合国产精品99麻豆的功能介绍 | 亚洲精品www久久久久久 | 天天射天天干天天操 | 一区二区三区四区五区在线 | 综合网av | 免费视频一二三 | 一级片观看 | 人人草网站| 久久久天天操 | 久久国产系列 | 久草在线免费电影 | 久久a国产 | 亚洲最大av | 国产91粉嫩白浆在线观看 | 久久久三级视频 | 亚洲天堂自拍视频 | 中文字幕亚洲字幕 | 91在线精品秘密一区二区 | 亚洲精品乱码久久 | 九九爱免费视频 | 美女视频黄是免费的 | 亚洲精品免费在线视频 | 中文字幕不卡在线88 | 青青草视频精品 | 久草电影免费在线观看 | 日韩高清国产精品 | 999久久国精品免费观看网站 | 国产精品专区在线 | 国产在线一区二区三区播放 | 五月婷婷一级片 | 婷婷在线视频 | a在线免费观看视频 | 日韩在线视频看看 | 久久激五月天综合精品 | 天天操婷婷 | 久久精品网站免费观看 | 亚洲一级二级三级 | 毛片激情永久免费 | 日韩高清在线一区二区 | 999成人 | 午夜精品福利一区二区 | 亚洲黄色软件 | 中文字幕一区二区三区四区视频 | 国产精品免费高清 | 黄色aa久久 | 亚洲热视频 | 久久歪歪 | 美女免费视频观看网站 | 91精选在线观看 | 亚洲精品免费在线观看 | 天天操天天操天天操天天操 | 激情五月婷婷激情 | 国产一区麻豆 | 丁香婷婷深情五月亚洲 | 日韩免费电影一区二区 | 国产中文字幕在线 | 99视频| 久久草草影视免费网 | 久福利| 91九色视频网站 | 人人看人人 | 人人干天天射 | 69av视频在线 | 99色人 | 精品一区二区在线看 | 狠狠久久伊人 | 91麻豆产精品久久久久久 |