1. SSL中,公鑰,私鑰,證書的後綴名都是些啥
Linux 下的抄工具們通常使用襲 base64 編碼的文本格式,相關常用後綴如下:
* 證書:.crt, .pem
* 私鑰:.key
* 證書請求:.csr
.cer 好像是二進制的證書。當然你也可以把證書和 key 放到同一個文件里邊。這時候擴展名通常叫 .pem。Java 的 keystore 什麼的都是二進制的,好像是自有格式。
其實在類 UNIX 系統上,關注文件名後綴的程序並不多的。而證書、密鑰都是有明顯的標識的,所以相關軟體(如 openssl)可以處理,而不管你用的什麼擴展名。當然亂用擴展名自己識別不便,桌面環境也不能將擴展名與默認操作、圖標關聯起來。
如果不知道一個文件是個啥,可以使用 file 命令識別試試。有經驗的也可以直接拿文本編輯器打開看看。
這三種模式所用協議和最大數據傳輸率不同。最大傳輸速率PS/2 I/O Address 輸入/輸出地址
2. 私鑰、公鑰、證書的區別和關系
私鑰是要求你輸入個人密碼才可訪問的,一般網上銀行之類可用到。
公鑰不要求設專置密碼,是已屬經默認了的,一般上一些安全性要求不高的網站或共享資源,如區域網。
證書是一種網站加密瀏覽方式,只有允許了才可訪問,一般為安全性較高的網站,如網上銀行;可以訪止黑客盜取客戶資料。
3. 公開密鑰密碼體系的概念
公鑰體系結構中的一些基本概念與結構組成。
密鑰對在基於公鑰體系的安全系統中,密鑰是成對生成的,每對密鑰由一個公鑰和一個私鑰組成。在實際應用中,私鑰由擁有者自己保存,而公鑰則需要公布於眾。為了使基於公鑰體系的業務(如電子商務等)能夠廣泛應用,一個基礎性關鍵的問題就是公鑰的分發與管理。
公鑰本身並沒有什麼標記,僅從公鑰本身不能判別公鑰的主人是誰。
在很小的范圍內,比如A和B這樣的兩人小集體,他們之間相互信任,交換公鑰,在互聯網上通訊,沒有什麼問題。這個集體再稍大一點,也許彼此信任也不成問題,但從法律角度講這種信任也是有問題的。如再大一點,信任問題就成了一個大問題。 互聯網路的用戶群決不是幾個人互相信任的小集體,在這個用戶群中,從法律角度講用戶彼此之間都不能輕易信任。所以公鑰加密體系採取了另一個辦法,將公鑰和公鑰的主人名字聯系在一起,再請一個大家都信得過有信譽的公正、權威機構確認,並加上這個權威機構的簽名。這就形成了證書。
由於證書上有權威機構的簽字,所以大家都認為證書上的內容是可信任的;又由於證書上有主人的名字等身份信息,別人就很容易地知道公鑰的主人是誰。 前面提及的權威機構就是電子簽證機關,即CA。CA(Certificate Authority)也擁有一個證書(內含公鑰),當然,它也有自己的私鑰,所以它有簽字的能力。網上的公眾用戶通過驗證CA(Certificate Authority)的簽字從而信任CA(Certificate Authority),任何人都應該可以得到CA(Certificate Authority)的證書(含公鑰),用以驗證它所簽發的證書。
如果用戶想得到一份屬於自己的證書,他應先向CA(Certificate Authority)提出申請。在CA(Certificate Authority)判明申請者的身份後,便為他分配一個公鑰,並且CA(Certificate Authority)將該公鑰與申請者的身份信息綁在一起,並為之簽字後,便形成證書發給那個用戶(申請者)。
如果一個用戶想鑒別另一個證書的真偽,他就用CA的公鑰對那個證書上的簽字進行驗證(如前所述,CA簽字實際上是經過CA(Certificate Authority)私鑰加密的信息,簽字驗證的過程還伴隨使用CA(Certificate Authority)公鑰解密的過程),一旦驗證通過,該證書就被認為是有效的。
CA(Certificate Authority)除了簽發證書之外,它的另一個重要作用是證書和密鑰的管理。
由此可見,證書就是用戶在網上的電子個人身份證,同日常生活中使用的個人身份證作用一樣。CA(Certificate Authority)相當於網上公安局,專門發放、驗證身份證。
4. https(SSL/TLS)數字證書中的公鑰參數(Public Key parameters)0500是什麼含義
微軟詳細:https://msdn.microsoft.com/en-us/library/windows/desktop/aa379059(v=vs.85).aspx
參數介紹:https://msdn.microsoft.com/en-us/library/windows/desktop/aa379057(v=vs.85).aspx
...
公鑰演算法:
演算法ObjectId:1.2.840.113549.1.1.1 RSA(RSA_SIGN)
演算法參數:
05 00
...
我想幫你分解你正在看的東西。
如果你拿你的base64字元串:
+ / / 3J + skZ6UtW +
然後將其解碼為十六進制:
30 81 9F 30 0D 06 09 2A 86 48 86 F7 0D 01 01 01
05 00 03 81 8D 00 30 81 89 02 81 81 00 AA 18 AB
A4 3B 50 DE EF 38 59 8F AF 87 D2 AB 63 4E 45 71
C1 30 A9 BC A7 B8 78 26 74 14 FA AB 8B 47 1B D8
96 5F 5C 9F C3 81 84 85 EA F5 29 C2 62 46 F3 05
50 64 A8 DE 19 C8 C3 38 BE 54 96 CB AE B0 59 DC
0B 35 81 43 B4 4A 35 44 9E B2 64 11 31 21 A4 55
BD 7F DE 3F AC 91 9E 94 B5 6F B9 BB 4F 65 1C DB
23 EA D4 39 D6 CD 52 3E B0 81 91 E7 5B 35 FD 13
A7 41 9B 30 90 F2 47 87 BD 4F 4E 19 67 02 03 01
00 01
所以問題是:這是什麼?那實際上是ASN.1編碼的DER變體。ASN.1是一個可怕的怪物,但價值實際上是這樣的:
30 81 9F ;30=SEQUENCE (0x9F = 159 bytes)
| 30 0D ;30=SEQUENCE (0x0D = 13 bytes)
| | 06 09 ;06=OBJECT_IDENTIFIER (0x09 = 9 bytes)
| | 2A 86 48 86 ;Hex encoding of 1.2.840.113549.1.1
| | F7 0D 01 01 01
| | 05 00 ;05=NULL (0 bytes)
| 03 81 8D 00 ;03=BIT STRING (0x8d = 141 bytes)
| | 30 81 89 ;30=SEQUENCE (0x89 = 137 bytes)
| | | 02 81 81 ;02=INTEGER (0x81 = 129 bytes) the molus
| | | 00 ;leading zero of INTEGER
| | | AA 18 AB A4 3B 50 DE EF 38 59 8F AF 87 D2 AB 63
| | | 4E 45 71 C1 30 A9 BC A7 B8 78 26 74 14 FA AB 8B
| | | 47 1B D8 96 5F 5C 9F C3 81 84 85 EA F5 29 C2 62
| | | 46 F3 05 50 64 A8 DE 19 C8 C3 38 BE 54 96 CB AE
| | | B0 59 DC 0B 35 81 43 B4 4A 35 44 9E B2 64 11 31
| | | 21 A4 55 BD 7F DE 3F AC 91 9E 94 B5 6F B9 BB 4F
| | | 65 1C DB 23 EA D4 39 D6 CD 52 3E B0 81 91 E7 5B
| | | 35 FD 13 A7 41 9B 30 90 F2 47 87 BD 4F 4E 19 67
| | 02 03 ;02=INTEGER (0x03 = 3 bytes) - the exponent
| | | 01 00 01 ;hex for 65537
所以編碼在十六進制中有兩個重要的數字:
指數:(65537 幾乎每個人普遍使用65,537作為主要指數)
模數:00 AA 18 AB A4 3B 50 DE EF 38 59 8F AF 87 D2 AB 63 4E 45 71 C1 30 A9 BC A7 B8 78 26 74 14 FA AB 8B 47 1B D8 96 5F 5C 9F C3 81 84 85 EA F5 29 C2 62 46 F3 05 50 64 A8 DE 19 C8 C3 38 BE 54 96 CB AE B0 59 DC 0B 35 81 43 B4 4A 35 44 9E B2 64 11 31 21 A4 55 BD 7F DE 3F AC 91 9E 94 B5 6F B9 BB 4F 65 1C DB 23 EA D4 39 D6 CD 52 3E B0 81 91 E7 5B 35 FD 13 A7 41 9B 30 90 F2 47 87 BD 4F 4E 19 67
或者,在十進制中,你的模數是:
119,445,732,379,544,598,056,145,200,053,932,732,877,863,846,799,652,384,989,588,303,737,527,328,743,970,559,883,211,146,487,286,317,168,142,202,446,955,508,902,936,035,124,709,397,221,178,664,495,721,428,029,984,726,868,375,359,168,203,283,442,617,134,197,706,515,425,366,188,396,513,684,446,494,070,223,079,865,755,643,116,690,165,578,452,542,158,755,074,958,452,695,530,623,055,205,290,232,290,667,934,914,919
5. 什麼是公鑰證書
所謂的公鑰認證,實際上是使用一對加密字元串,一個稱為公鑰(public key),任何人都可以看到其內容,用於加密;另一個稱為密鑰(private key),只有擁有者才能看到,用於解密。通過公鑰加密過的密文使用密鑰可以輕松解密,但根據公鑰來猜測密鑰卻十分困難。
ssh 的公鑰認證就是使用了這一特性。伺服器和客戶端都各自擁有自己的公鑰和密鑰。為了說明方便,以下將使用這些符號。
Ac 客戶端公鑰
Bc 客戶端密鑰
As 伺服器公鑰
Bs 伺服器密鑰
在認證之前,客戶端需要通過某種方法將公鑰 Ac 登錄到伺服器上。
認證過程分為兩個步驟。
會話密鑰(session key)生成
客戶端請求連接伺服器,伺服器將 As 發送給客戶端。
伺服器生成會話ID(session id),設為 p,發送給客戶端。
客戶端生成會話密鑰(session key),設為 q,並計算 r = p xor q。
客戶端將 r 用 As 進行加密,結果發送給伺服器。
伺服器用 Bs 進行解密,獲得 r。
伺服器進行 r xor p 的運算,獲得 q。
至此伺服器和客戶端都知道了會話密鑰q,以後的傳輸都將被 q 加密。
認證
伺服器生成隨機數 x,並用 Ac 加密後生成結果 S(x),發送給客戶端
客戶端使用 Bc 解密 S(x) 得到 x
客戶端計算 q + x 的 md5 值 n(q+x),q為上一步得到的會話密鑰
伺服器計算 q + x 的 md5 值 m(q+x)
客戶端將 n(q+x) 發送給伺服器
伺服器比較 m(q+x) 和 n(q+x),兩者相同則認證成功
6. 數字證書是什麼,公鑰加密和私鑰簽名
數字證書就是互聯網通訊中標志通訊各方身份信息的一串數字,提供了一種在Internet上驗證通信實體身份的方式,數字證書不是數字身份證,而是身份認證機構蓋在數字身份證上的一個章或印(或者說加在數字身份證上的一個簽名)。它是由權威機構——CA機構,又稱為證書授權(Certificate Authority)中心發行的,人們可以在網上用它來識別對方的身份。
非對稱加密演算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)。公開密鑰與私有密鑰是一對,如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對數據進行加密,那麼只有用對應的公開密鑰才能解密。因為加密和解密使用的是兩個不同的密鑰,所以這種演算法叫作非對稱加密演算法。 非對稱加密演算法實現機密信息交換的基本過程是:甲方生成一對密鑰並將其中的一把作為公用密鑰向其它方公開;得到該公用密鑰的乙方使用該密鑰對機密信息進行加密後再發送給甲方;甲方再用自己保存的另一把專用密鑰對加密後的信息進行解密。
另一方面,甲方可以使用乙方的公鑰對機密信息進行簽名後再發送給乙方;乙方再用自己的私匙對數據進行驗簽。
甲方只能用其專用密鑰解密由其公用密鑰加密後的任何信息。 非對稱加密演算法的保密性比較好,它消除了最終用戶交換密鑰的需要。
非對稱密碼體制的特點:演算法強度復雜、安全性依賴於演算法與密鑰但是由於其演算法復雜,而使得加密解密速度沒有對稱加密解密的速度快。對稱密碼體制中只有一種密鑰,並且是非公開的,如果要解密就得讓對方知道密鑰。所以保證其安全性就是保證密鑰的安全,而非對稱密鑰體制有兩種密鑰,其中一個是公開的,這樣就可以不需要像對稱密碼那樣傳輸對方的密鑰了。這樣安全性就大了很多。
7. SSL中,公鑰,私鑰,證書的後綴名都是些啥
1_root_bundle.crt是根證書鏈(公鑰)
2_ domainname.com.key為私鑰
其中:證書公鑰、私鑰文件一般以域名命名;證書後綴名crt和cer
8. 公鑰證書的頒發給個人的證書
您可以向商業證書頒發機構(例如 Verisign)購買證書,以便發送經過安全加密或數字簽名以證明真實回性的個人電子答郵件。
一旦您購買了證書並且用它來數字簽名電子郵件,則郵件收件人就可以確認郵件在傳輸過程中沒有發生改變,並且郵件來自於您,當然,先要假設郵件收件人信任向您頒發證書的證書頒發機構。
如果您加密了電子郵件,則沒有人可以在傳輸過程中閱讀郵件,而只有郵件收件人可以解密和閱讀郵件。
9. ssl證書的公鑰私鑰需要設置嗎
需要設置的,具體設置方法可以咨詢SSL證書提供商。
SSL證書的公鑰內密碼體制分為三個容部分,即公鑰、私鑰和加密解密演算法,顧名思義,加密是通過加密演算法和公鑰對明文傳輸數據進行加密,得到密文,加密過程是需要用到公鑰的。
解密是反過來,通過解密演算法和私鑰對密文進行解密,得到明文。解密過程需要用到解密演算法和私鑰。所以上文提到由公鑰加密的內容,只能由對應的私鑰進行解密,如果是公鑰加密的內容,不知道私鑰那是無法解密的,公鑰和私鑰保證了數據傳輸的安全性。
公鑰和演算法都是公開的,私鑰是保密的,是需要自己手動設置的。大家都用公鑰進行加密,但是只有私鑰的持有者才能解密。在實際的使用中,有需要的人會生成一對公鑰和私鑰,把公鑰發布出去給別人使用,自己保留私鑰。
數字證書是一個經證書授權中心數字簽名的包含公開密鑰擁有者信息以及公開密鑰的文件。最簡單的證書包含一個公開密鑰、名稱以及證書授權中心的數字簽名。所以ssl證書中肯定包含唯一匹配的公鑰和私鑰。網站擁有者向CA機構申請ssl證書時,證書請求文件中只包含公鑰,不包含私鑰。證書私鑰由網站保存,證書請求文件提交給CA機構進行認證和簽名後對外公開。
10. 公鑰證書的證書
可以為各種功能頒發證書,例如 Web 用戶身份驗證、Web 伺服器身份驗證、安全電子郵件(安全/多用途 Internet 郵件擴展 (S/MIME))、Internet 協議安全 (IPSec)、傳輸層安全 (TLS)以及和代碼簽名。證書還可以從一個證書頒發機構(CA) 頒發給另一個證書頒發機構,以便創建證書層次結構。
接收證書的實體是證書的「主題」。證書的頒發者和簽名者是證書頒發機構。
通常,證書包含以下信息:
主體的公鑰值
主體標識符信息(如名稱和電子郵件地址)
有效期(證書的有效時間)
頒發者標識符信息
頒發者的數字簽名,用來證實主題的公鑰和主題的標識符信息之間綁定關系的有效性
證書只有在指定的期限內才有效;每個證書都包含有效期的起止日期,它們是有效期的界限。一旦到了證書的有效期,到期證書的主題就必須申請一個新的證書。
某些情況下有必要撤消證書中所聲明的綁定關系,這時,可以由頒發者吊銷該證書。每個頒發者維護一個證書吊銷列表,程序可以使用該列表檢查任意給定證書的有效性。
證書的主要好處之一是主機不必再為單個主題維護一套密碼,這些單個主題進行訪問的先決條件的是需要通過身份驗證。相反,主機只需在證書頒發者中建立信任。
當主機(如安全 Web 伺服器)指派某個頒發者為受信任的根頒發機構時,主機實際上是信任該頒發者過去常用來建立所頒發證書的綁定關系的策略。事實上,主機信任頒發者已經驗證了證書主體的身份。主機通過將包含頒發者公鑰的頒發者自簽名證書放到主機的受信任根證書頒發機構的證書存儲區,將該頒發者指定為受信任的根頒發機構。中間的或從屬的證書頒發機構受到信任的條件是,他們擁有受信任根證書頒發機構的有效證書路徑。
有關證書的詳細信息,請參閱理解證書。