概述
SSL是一種安全協(xié)議,用于在網(wǎng)絡(luò)傳輸中提供數(shù)據(jù)加密、身份驗(yàn)證和完整性保護(hù)。它基于傳輸層協(xié)議(如TCP),并為其提供加密和安全功能。
-
對(duì)稱加密和非對(duì)稱加密:
- 對(duì)稱加密:使用相同的密鑰進(jìn)行加密和解密。
- 非對(duì)稱加密:使用兩個(gè)密鑰:公鑰用于加密,私鑰用于解密。
-
數(shù)字簽名:用于驗(yàn)證數(shù)據(jù)的完整性和身份驗(yàn)證。發(fā)送方使用私鑰對(duì)數(shù)據(jù)簽名,接收方使用公鑰驗(yàn)證簽名。
-
數(shù)字證書(shū):由可信第三方頒發(fā)的電子文檔,其中包含有關(guān)個(gè)人或組織的身份信息以及公鑰。
-
SSL協(xié)議:基于這些工具和概念,SSL協(xié)議提供了以下幾個(gè)關(guān)鍵功能:
- 數(shù)據(jù)加密:通過(guò)使用非對(duì)稱加密算法(如RSA或Diffie-Hellman),為傳輸?shù)臄?shù)據(jù)提供端到端加密。
- 身份驗(yàn)證:服務(wù)器向客戶端證明其身份,通常通過(guò)使用數(shù)字證書(shū)。
- 密鑰交換:協(xié)商一個(gè)共享的加密密鑰,用于對(duì)稱加密算法(如AES)。
- 數(shù)據(jù)完整性:通過(guò)使用消息認(rèn)證碼(MAC),確保數(shù)據(jù)在傳輸過(guò)程中沒(méi)有被篡改。
-
應(yīng)用場(chǎng)景: SSL在網(wǎng)絡(luò)交易、銀行、電子郵件和許多其他需要保護(hù)敏感信息的場(chǎng)景中廣泛使用。
-
替代品:由于SSL的某些安全問(wèn)題,其后續(xù)版本TLS(傳輸層安全)已成為其替代品。TLS被認(rèn)為是更安全和更現(xiàn)代的協(xié)議。
要充分利用SSL/TLS提供的保護(hù),需要正確配置和管理服務(wù)器和客戶端。此外,定期更新和檢查證書(shū)也是非常重要的,以確保安全性和有效性。
在了解ssl之前,先要了解對(duì)稱加密、非對(duì)稱加密、數(shù)字簽名、數(shù)字證書(shū)。因?yàn)閟sl是基于這些構(gòu)建出來(lái)的。
對(duì)稱加密
-
對(duì)稱加密只有一把密鑰,明文用這把密鑰加密后可以轉(zhuǎn)化為密文,密文再用同一把鑰匙解密。就像家里門(mén)鎖,只能有一把鑰匙打開(kāi)或者鎖上。當(dāng)然可以拿這把鑰匙去配多把一樣的給多個(gè)人用,這樣拿到這個(gè)鑰匙的人都能對(duì)門(mén)進(jìn)行鎖上和打開(kāi)操作。
-
常用的對(duì)稱加密算法有DES、3DES、AES等。
-
對(duì)稱加密的優(yōu)點(diǎn)是加密速度快,適合對(duì)大量信息進(jìn)行加密,缺點(diǎn)是密鑰一旦丟失將導(dǎo)致密文泄漏。
非對(duì)稱加密
非對(duì)稱加密有兩把鑰匙對(duì),A和B,用A加密只能用B解密,用B加密也只能用A解密。有一把鑰匙可以公開(kāi)出去,另一把鑰匙自己留著,公開(kāi)出去的叫公鑰,自己留著的鑰匙叫私鑰。
比如A鑰匙自己留著,鑰匙A叫私鑰,B鑰匙公開(kāi)出去則叫公鑰。公鑰可以復(fù)制多把給很多人用。
使用兩把密鑰:公鑰和私鑰。公鑰用于加密,而私鑰用于解密。這種方法的優(yōu)點(diǎn)在于,即使公鑰被泄露,只要私鑰保持安全,信息仍然是安全的。因此,非對(duì)稱加密在密鑰管理上更為安全。然而,它的缺點(diǎn)是加密速度慢,不適合對(duì)大量信息進(jìn)行加密。
常用的非對(duì)稱加密算法有RSA、ECC等。
在實(shí)際應(yīng)用中,通常會(huì)將對(duì)稱加密和非對(duì)稱加密結(jié)合使用,以提高安全性和效率。例如,可以使用非對(duì)稱加密來(lái)安全地交換對(duì)稱加密的密鑰,然后使用對(duì)稱加密來(lái)加密實(shí)際的數(shù)據(jù)。這樣既可以利用對(duì)稱加密的高速性,又可以保證密鑰交換的安全性。
數(shù)字簽名
數(shù)字簽名是一種電子簽名,通常用于驗(yàn)證消息的真實(shí)性和完整性。它是一種數(shù)學(xué)算法,利用公鑰加密領(lǐng)域的技術(shù)實(shí)現(xiàn)。數(shù)字簽名創(chuàng)建個(gè)人或?qū)嶓w獨(dú)有的虛擬指紋,用于識(shí)別用戶并保護(hù)數(shù)字消息或文檔中的信息。
在數(shù)字簽名的過(guò)程中,發(fā)送方會(huì)用一個(gè)哈希函數(shù)從報(bào)文文本中生成報(bào)文摘要,然后用自己的私人密鑰對(duì)這個(gè)摘要進(jìn)行加密。這個(gè)加密后的摘要將作為報(bào)文的數(shù)字簽名和報(bào)文一起發(fā)送給接收方。接收方首先用與發(fā)送方一樣的哈希函數(shù)從接收到的原始報(bào)文中計(jì)算出報(bào)文摘要,再用發(fā)送方的公用密鑰來(lái)對(duì)報(bào)文附加的數(shù)字簽名進(jìn)行解密。如果這兩個(gè)摘要相同,接收方就能確認(rèn)該數(shù)字簽名是發(fā)送方的,從而驗(yàn)證消息的真實(shí)性和完整性。
數(shù)字簽名是非對(duì)稱密鑰加密技術(shù)與數(shù)字摘要技術(shù)的應(yīng)用,通常用于電子郵件、信用卡交易或數(shù)字文檔等場(chǎng)景。它比其他形式的電子簽名更安全,因?yàn)橹挥行畔⒌陌l(fā)送者才能產(chǎn)生別人無(wú)法偽造的一段數(shù)字串,這個(gè)數(shù)字串同時(shí)也是對(duì)信息的發(fā)送者發(fā)送信息真實(shí)性的一個(gè)有效證明。
舉個(gè)例子:
張三要求李四給他寫(xiě)一封加密信,打算用非對(duì)稱加密方法。張三自己先生成一對(duì)密鑰A和B,A作為私鑰留給自己,B作為公鑰給了李四。李四收到李四的公鑰后就開(kāi)始寫(xiě)信,并用李四給的公鑰B對(duì)信進(jìn)行加密。李四把寫(xiě)好的信郵遞給了張三,張三用自己的私鑰解開(kāi)信件。
張三收到李四的信后會(huì)有兩個(gè)疑問(wèn):
-
1、這封信的內(nèi)容怎么證明沒(méi)有被篡改過(guò)?
-
2、怎么證明這個(gè)信是李四寫(xiě)的,難道不是別人冒充的?
要解決這兩個(gè)問(wèn)題就要用到數(shù)字簽名技術(shù)了。
主要步驟如下:
李四:
-
1、李四生成一對(duì)密鑰C和D,C作為私鑰留給自己,D作為公鑰給張三
-
2、李四寫(xiě)完信后對(duì)信的內(nèi)容用Hash函數(shù)對(duì)信生成一段摘要,把這段摘要用私鑰C加密后付在信的后面一起發(fā)給張三。
張三:
-
1、收到信后先用自己的私鑰把信解出來(lái),并用hash生成摘要
-
2、用李四的公鑰把摘要密文解出來(lái),跟自己生成的摘要進(jìn)行對(duì)比,如果一致則說(shuō)明信沒(méi)有被篡改過(guò),而且可以肯定這封信就是李四寫(xiě)的。
由此可見(jiàn),數(shù)字簽名是利用信息摘要和非對(duì)稱加密證明信息的完整性(沒(méi)被篡改)和信息發(fā)送方的身份的一種技術(shù)。
數(shù)字證書(shū)
數(shù)字證書(shū)是一種用于驗(yàn)證網(wǎng)絡(luò)通信中各方身份信息的電子文檔,也稱為數(shù)字標(biāo)識(shí)。它是由權(quán)威的第三方機(jī)構(gòu)(CA)頒發(fā)的,通常采用國(guó)際標(biāo)準(zhǔn)X.509格式。數(shù)字證書(shū)中包含了一系列關(guān)于證書(shū)所有人的信息,如姓名、公鑰、有效期等,以及CA的簽名。
數(shù)字證書(shū)基于密碼學(xué)原理,利用數(shù)字簽名、加密、解密等技術(shù),在Internet上建立起有效的信任機(jī)制。其主要功能包括:在網(wǎng)絡(luò)通信中標(biāo)識(shí)通訊各方身份信息;對(duì)網(wǎng)絡(luò)用戶在計(jì)算機(jī)網(wǎng)絡(luò)交流中的信息和數(shù)據(jù)進(jìn)行加密或解密,保證信息和數(shù)據(jù)的完整性和安全性。
數(shù)字證書(shū)的格式遵循ITUTX.509國(guó)際標(biāo)準(zhǔn),包含證書(shū)版本信息、序列號(hào)、簽名算法、發(fā)行機(jī)構(gòu)名稱、有效期、證書(shū)所有人名稱、公開(kāi)密鑰等信息。用戶在瀏覽網(wǎng)絡(luò)數(shù)據(jù)信息或進(jìn)行網(wǎng)上交易時(shí),可以利用數(shù)字證書(shū)保障信息傳輸及交易的安全性。
數(shù)字證書(shū)是目前國(guó)際上最成熟并得到廣泛應(yīng)用的信息安全技術(shù)之一。通過(guò)數(shù)字證書(shū),可以在網(wǎng)絡(luò)上建立起可信的虛擬世界,保障網(wǎng)絡(luò)通信的安全性。
繼續(xù)上面的案例 :
王五想冒充李四給張三寫(xiě)封信,他偷偷拿了張三的電腦,把里面李四的公鑰D換成他自己的,然后用自己的私鑰對(duì)信件摘要加密,用張三的公鑰B對(duì)信件內(nèi)容加密。把這封冒牌信發(fā)給張三。
怎么解決這種偷梁換柱的問(wèn)題呢?張三只要證明李四給的公鑰就是李四本人的就行。張三要求李四拿他的公鑰去公證處做一下公證,然后將公鑰以數(shù)字證書(shū)的形式發(fā)給張三。
根證書(shū)
根證書(shū)是數(shù)字證書(shū)的一種,也稱為根CA證書(shū)或根CA證書(shū)頒發(fā)機(jī)構(gòu)。根證書(shū)是數(shù)字證書(shū)體系的基礎(chǔ),它是全球數(shù)字證書(shū)體系的層次。根證書(shū)的作用是驗(yàn)證其他數(shù)字證書(shū)的真?zhèn)危瑥亩_保安全通信的可靠性。
根證書(shū)由全球的數(shù)字證書(shū)頒發(fā)機(jī)構(gòu)(CA)發(fā)行,例如Symantec、DigiCert、Comodo等。數(shù)字證書(shū)頒發(fā)機(jī)構(gòu)通過(guò)簽名和驗(yàn)證數(shù)字證書(shū),為網(wǎng)絡(luò)通信提供了一定的安全保障。數(shù)字證書(shū)頒發(fā)機(jī)構(gòu)頒發(fā)的證書(shū),都被數(shù)字簽名,并被公鑰體系結(jié)構(gòu)加密,以確保其完整性和真實(shí)性。
根證書(shū)的作用是建立信任鏈,確保用戶與網(wǎng)站或服務(wù)之間的通信是安全和可信的。當(dāng)用戶訪問(wèn)一個(gè)使用SSL/TLS協(xié)議的網(wǎng)站時(shí),瀏覽器會(huì)查看該網(wǎng)站的證書(shū)是否由受信任的根證書(shū)頒發(fā)機(jī)構(gòu)簽名。如果該網(wǎng)站的證書(shū)是由受信任的根證書(shū)頒發(fā)機(jī)構(gòu)簽名,那么瀏覽器就會(huì)認(rèn)為該網(wǎng)站是安全的,并允許用戶與該網(wǎng)站進(jìn)行加密通信。
根證書(shū)的安裝意味著對(duì)這個(gè)CA認(rèn)證中心的信任。從技術(shù)上講,數(shù)字證書(shū)其實(shí)包含三部分,用戶的信息、用戶的公鑰、還有CA中心對(duì)該證書(shū)里面的信息的簽名。也就是說(shuō),用戶在使用自己的數(shù)字證書(shū)之前必須先下載根證書(shū)。
繼續(xù)上面的故事:
CA認(rèn)證中心是第三方權(quán)威的認(rèn)證機(jī)構(gòu),李四將自己的信息和公鑰提交給CA機(jī)構(gòu),CA機(jī)構(gòu)再三確認(rèn)李四信息無(wú)誤后會(huì)給李四提交的文件“蓋個(gè)章”,表示這是經(jīng)過(guò)權(quán)威就夠認(rèn)證無(wú)誤的。
使用openssl模擬CA生成根證書(shū)
生成非對(duì)稱加密的私鑰,下面這個(gè)命令將生成私鑰ca.pem,公鑰可以有該私鑰產(chǎn)生。
openssl genrsa -out ca.pem 2048
-
openssl
: 這是 OpenSSL 命令行工具的調(diào)用命令,用于執(zhí)行各種與 SSL/TLS 和加密相關(guān)的操作。 -
genrsa
: 這是 OpenSSL 命令的一個(gè)子命令,用于生成 RSA 私鑰。 -
-out ca.pem
: 這個(gè)參數(shù)指定生成的私鑰應(yīng)該保存到名為 “ca.pem” 的文件中。 -
2048
: 這個(gè)參數(shù)指定生成的 RSA 私鑰的大小,單位是比特。在這種情況下,它是 2048 位。2048 位是一個(gè)常用的密鑰大小,因?yàn)樗峁┝肆己玫陌踩?,同時(shí)保持了相對(duì)快的性能。
或者
openssl genrsa -des3 -out ca.pem 2048
這個(gè)命令是使用 OpenSSL 來(lái)生成一個(gè) RSA 私鑰。讓我們逐個(gè)解釋命令中的參數(shù):
-
openssl
: 這是 OpenSSL 命令行工具的調(diào)用命令,用于執(zhí)行各種與 SSL/TLS 和加密相關(guān)的操作。 -
genrsa
: 這是 OpenSSL 命令的一個(gè)子命令,用于生成 RSA 私鑰。 -
-des3
: 這個(gè)參數(shù)指示 OpenSSL 使用 3DES 加密算法來(lái)保護(hù)生成的私鑰。當(dāng)你存儲(chǔ)或傳輸這個(gè)私鑰時(shí),它將被 3DES 加密。 -
-out ca.pem
: 這個(gè)參數(shù)指定生成的私鑰應(yīng)該保存到名為 “ca.pem” 的文件中。 -
2048
: 這個(gè)參數(shù)指定生成的 RSA 私鑰的大小,單位是比特。在這種情況下,它是 2048 位。2048 位是一個(gè)常用的密鑰大小,因?yàn)樗峁┝肆己玫陌踩裕瑫r(shí)保持了相對(duì)快的性能。
總之,這個(gè)命令將生成一個(gè)使用 3DES 加密的 2048 位 RSA 私鑰,并將其保存到 “ca.pem” 文件中。
生成csr文件 (證書(shū)簽名請(qǐng)求)
該文件主要有兩部分組成,一部分是描述該CA機(jī)構(gòu)的信息,另一部分是CA的公鑰。輸入這條命令后需要輸入CA機(jī)構(gòu)的信息
openssl req -new -key ca.pem -out ca.csr
用于生成一個(gè)新的證書(shū)簽名請(qǐng)求(CSR)的命令,其中涉及到CA(證書(shū)頒發(fā)機(jī)構(gòu))的信息和公鑰。
-
openssl req
: 這是OpenSSL命令行工具的一個(gè)子命令,用于處理證書(shū)簽名請(qǐng)求(CSR)和私鑰。 -
-new
: 這個(gè)選項(xiàng)表示要?jiǎng)?chuàng)建一個(gè)新的CSR。 -
-key ca.pem
: 這個(gè)選項(xiàng)指定了私鑰文件的路徑,該私鑰將與CSR相關(guān)聯(lián)。在這個(gè)例子中,私鑰文件是“ca.pem”。 -
-out ca.csr
: 這個(gè)選項(xiàng)指定了輸出文件的路徑,生成的CSR將保存在這個(gè)文件中。在這個(gè)例子中,CSR文件將命名為“ca.csr”。
在執(zhí)行這個(gè)命令后,通常會(huì)提示輸入一些CA機(jī)構(gòu)的信息,例如國(guó)家(C)、組織(O)、組織單位(OU)和通用名(CN)。這些信息將被包含在CSR中,并且將在生成證書(shū)時(shí)使用。
查看ca.csr文件
openssl req -in ca.csr -text -noout
這個(gè)命令做了以下幾件事:
-
openssl req
: 這是 OpenSSL 的一個(gè)子命令,用于處理證書(shū)簽名請(qǐng)求 (CSR)。 -
-in ca.csr
: 指定要處理的 CSR 文件名,這里是ca.csr
。 -
-text
: 這個(gè)選項(xiàng)讓 OpenSSL 顯示 CSR 的詳細(xì)信息,包括生成的隨機(jī)數(shù)、證書(shū)的主題信息等。 -
-noout
: 這個(gè)選項(xiàng)告訴 OpenSSL 在顯示 CSR 詳細(xì)信息時(shí)不將其輸出為DER格式。
執(zhí)行這個(gè)命令后,會(huì)看到有關(guān) ca.csr
的詳細(xì)信息,包括其中的內(nèi)容、主題、公鑰等信息。
[root@VM-24-3-centos ssl]# openssl req -in ca.csr -text -noout
Certificate Request:
Data:
Version: 0 (0x0)
Subject: C=CN, ST=SD, L=JN, O=ZZ, OU=YY, CN=BB
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:b2:5c:13:a3:b1:4f:77:94:f6:a0:d6:f9:64:94:
75:9a:7e:f7:4f:6d:58:d1:a8:cf:57:07:75:69:e5:
49:8a:f8:b4:5e:c4:c4:e6:25:eb:b4:49:43:80:15:
8d:41:ae:2a:3a:da:98:de:cf:dc:c6:73:1d:cd:f2:
3f:00:cf:2f:d5:da:5c:7f:ed:41:f9:1b:bc:f7:67:
7b:af:49:26:05:c6:d4:e4:91:e3:0d:fd:2c:36:b5:
94:20:37:52:ba:ce:0f:c2:24:5f:bd:0b:d7:f5:ff:
7c:a0:9f:80:3f:bb:6d:f0:97:ca:af:f6:5f:3c:53:
b0:fc:e7:41:8b:88:db:49:05:f5:6a:22:d7:4e:a3:
f5:a9:b7:d0:f0:e2:81:23:14:29:21:44:1b:8d:d5:
a5:d1:75:53:91:0f:db:25:78:c8:e2:b0:6f:9b:35:
c5:43:4f:29:4c:cc:ab:ee:78:0c:12:b8:6a:d1:18:
93:37:03:c4:c9:11:55:73:5e:29:3c:9b:d4:e7:52:
25:ae:38:ef:00:bb:15:41:45:30:69:a9:52:cd:25:
84:29:ca:31:21:58:8c:72:28:cf:97:5a:d0:d1:64:
08:cd:09:68:da:4f:71:46:b7:94:58:34:40:93:a6:
53:8c:ee:64:22:c3:ca:51:19:f0:c0:8a:8e:0e:71:
97:63
Exponent: 65537 (0x10001)
Attributes:
a0:00
Signature Algorithm: sha256WithRSAEncryption
39:0e:6a:d1:bb:ab:49:b0:77:75:f6:c0:d1:8c:78:a5:2d:b6:
2a:97:41:6b:b6:b0:c2:5d:c0:7c:4c:53:1d:2f:0d:28:26:02:
b4:e5:d2:6a:ef:f9:f1:65:6e:e6:c7:be:ba:89:6f:1a:0d:f6:
b7:70:f4:1c:68:84:31:06:b2:90:8b:d8:c8:73:10:e8:8a:08:
79:6d:55:bf:bd:2f:94:48:eb:2f:ef:65:f9:b7:e3:da:39:23:
a5:cf:15:a3:06:75:e6:e1:b1:d7:4c:79:28:ef:c2:23:78:3b:
83:5b:a5:a8:f5:02:f4:18:55:43:ee:3e:a4:ab:ed:2a:a7:2a:
ec:0e:ba:05:10:c6:ed:10:49:24:78:61:36:5c:00:5e:86:7e:
c8:81:13:46:79:9f:df:ee:84:ed:6a:b7:70:21:f6:32:b5:7b:
53:5e:a9:68:10:29:1b:e8:aa:16:38:d7:a6:5e:64:b3:94:a3:
95:e2:66:7a:44:45:6f:28:1f:2d:50:87:62:19:07:40:6d:19:
be:94:03:1f:f3:04:d2:8f:0a:a7:a3:de:5a:a9:6f:cc:8b:4c:
55:ea:da:cf:a6:84:0a:b4:97:84:33:d8:63:27:48:3d:fe:fc:
c7:dd:cd:b0:7d:32:9d:db:44:d2:d9:53:f3:37:22:68:38:77:
f7:89:fe:fa
[root@VM-24-3-centos ssl]#
生成數(shù)字證書(shū)ca.crt
該證書(shū)主要是對(duì)ca.csr的摘要信息用ca.pem私鑰加密,并把加密的摘要附在后面
openssl x509 -req -in ca.csr -out ca.crt -signkey ca.pem-days 3650
這個(gè)命令是用來(lái)將一個(gè)證書(shū)簽名請(qǐng)求(CSR)轉(zhuǎn)換為一個(gè)自簽名證書(shū)(CRT)的。
具體來(lái)說(shuō),這個(gè)命令做了以下幾件事:
-
openssl x509
: 這是 OpenSSL 的一個(gè)子命令,用于處理 X.509 證書(shū)。 -
-req
: 這個(gè)選項(xiàng)表示輸入是一個(gè)證書(shū)簽名請(qǐng)求(CSR)。 -
-in ca.csr
: 指定輸入的 CSR 文件名為ca.csr
。 -
-out ca.crt
: 指定輸出的證書(shū)文件名為ca.crt
。 -
-signkey ca.pem
: 這個(gè)選項(xiàng)告訴 OpenSSL 使用ca.pem
文件中的私鑰來(lái)簽名 CSR。 -
-days 3650
: 這個(gè)選項(xiàng)設(shè)置證書(shū)的有效期為 3650 天,即大約 10 年。
執(zhí)行這個(gè)命令后,將會(huì)生成一個(gè)名為 ca.crt
的自簽名證書(shū),該證書(shū)由 ca.pem
中的私鑰簽名,并具有 10 年的有效期。
查看ca.crt文件信息
可以使用以下命令來(lái)查看 ca.crt
文件的信息:
openssl x509 -in ca.crt -text -noout
這個(gè)命令做了以下幾件事:
-
openssl x509
: 這是 OpenSSL 的一個(gè)子命令,用于處理 X.509 證書(shū)。 -
-in ca.crt
: 指定要查看的證書(shū)文件名為ca.crt
。 -
-text
: 這個(gè)選項(xiàng)讓 OpenSSL 顯示證書(shū)的詳細(xì)信息,包括證書(shū)的主題、有效期、簽名算法、發(fā)行者、所有者等信息。 -
-noout
: 這個(gè)選項(xiàng)告訴 OpenSSL 在顯示證書(shū)詳細(xì)信息時(shí)不將其輸出為DER格式。
執(zhí)行這個(gè)命令后,會(huì)看到有關(guān) ca.crt
的詳細(xì)信息,包括其中的內(nèi)容、主題、有效期、簽名算法等。
[root@VM-24-3-centos ssl]# openssl x509 -in ca.crt -text -noout
Certificate:
Data:
Version: 1 (0x0)
Serial Number:
c9:84:dc:7c:91:7a:73:48
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=XX, L=Default City, O=Default Company Ltd
Validity
Not Before: Jan 24 09:41:31 2024 GMT
Not After : Jan 21 09:41:31 2034 GMT
Subject: C=XX, L=Default City, O=Default Company Ltd
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:b2:5c:13:a3:b1:4f:77:94:f6:a0:d6:f9:64:94:
75:9a:7e:f7:4f:6d:58:d1:a8:cf:57:07:75:69:e5:
49:8a:f8:b4:5e:c4:c4:e6:25:eb:b4:49:43:80:15:
8d:41:ae:2a:3a:da:98:de:cf:dc:c6:73:1d:cd:f2:
3f:00:cf:2f:d5:da:5c:7f:ed:41:f9:1b:bc:f7:67:
7b:af:49:26:05:c6:d4:e4:91:e3:0d:fd:2c:36:b5:
94:20:37:52:ba:ce:0f:c2:24:5f:bd:0b:d7:f5:ff:
7c:a0:9f:80:3f:bb:6d:f0:97:ca:af:f6:5f:3c:53:
b0:fc:e7:41:8b:88:db:49:05:f5:6a:22:d7:4e:a3:
f5:a9:b7:d0:f0:e2:81:23:14:29:21:44:1b:8d:d5:
a5:d1:75:53:91:0f:db:25:78:c8:e2:b0:6f:9b:35:
c5:43:4f:29:4c:cc:ab:ee:78:0c:12:b8:6a:d1:18:
93:37:03:c4:c9:11:55:73:5e:29:3c:9b:d4:e7:52:
25:ae:38:ef:00:bb:15:41:45:30:69:a9:52:cd:25:
84:29:ca:31:21:58:8c:72:28:cf:97:5a:d0:d1:64:
08:cd:09:68:da:4f:71:46:b7:94:58:34:40:93:a6:
53:8c:ee:64:22:c3:ca:51:19:f0:c0:8a:8e:0e:71:
97:63
Exponent: 65537 (0x10001)
Signature Algorithm: sha256WithRSAEncryption
3e:36:2d:ef:dd:97:de:ff:ad:99:0d:09:46:c3:54:9a:66:0e:
2c:b8:e9:6c:05:6b:40:59:37:e6:05:9e:af:38:7c:3e:58:ec:
69:18:2f:66:13:e7:81:fc:7c:ef:8c:5c:7d:25:00:71:b2:ae:
4b:7d:a7:ad:04:d9:96:2d:4b:c7:bc:26:96:4c:ba:3a:72:ca:
4b:6e:61:8b:d8:74:eb:59:34:f9:68:0e:f3:bb:55:9f:48:f3:
34:89:bc:79:70:d4:dc:46:43:17:55:c8:a8:2b:5f:f7:06:5c:
be:53:06:83:6d:40:a3:29:4d:16:84:d4:86:f1:f1:5b:23:1a:
fc:d8:fa:7f:93:fb:27:b6:10:16:5f:ab:17:5c:dd:f1:27:3a:
a9:9d:ec:be:ba:32:2f:b5:7f:f2:22:de:8c:de:88:ab:1a:4b:
0d:d7:5f:98:46:26:f1:44:bd:fa:9c:b3:64:f2:db:c2:53:ee:
69:1d:aa:e2:64:1b:18:74:8b:2e:0f:10:ba:67:0d:aa:c6:f8:
6a:0e:ab:f5:b1:21:ad:84:39:65:50:86:49:c7:61:77:12:3f:
f5:48:07:87:83:38:9a:5b:f6:bd:29:07:66:27:f2:e5:2a:72:
d1:01:0e:c9:43:08:da:1c:f0:c4:ae:c1:e0:99:c9:6f:6a:d9:
48:f3:79:fa
[root@VM-24-3-centos ssl]#
小結(jié)
-
ca.pem
:rsa非對(duì)稱加密私鑰,用該私鑰能推導(dǎo)出公鑰 -
ca.csr
:根證書(shū)申請(qǐng)文件,該文件有申請(qǐng)者的信息和公鑰 -
ca.crt
:根證書(shū),主要內(nèi)容是ca.csr+數(shù)字簽名 ,ca.crt
是公開(kāi)的,使用者可以下載,主要是用里面ca的公鑰。
在非對(duì)稱加密中,私鑰用于解密和簽名數(shù)據(jù),而公鑰用于加密和驗(yàn)證簽名。
- ca.pem: 這確實(shí)是 RSA 非對(duì)稱加密的私鑰。私鑰用于解密數(shù)據(jù)、驗(yàn)證消息的完整性和身份。它必須保持私密,不能泄露給任何未經(jīng)授權(quán)的實(shí)體。
- ca.csr: 這是一個(gè)證書(shū)簽名請(qǐng)求(CSR)文件,通常包含申請(qǐng)證書(shū)的實(shí)體(如網(wǎng)站或服務(wù)器)的信息,以及該實(shí)體的公鑰。CSR 文件用于向證書(shū)頒發(fā)機(jī)構(gòu)(CA)提交申請(qǐng),請(qǐng)求為其生成一個(gè)證書(shū)。
- ca.crt: 這是由 CA 生成的證書(shū)文件,通常包含 CSR 中的信息(如主題、有效期等)以及 CA 的簽名。這個(gè)簽名驗(yàn)證了證書(shū)的所有者和證書(shū)內(nèi)容的有效性。一旦證書(shū)被簽名并分發(fā),任何人都可以使用 CA 的公鑰來(lái)驗(yàn)證這個(gè)簽名,從而驗(yàn)證證書(shū)的有效性和真實(shí)性。由于證書(shū)是公開(kāi)的,使用者可以下載并使用其中的 CA 公鑰進(jìn)行通信和驗(yàn)證其他證書(shū)。
在實(shí)際應(yīng)用中,CA(證書(shū)頒發(fā)機(jī)構(gòu))使用其私鑰對(duì)來(lái)自各種實(shí)體(如網(wǎng)站、服務(wù)器等)的 CSR 進(jìn)行簽名,生成證書(shū)。然后,這些證書(shū)可以被安裝在客戶端或服務(wù)器上,以建立安全的通信通道。通過(guò)使用公鑰和私鑰對(duì)數(shù)據(jù)進(jìn)行加密和解密,可以確保數(shù)據(jù)在傳輸過(guò)程中的安全性和完整性。
申請(qǐng)ca證書(shū)
申請(qǐng)CA證書(shū)的步驟如下:
- 選擇一家可信的數(shù)字證書(shū)頒發(fā)機(jī)構(gòu),如 VeriSign、GlobalSign、Comodo 或 Symantec 等。
- 根據(jù)需求,確定要申請(qǐng)的證書(shū)類型,如 SSL 證書(shū)、代碼簽名證書(shū)、身份驗(yàn)證證書(shū)、電子郵件證書(shū)或文檔簽名證書(shū)等。
- 準(zhǔn)備必要的申請(qǐng)材料,包括企業(yè)或個(gè)人證書(shū)申請(qǐng)者的信息、身份證明、證書(shū)類型和域名等。
- 填寫(xiě) CA 證書(shū)申請(qǐng)表,并提交給所選擇的數(shù)字證書(shū)頒發(fā)機(jī)構(gòu)。
- 支付 CA 證書(shū)的費(fèi)用。
- 等待 CA 證書(shū)頒發(fā)機(jī)構(gòu)的審核,審核通過(guò)后即可下載和安裝 CA 證書(shū)。
請(qǐng)注意,在申請(qǐng) CA 證書(shū)時(shí),務(wù)必確保提供準(zhǔn)確的個(gè)人信息和支付信息,并在公共網(wǎng)絡(luò)上進(jìn)行 CA 證書(shū)申請(qǐng)以確保個(gè)人信息和支付信息的安全。在收到 CA 證書(shū)下載鏈接后,應(yīng)盡快下載并安裝,以確保網(wǎng)絡(luò)安全。
繼續(xù)上個(gè)故事:
李四想要CA機(jī)構(gòu)申請(qǐng)自己的證書(shū)該怎么辦呢?下面用openssl模擬ca機(jī)構(gòu)來(lái)為李四簽發(fā)數(shù)字證書(shū)
1、李四先生成自己的非對(duì)稱加密密鑰LiSi.pem
openssl genrsa -out LiSi.pem 2048
2、李四生成LiSi.csr文件,需要填寫(xiě)上李四的信息
openssl req -new -key LiSi.pem -out LiSi.csr
3、李四將該csr提交給ca中心,ca中心根據(jù)李四提交的csr進(jìn)行簽名,最后ca生成給李四的數(shù)字證書(shū)是LiSi.crt文件
openssl x509 -req -in LiSi.csr -out LiSi.crt -CA ./ca.crt -CAkey ./ca.pem -CAcreateserial -days 3650
上述過(guò)程描述了一個(gè)基本的流程,用于生成一個(gè)自簽名證書(shū),通常用于HTTPS服務(wù)器或客戶端的身份驗(yàn)證。
以下是詳細(xì)的步驟解釋:
- 生成私鑰
openssl genrsa -out LiSi.pem 2048
使用openssl genrsa
命令生成一個(gè)私鑰。-out LiSi.pem
指定生成的私鑰文件名為LiSi.pem
。2048
指定生成的密鑰長(zhǎng)度為2048位,這是一個(gè)常見(jiàn)的選擇,但也可以選擇其他長(zhǎng)度。
- 生成證書(shū)簽名請(qǐng)求(CSR)
openssl req -new -key LiSi.pem -out LiSi.csr
使用openssl req
命令創(chuàng)建一個(gè)新的證書(shū)簽名請(qǐng)求(CSR)。-new
表示創(chuàng)建一個(gè)新的請(qǐng)求。-key LiSi.pem
指定使用之前生成的私鑰文件。-out LiSi.csr
指定輸出的CSR文件名為LiSi.csr
。
-
自簽名證書(shū)
為了從CSR生成自簽名證書(shū),實(shí)際上不需要CA中心,因?yàn)槲覀冏约壕褪荂A。但
openssl x509 -req -in LiSi.csr -out LiSi.crt -CA ../ca.crt -CAkey ../ca.pem -CAcreateserial -days 3650
使用openssl x509
命令從CSR創(chuàng)建一個(gè)自簽名證書(shū)。
-
-req
: 指定輸入的CSR文件。 -
-in LiSi.csr
: 指定輸入的CSR文件名為LiSi.csr
。 -
-out LiSi.crt
: 指定輸出的證書(shū)文件名為LiSi.crt
。 -
-CA ../ca.crt
: 指定CA的證書(shū)文件路徑,用于驗(yàn)證您是否有權(quán)限簽名此證書(shū)。這里使用的是相對(duì)路徑指向上一級(jí)目錄中的ca.crt
文件。 -
-CAkey ../ca.pem
: 指定CA的私鑰文件路徑,用于創(chuàng)建序列號(hào)并簽署證書(shū)。這里使用的是相對(duì)路徑指向上一級(jí)目錄中的ca.pem
文件。 -
-CAcreateserial
: 創(chuàng)建一個(gè)新的序列號(hào)文件。這通常與CA一起使用,但在這里不必要,因?yàn)槲覀冎皇亲院灻?/li> -
-days 3650
: 設(shè)置證書(shū)的有效期為3650天。根據(jù)您的需要,可以更改此值。
完成上述步驟后,我們應(yīng)該有一個(gè)私鑰文件(LiSi.pem
)、一個(gè)證書(shū)簽名請(qǐng)求(LiSi.csr
)和一個(gè)自簽名證書(shū)(LiSi.crt
)。
4、 用openssl x509 -in LiSi.crt -text -noout看一下李四的數(shù)字證書(shū)
可以看出,李四的數(shù)字證書(shū)中包含:版本+證書(shū)序號(hào)+ca機(jī)構(gòu)信息+證書(shū)有效期+李四個(gè)人信息+李四公鑰+ca對(duì)李四csr的數(shù)字簽名
5. 李四得到證書(shū)后可以驗(yàn)證一下證書(shū)的有效性
openssl verify -CAfile ./ca.crt LiSi.crt
這條命令是用于驗(yàn)證一個(gè)證書(shū)是否由指定的CA(證書(shū)頒發(fā)機(jī)構(gòu))簽署。
具體來(lái)說(shuō),openssl verify -CAfile ../ca.crt LiSi.crt
的作用是:
-
openssl verify
: 這是 OpenSSL 的一個(gè)子命令,用于驗(yàn)證證書(shū)的有效性。 -
-CAfile ../ca.crt
: 這個(gè)選項(xiàng)指定了 CA 的證書(shū)文件路徑。在這里,它是相對(duì)路徑指向上一級(jí)目錄中的ca.crt
文件。CA 的證書(shū)通常包含公鑰,用于驗(yàn)證其他證書(shū)的簽名。 -
LiSi.crt
: 這是要驗(yàn)證的證書(shū)文件名。
執(zhí)行這個(gè)命令后,如果 LiSi.crt
是由 ../ca.crt
文件中指定的CA簽署的,命令將輸出 “OK”,否則將輸出證書(shū)驗(yàn)證失敗的原因。
完整流程
繼續(xù)上個(gè)故事:
李四給張三寫(xiě)加密信的完整流程
1、李四和張三都從ca機(jī)構(gòu)下載根證書(shū)
2、李四和張三都向ca機(jī)構(gòu)申請(qǐng)數(shù)字證書(shū)
3、互換數(shù)字證書(shū)并用根證書(shū)驗(yàn)證
4、李四用張三的證書(shū)中的公鑰對(duì)信加密
5、李四用私鑰對(duì)信進(jìn)行簽名
6、李四將加密的信和簽名都發(fā)給張三
7、張三收到信后先用私鑰解開(kāi)加密的信,在用李四證書(shū)中的公鑰驗(yàn)證簽名
8、簽名驗(yàn)證成功,張三可以看信了
總結(jié)
數(shù)字簽名和數(shù)字證書(shū)是信息安全領(lǐng)域的兩個(gè)重要概念,它們都涉及到信息的完整性和發(fā)送者的身份驗(yàn)證。以下是它們各自的定義和所使用的技術(shù):
- 數(shù)字簽名:
定義:數(shù)字簽名是一種用于驗(yàn)證信息完整性和發(fā)送者身份的方法。它使用信息摘要和非對(duì)稱加密技術(shù),確保信息的完整性和不可篡改性,同時(shí)驗(yàn)證發(fā)送者的身份。
技術(shù):數(shù)字簽名使用兩個(gè)密鑰:公鑰和私鑰。私鑰用于生成數(shù)字簽名,而公鑰用于驗(yàn)證簽名。發(fā)送者使用私鑰對(duì)信息進(jìn)行加密,生成數(shù)字簽名,并將簽名與原始信息一起發(fā)送給接收者。接收者使用公鑰對(duì)簽名進(jìn)行解密,驗(yàn)證信息的完整性和發(fā)送者的身份。
- 數(shù)字證書(shū):
定義:數(shù)字證書(shū)是由第三方權(quán)威機(jī)構(gòu)出具的一種證明信息可靠性的方法。它使用數(shù)字簽名技術(shù),確保證書(shū)本身和所驗(yàn)證的信息的完整性和可信度。
技術(shù):數(shù)字證書(shū)包含證書(shū)持有人的公鑰和身份信息,以及發(fā)行機(jī)構(gòu)的數(shù)字簽名。發(fā)行機(jī)構(gòu)使用自己的私鑰對(duì)證書(shū)進(jìn)行簽名,確保證書(shū)的完整性和可信度。數(shù)字證書(shū)可以用于驗(yàn)證網(wǎng)站的身份、電子郵件地址或任何其他需要證明可靠性的信息。
總之,數(shù)字簽名和數(shù)字證書(shū)都是利用信息摘要和非對(duì)稱加密技術(shù)來(lái)確保信息的完整性和可信度的方法。數(shù)字簽名主要用于驗(yàn)證發(fā)送者的身份和信息的完整性,而數(shù)字證書(shū)則由權(quán)威機(jī)構(gòu)出具,用于證明信息的可靠性。
附
使用OpenSSL生成證書(shū)并配置Https文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-821896.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-821896.html
到了這里,關(guān)于Java - 數(shù)字簽名與數(shù)字證書(shū)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!