摘要:博文參考概述所有業務的正常運轉,離不開一個安全的運行環境,系統安全性直接關系到業務穩定可靠以及可用性,本章就介紹一些系統安全相關的話題。
博文參考
https://segmentfault.com/a/1190000010312601概述
所有業務的正常運轉,離不開一個安全的運行環境,系統安全性直接關系到業務穩定、可靠、以及可用性,本章就介紹一些系統安全相關的話題。加密基礎概念 安全的目標:
保密性:confidentiality 完整性:integrity 可用性:availability攻擊類型:
威脅保密性的攻擊:竊聽,通信量分析 威脅完整性的攻擊:更改,偽裝,重放,否認 威脅可用性的攻擊:拒絕服務(DoS)為了完成安全的目標用到的解決方案
技術:加密和解密 加密和解密: 傳統加密方法:替代加密方法,置換加密方法 現代加密方法:現代塊加密方法 服務:用于低于攻擊的服務,也就是為了上述安全目標而特地設計的安全服務 服務: 認證機制 訪問控制機制對稱加密
對稱加密:加密和解密使用同一個秘鑰;但加密算法和解密算法可能不同 工作過程為: 發送者將發送的數據利用秘鑰,使用加密的算法加密成明文,發送給對方;接收方收到加密的數據后,利用同一個秘鑰,和解密的算法,將數據由密文解密成明文 常見的對稱加密算法: DES:Data Encryption Standard,56位秘鑰 3DES:Triple DES AES:Advanced Encryption Standard,支持128位、192位、256位、384位秘鑰 Blowfish Twofish RC6 CAST5 對稱加密特性: <1>加密解密使用同一個秘鑰 <2>將原始數據分隔成為固定大小塊,逐個進行加密 對稱加密的缺陷: <1>秘鑰過多 <2>秘鑰分發困難 <3>數據來源無法確認公鑰加密(非對稱加密):秘鑰分為公鑰和與之配對的私鑰
公鑰:公鑰從私鑰中提取產生,可以公開給所有人;pubkey 私鑰:通過工具創建,私鑰只能使用則自己留存,必須保證其私密性,secret key 特點:用公鑰加密的數據,只能使用與之配對的私鑰解密;反之,用私鑰加密的數據只能用與之配對的公鑰解密 用途: 數字簽名:主要在于讓接收方確認發送方的身份。將數據用單項加密(MD5、SHA)算法,得出來的特征碼,用自己的私鑰進行加密,這就是數字簽名 秘鑰交換:發送方用對方的公鑰加密一個對稱加密的秘鑰,并發送給對方,以實現秘鑰交換 數據加密:一般很少用公鑰加密發送的數據本身,因為公鑰加密的加密效率很低,因此一般用對稱秘鑰加密要發送的數據本身 公鑰機密的工作模式: 模式一:公鑰加密,私鑰解密 B將數據發送給A,B就拿A的公鑰對數據進行加密,然后將加密后的數據發送給A,那此時,加密后的數據只能被A的私鑰進行解密,因此,即使有第三方拿到加密的數據,也無法完成解密,只有A自己有自己的私鑰,因此實現了數據的保密性 模式二:私鑰加密,公鑰解密 A用自己的私鑰加密一份數據給B,加密后的數據只能被A的公鑰進行解密,因此,如果有第三方拿到加密后的數據,是能夠解密的,因為A的公鑰是公開的,任何人都可以拿到,因此可以解密 但此種方式的作用,并不是真正拿來加密數據,而是用來進行身份驗證(數字簽名),也就是說,A用自己的私鑰加密一段數據(數據不是要發送的數據本身,而是要加密數據利用單向加密算法得出來的特征碼),然后發送給B,B拿A的私鑰進行解密,能夠解密成功,就證明發送方一定是A,因為只有A的公鑰能解開A的私鑰;一旦解開數據后,得到的就是要發送數據的特征碼,等后面真正發送數據后,可以利用該段特征碼,來驗證數據的完整性 公鑰加密的常用的算法: RSA:既能實現數字簽名,也能實現加解密 DSA:有時也被稱為DSS,數字簽名標準。僅能實現數字簽名,不能實現加解密單向加密:只能加密,不能解密。僅能提取數據的特征碼
特性: 定長輸出:無論原始數據多大,得出的特征碼都是固定長度的 雪崩效應:原始數據的微小改變,將導致特征碼的巨大變化 功能:主要用來實現驗證數據的完整性 常見的單向加密算法: MD5:Message Digest 5 消息摘要,5版本。128bit定長輸出 SHA1:Secure Hash Algorithm 1,160位定長輸出 SHA224、SHA256、SHA384、SHA512秘鑰交換:IKE(Internet Key Exchange)
常見的交換算法: 公鑰加密:用對方的公鑰加密對稱秘鑰,這樣對方就能以自己的私鑰解開,從而獲得對稱加密的秘鑰 DH(Deffie-Hellman)算法: <1> A: a,p 協商生成公開的整數a, 大素數p B: a,p <2> A:生成隱私數據 x, (x加密通信的雙方的通信過程展示A:計算得出 ( a^y%p) ^x = a^xy%p, 生成為密鑰 B:計算得出 ( a^x%p) ^y = a^xy%p, 生成為密鑰
A有一段數據要發送給B,A就用單向加密的算法計算出數據的特征碼,而后A用自己的私鑰加密這段特征碼,生成數字簽名,至此能夠保證數據的完整性(通過比對特征碼),和身份驗證(數字簽名),但是不能保證數據的保密性,因為數據本身還沒被加密。 因此,A會繼續在原有數據和數字簽名的基礎上,生成一個一次性的對稱加密秘鑰,然后利用對稱加密算法結合秘鑰,去加密原有數據和數字簽名。然后,A用B的公鑰,對對稱加密的秘鑰進行加密,并附加到之前利用對稱加密算法生成的數據的后面,然后發送給B 當B收到數據后,就用B自己的私鑰解密附加在后面的對稱加密的秘鑰,從而得到了對稱加密的秘鑰(這就完成了秘鑰交換,實際是雙方都知道了對稱加密的秘鑰的過程就是秘鑰交換),然后利用對稱加密的秘鑰進一步解開數據和數字簽名,然后利用A的公鑰解開數字簽名,得到數據本身的特征碼,然后利用同樣的單項加密算法,計算出收到的數據的特征碼,然后比對特征碼,從而驗證數據的完整性中間人攻擊:
以上通信過程中還是有一個嚴重的漏洞,就是當A和B鍵從來沒進行過通信,那么A怎么獲知B的公鑰,或者B怎么獲知A的公鑰。假設當A沒B的公鑰時,向B發送請求,要求獲知B的公鑰,但是此時,如果有第三方C獲取到請求后,冒充自己就是B,然后將C自己的公鑰發送給A,A就認為C就是B。而C又會冒充自己是A,向B進行通信,從而也獲取了真正B的公鑰,而此后A和B通信的過程中,就都會交由C,數據的安全性就無從保障。這種情況就是中間人攻擊CA和證書的基礎概念 PKI:Public Key Infranstructure公鑰基礎設施
由四個部分組成: 簽證機構:CA機構 注冊機構:RA,相當于CA的派出機構,用于接收注冊申請 證書吊銷列表:CRL 證書存取庫:CBCA的作用
CA:保證通信雙方,能夠可靠的拿到對方的公鑰(避免中間人攻擊),而設定的雙方都信任的第三方可信機構 A將自己的公鑰提請給CA,CA經過特殊的防偽處理后,將處理后的A的公鑰發送給A,處理過后的A的公鑰就稱之為CA證書。以后,如果B如果請求要A的公鑰,那么A就將CA證書發送給B,當B拿到證書后,不會立馬就任何該證書,而是要驗證該證書是否是合法的,還要驗證是否是B信任的CA機構頒發的,驗證完了之后,才會認可 CA證書一般會包含:提請證書的人的名稱,提請人的公鑰,證書有效期,然后CA機構會用自己的私鑰,加密以上的一整段數據的特征碼,然后將加密后的特征碼(也就是數字簽名)附加在數據之后,這個整體就是CA證書 CA證書后面有CA機構用CA機構自己的私鑰對證書內容部分的特征碼加密的數據,通信方要解開此數字簽名就需要用到CA自身的公鑰,但是如何獲取到CA機構自己的公鑰,如果直接申請,那么此時又會存在中間人攻擊的可能,因此,一般是CA機構會給自己發一個CA證書,然后獲取CA自身的證書,一般不能通過網絡發送,因此一般情況下,是線下交易CA證書格式:
X.509,定義證書結構和認證協議的標準,在X.509的標準中,定義了證書需要具備的結構: 版本號:是X.509的v1還是v2還是v3版本 序列號:CA機構所發出的證書的序列號 簽名算法ID:證書所使用的算法 發行者的名稱:CA機構自己的名稱 證書有效期限 主體名稱:提請CA證書的用戶的名稱 主體公鑰: 發行者的唯一標識:CA機構的ID 主體的唯一標識:提請者的ID 擴展信息 發行者的簽名:CA機構利用自己的私鑰對以上內容的特征碼加密,生成的數字簽名,將數字簽名附加在證書內容之后,作為證書的一部分ssl協議和openssl命令 SSL協議:SSL和TLS
SSL:安全套接字層,由Netscape發布于1994年,分為V1.0、V2.0、V3.0但由于其版權屬于Netscape公司,且各版本均被爆出有協議漏洞,因此使用的不多 TLS:Transport Layer Security,傳輸層安全,是國際互聯網工程師協會發布的類似于SSL的協議,其分為V1.0、V1.1、V1.2、V1.3的版本,使用較多的是V1.2的版本TLS的分層設計:
<1>最底層:基礎算法的原語的實現,如AES、RSA、MD5 <2>向上一層:各種算法的實現,也就是算法的具體實現的方式 <3>再向上一層:組合算法實現的半成品 <4>最高層:用各種組件拼裝而成的各種成品密碼學協議軟件;SSL協議的開源實現:OpenSSL
OpenSSL由三部分組成: libencrypt庫:加密解密庫,專用于實現加密解密功能,主要由開發人員使用 libssl庫:用于實現ssl安全通信機制的庫,主要由開發人員使用 openssl多用途命令行工具:opensslSSL會話的主要的三步:
客戶端向服務器端所要并驗證證書(證書里面有服務器端的公鑰信息); 雙方協商生成對稱秘鑰; 雙方采用對稱秘鑰,進行加密通信的過程 會話過程后,進行斷開在SSL會話之前開始之前的雙方Handshake Protocol,SSL握手階段的執行流程
也就是雙方在正式開始SSL會話之前的通信前商量加密算法和生成會話秘鑰階段的詳細過程介紹,(以HTTPS協議為例) <1>第一階段:client-hello 客戶端向服務器端發送: 支持的協議版本,如:tls1.2 客戶端生成一個隨機數,用于稍后生成對稱秘鑰 支持的加密算法,比如AES、RSA、SHA 支持的壓縮算法 <2>第二階段:server-hello 服務器端向客戶端發送: 確認使用的加密通信的協議版本,如tls1.2 生成一個隨機數,用于稍后生成對稱秘鑰 確認使用的加密算法 向客戶端發送服務器證書 如果有必要,有可能會向客戶端索要客戶端的證書(如:當客戶端請求的是網銀頁面時) <3>第三階段:客戶端收到服務器端的server-hello后給出的回應 驗證服務器證書,如果沒問題,則通過解密證書獲取到服務器的公鑰; 驗證的內容: 發證機構:驗證發證機構是否是可信的,也就是驗證證書簽名(CA的數字簽名) 證書的完整性,也是驗證證書的數字簽名里面的解密出來的特征碼 證書的持有者:驗證證書里面的持有者是否與要訪問的頁面是一致的 證書有效期 證書是否被吊銷 發送以下信息給服務器端: 一個隨機數,用于生成對稱秘鑰 編碼變更通知:表示隨后的信息都將用雙方商定的加密方法和秘鑰發送 客戶端握手結束通知:表示客戶端在正式通信前的握手階段結束 <4>第四階段:服務器端 收到客戶端發來的最后一個隨機數后,利用含此隨機數在內的一共三個隨機數生成對稱秘鑰; 向客戶端發送以下信息: 編碼變更通知:表示隨后的信息都將用雙方商定的加密方法和秘鑰發送 服務器端握手結束通知:表示服務器端握手階段已經結束基于SSL的通信的實現過程整理總結:
A、B雙方要進行通信時:A為客戶端,B為服務器端 <1>A發送hello信息給B,B接收后,發送hello信息給A,此時為雙方建立通信前的確認,需要協商雙方真正通信時所用到的加密算法,包括單向加密、對稱加密、公鑰加密、秘鑰交換用的方法 <2>A請求B的證書,B于是將自己的證書(CA處理后的公鑰)發送給A 一般情況下,客戶端不會有證書提供給服務器端,因為一方面是證書的使用費使得客戶端不會去用,另一方面客戶端訪問服務器端的時候,一般不會驗證客戶端的身份,比如訪問某網站,網站不會要求客戶端有證書才響應內容給客戶端,而客戶端是要驗證服務器端的證書的,因為為了防止訪問的網站的正確性,防止釣魚網站等。 但有時服務器端也會驗證客戶端的證書,比如當客戶端訪問的是網銀頁面的時候,會驗證證書,當我們去銀行開通網銀的時候,一般會有個加密狗之類的東西,其實里面存儲的就是用戶自己的ca證書,只是一般該ca證書的頒發機構不是市面上公認的CA機構,而是銀行自己建的一個CA簽發機構,僅對自己銀行內部有效 <3>A收到B的證書后,驗證B的證書,如果驗證沒有問題 <4>A驗證B的證書沒問題后,生成一個隨機數,作為對稱加密的秘鑰,A利用雙方之前協商的秘鑰交換算法(假設為公鑰加密),則將此秘鑰用B的公鑰加密后發送給B <5>B收到A發送過來的密文的秘鑰后,利用自己的私鑰,解密得出對稱加密的秘鑰,然后利用對稱加密的秘鑰和之前協商的對稱加密的算法,給A發送A所請求的數據,進行正常數據的發送 <6>當正常的數據傳輸完成后,A(客戶端)請求通信斷開,服務器也斷開,然后通信終止openssl命令
openssl命令行工具有眾多子命令,主要分為三類: 標準命令:enc、ca、req、genrsa… 消息摘要命令(dgst子命令相關) 加密命令(enc子命令相關) <1>使用openssl命令行工具完成對稱加密: 工具:openssl enc子命令 支持的算法:aes、des、3des等 enc命令的用法: openssl enc -CIPHERNAME -e|d -in /PATH/TO/FILE -out /PATH/TO/FILE 選項解釋: -CIPHERNAME:加密的算法的名稱,可通過openssl –help查看所支持的加密算法的名稱 -e|d:-e表示加密,-d表示解密 -in /PATH/TO/FILE 要加密的文件 -out /PATH/TO/FILE 加密后的文件 -pass STRING 表示對稱加密的秘鑰是什么 -a|-base64 表示以base64文本格式進行編碼,如果不指定,可能是以二進制格式進行編碼 如對/testdir/file1進行對稱加密: openssl enc -des3 -e -a -salt -in /testdir/file1 -out /testdir/jmfile1 輸入后回車,會要求輸入對稱加密的秘鑰,輸入完成,即可完成加密 -des3表示采用des3的加密算法,-a表示以base64文本格式進行編碼,-salt表示加點雜質 解密上面加密的文件: openssl enc -des3 -d -a -salt -in /testdir/jmfile1 -out /testdir/file2 輸入后回車,會要求輸入對稱加密的秘鑰,輸入完成,即可完成解密
[root@localhost ~]# echo "1 2 3 4 5" > f1 [root@localhost ~]# cat f1 #原始文件 1 2 3 4 5 [root@localhost ~]# openssl enc -des3 -e -a -salt -in f1 -out f1.m enter des-ede3-cbc encryption password: #使用3des對稱加密算法,對原始文件進行加密,輸入對稱加密的秘鑰 Verifying - enter des-ede3-cbc encryption password: [root@localhost ~]# cat f1.m #加密后文件內容 U2FsdGVkX1+C+zxYYZ2mnH/Jhae8XNmly3SzFVeT738= [root@localhost ~]# openssl enc -des3 -d -a -salt -in f1.m -out f2 enter des-ede3-cbc decryption password: #解密,要求輸入加密時使用的對稱加密秘鑰 [root@localhost ~]# cat f2 #解密文件 1 2 3 4 5
<2>單向加密
工具:openssl dgst、md5sum、sha1sum、sha256sum… 用法: md5sum /PATH/TO/FILE sha1sum /PATH/TO/FILE openssl dgst -md5|-sha1… /PATH/TO/FILE
[root@localhost ~]# md5sum f1 9f96ef92fe742165873c313662f1f2b8 f1 [root@localhost ~]# openssl dgst -md5 f1 MD5(f1)= 9f96ef92fe742165873c313662f1f2b8 [root@localhost ~]# sha1sum f1 63b956989fab15e957086b98295ca0cdd69eb0b7 f1 [root@localhost ~]# openssl dgst -sha1 f1 SHA1(f1)= 63b956989fab15e957086b98295ca0cdd69eb0b7 [root@localhost ~]# sha512sum f1 cc7818f71e5669a72d45c9563a59e4db18ed899982eab1f884c4c4a58a7f0b63b5f4d750c1caa88e1cfff311a0cb7776f831b8af3beb3bf2cc7a73fe761f0c7e f1 [root@localhost ~]# openssl dgst -sha512 f1 SHA512(f1)= cc7818f71e5669a72d45c9563a59e4db18ed899982eab1f884c4c4a58a7f0b63b5f4d750c1caa88e1cfff311a0cb7776f831b8af3beb3bf2cc7a73fe761f0c7e 只要原始文件沒有發生改變,使用同種加密算法計算出來的特征碼一定一樣
<3>生成用戶密碼的命令:
工具:passwd、openssl passwd 例如: openssl passwd -1 -salt 12345然后回車,會提示要求輸入密碼,輸入完成后,即可生成加密后的密碼 -1 表示使用md5方式加密 -salt STRING表示生成密碼時加入的雜質的內容 -salt后面加的雜質的內容可以用隨機數生成,生成隨機數可以用openssl的子命令生成 openssl passwd -1 -salt `openssl rand -hex 4`
[root@localhost ~]# openssl passwd -1 -salt "abcde" Password: $1$abcde$OmqJ.85QGvaLaaHqbRijw1 #-1表示使用MD5的加密算法,加入的雜質為abcde,然后輸入密碼,就生成基于MD5加密后的加密字符串 [root@localhost ~]# openssl passwd -1 -salt `openssl rand -hex 4` Password: $1$d7dc4cfb$DA8Cq0zbnt0P2afb4X6zs1 #使用openssl自帶的生成隨機字符串工具作為加密雜質
<4>openssl生成隨機數:
工具:openssl rand 用法:openssl rand [-out FILE] [-base64] [-hex] NUM -out FILE 表示將生成的隨機數保存在某個文件中 -base64 表示使用base64編碼,生成的隨機數后面可能會有=,要去掉=后才是真正的隨機數 -hex 表示使用十六進制數字編碼 NUM 表示生成隨機字符串的長度 如: openssl rand -base64 10 表示生成一個10個字節的隨機數,采用base64編碼格式進行輸出 openssl rand -hex 10 輸出10個字節的16進制字節長度的隨機數,相當于輸出20個字符 Linux上的隨機數生成器: /dev/random:僅從熵池中返回隨機數,當隨機數用盡,會阻塞后續請求隨機數的應用 /dev/urandom:從熵池中返回隨機數,隨機數用盡,會利用軟件生成偽隨機數,不會阻塞。偽隨機數不安全 熵池中隨機數的來源: 硬盤I/O中斷時間間隔 鍵盤I/O中斷時間間隔
[root@localhost ~]# openssl rand -hex 5 76ebc802ee [root@localhost ~]# openssl rand -base64 5 Vmn4PbI= [root@localhost ~]# openssl rand -hex 10 95faaee7d3ba04d588ae [root@localhost ~]# openssl rand -hex 10 add09e02712965f5b064
<5>openssl實現公鑰加密:
加密解密: 支持的算法:RSA、ELGamal 工具:openssl rsautl 數字簽名: 支持的算法:RSA、DSA、ELGamal 工具:openssl rsautl 秘鑰交換 支持的算法:DH、RSA 生成私鑰:(公鑰一般不需要生成,而是自動的會從私鑰中提取產生) openssl genrsa 512|768|1024|2048…表示生成一個長度為512、768…位的私鑰 openssl genrsa 1024 > /PATH/TO/FILE 表示生成一個1024位的私鑰保存到文件中 openssl genrsa 1024 -out /PATH/TO/FILE 也表示生成一個1024位的私鑰保存到文件中 生成的私鑰文件,不能讓其他人訪問,因此一般要將私鑰文件的權限變成600,為了簡化步驟,可以直接在生成私鑰時就定義其權限,如: (umask 077;openssl genrsa 1024 -out /PATH/TO/FILE) 用了小括號,相當于在一個子shell中運行,因此此時的子shell的umask設置僅對子shell生效 從私鑰中提取公鑰:一般不用手工提取 openssl rsa -in /PATH/TO/私鑰文件 -pubout 表示從私鑰文件中提取出公鑰
[root@localhost ~]# openssl genrsa 1024 #利用rsa算法生成1024位私鑰 Generating RSA private key, 1024 bit long modulus ......++++++ .......++++++ e is 65537 (0x10001) -----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQDJOWuZALVnZa+E2pdJV5IOkJUZQ6gomne6OS3Jh4FqYEv4tHRg MJ6szKLvX4ZNYdabGwqlrTLiWhC4rEKhlgD+RnEREObhCGhbjhffkcLgqg9UFg2h Hu7pN9p/ecUr2YNQZO8+BdoXgvkSK8KwHudmin4M3NhfZxpH49dXje5xGQIDAQAB AoGBAJL23g/0RYlL6iJU6DOHwsPicxLtqA5nqtQW2Mscrbd8t1/gpDJwsCMynjnI AbXYpD3KRT91vPk2oInQPiX4AaZpJLAJTVnfv7kZv6f0RtGLdCJF/onsjLse9yuE eWon+MkK6UMOU8fYCtWwfCQvTp5pTWgXPrTALpeRiPsTLv6BAkEA6nZQZIgXgVDf RzLN65MT5Awy/CVBj793HPXlvTgRt722Sn+efT2T9ZxHUcnLBRUWnUN7WrGbYf51 V9g8k+Fk0QJBANu1eWKHTNtFoG9NlqcmkG/ffTtMcnneWZ3QdhjLg6Xgh+z+nhYf +zvWwhguG5D6opdyeQ1Zbk63b009ty43+ckCQQCN6SzBnIm1kLCEFKEEjBIG/sdB TH+BNR8wXTk/rRc0QlR6hQH1xfavO3cDbwM9wUTdzQF1pHhq+Kwnjk8kJtFxAkB4 /HjoeesnwDK1t/si9oiJIn+6vME5POkKj3XI96D6IieXqSpyso/NhtiBKjrB3lLU pRPl9v5YWIjw9vA9glOJAkBgWRDjR5aiCJxMh5mKplxPtoCdiAobyNgQi8Aux6eR wlHwOW7y20hgjcmytj29ZvabZhPKw7FM/QkAJ6+iPAeS -----END RSA PRIVATE KEY----- [root@localhost ~]# openssl genrsa 1024 > f1 #將私鑰重定向到某個文件中 Generating RSA private key, 1024 bit long modulus .................................................................++++++ ......++++++ e is 65537 (0x10001) [root@localhost ~]# cat f1 -----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQDEAFnlfWWmLZs4kCA3nakGAJL5QBNVyzHBkL+MzzBOE7uDyzxU 4WS58uCpQw8pZShZIdR5SaUlwneYfVw37rJgu2M67Q58IamuQvab37DPDJ2XfxW8 eTRH6/tjwqs71tE5/8O8zIUBWNaSIZvS0xkrEmG/DyXPibpF3QvuPZYinwIDAQAB AoGBAJMv7FJRM8dyUjFM0lTRmb9/KN/yhVKVL707dQ1J/e10Fgnn0luvk1Osl5ek Wztr0rv0krmuW02a1vL1mQ4Lu3lkIz+m99D+YCKzZRjCOl1loQi70TMIOX+jRRsq 08kGw8zxvPFjhCn90SO68/9x5+K8m2VD177aZ/ePEu6LNN/hAkEA+8h/YtsdeiK5 RAYf1w3A1urTjV92izRrKwhIEdT+evzRICTg0RjX3MWP4BoDZFw/+Obyq/7jnMro WrXX/bxPcQJBAMdIsWfnVP0cCU+Q9yvMr7dg+Pct5uCfizVZQZcoEAn3gGnYUkqo F885jDlyJrTldPDtQv/qIvFY0vO+4wnNqw8CQQCIBz+DWhwn00DCloh3OE/6DO50 j6HM/Wn02smNEMTYD2SweBwZ+9ELzpS3n3Y7r3dEcwmikNfJ6vnzoBDsXeORAkAX DiPoH21Hsxyopd7SpGWX05I6FodlaU/TpjXeZPYmEQo8NJigpn3KrZ+5balouDsl PG3J6a6NOXd+V5EwqyilAkAfYKS+6OWE3jRV5vu0YFzUt3c0dYqgT2rlCTWAFNjd MJX1YVZi7c3XrxcRhbakzgqW1du/1Z2ySebWKz+lkP4H -----END RSA PRIVATE KEY----- [root@localhost ~]# openssl genrsa -out f1 1024 #利用rsa算法生成1024位私鑰,保存某文件中,注意公鑰的長度,要寫在保存文件之后。 Generating RSA private key, 1024 bit long modulus ..........................++++++ ...................................................++++++ e is 65537 (0x10001) [root@localhost ~]# cat f1 -----BEGIN RSA PRIVATE KEY----- MIICXAIBAAKBgQC6amq8ptKmEhF4JIbN9+RVc8WOaLPMuIbZ+l7kDcKZq1K8W4QX Ur07w0U6zDzGFcykqYhyCn8+eiF/OxqPOnqlibgoPwg9jwtuYJGZN5MvkNmQMniv dyY1ThkAF/hDowbmY4aputAzJ9glduWpGBwp0/xgFIPnP8fGk/nB9P6wfQIDAQAB AoGAPwNDyzs0z1AiOZNXQf4+X6g/qlC4HkZtxvb75mjEU/92excQQnYEY1QxbZum G2s4/pwT9ECaHHtaIVDQPIQO+pwuHyKnBLa8+AkYl04aUAYVDwaBbSBONEsFGVIa xpZH3c1lugBdweBLchhvJyzv9f1R5LUQe2ZDK0FuOaVNFwECQQDcnOmzbmr0g3GG Z/xrYVlQOTSSxkNf7Bw1MJZpkArLv4Dy/9DPHHEsIxsHOk/76m6J519qluaYTxqu fRgTdOU9AkEA2FFA3uUMSE1puHJLihZVCk/wQCKcssdFTtXNwPzwka71y0UW0EVi NN75FJrueGjXzmw0Lk8hdvDwt47RMzIsQQJAH36XLnJ4+mc5ccKumnXPVlCUXM/J FoySilVhY7iYkfXI5uf2W1roHTD1ztZYTNJu7WkGiiT4zo2cdYSOR1jM0QJBAL08 N7fGQDxwHHBS7GpcpwBidhZlMRfk42jX+Ss/G2UW3cd5JUAFsqf194hjEQMdFM1s Mynf57KZjLvHoJNc7QECQFVzZFAL6wUobFUI7WreU3qELC2MbN9uxgYAbzJXX0mx f2awbPIJ4brvilS5u/f61+enDITl6+VPJvXwSjTVJi0= -----END RSA PRIVATE KEY----- [root@localhost ~]# (umask 066;openssl genrsa -out ff 512) Generating RSA private key, 512 bit long modulus .............++++++++++++ #rsa算法生成512私鑰,保存文件中,權限600 .........................................++++++++++++ e is 65537 (0x10001) [root@localhost ~]# ll ff -rw-------. 1 root root 497 Jul 20 01:40 ff [root@localhost ~]# cat ff -----BEGIN RSA PRIVATE KEY----- MIIBPAIBAAJBAOF2ErTafwojYWAo99h73Pk6hKUe8frO+edoVAUpZYaIHvqLeJIY EEdnBkqkatiKMXihwQXtM6WIqDwtfLJjy3kCAwEAAQJBAJbHE7OG+7aX+qMIQtev 3hN+ov6aN1F34YB0MNxS1uakGB16GD+qbUzKxXzWzcvruc1sfAfwAwr+uRXQ+CVy UVECIQD58RKUdjh04rOW0Ao6WmBRl0cl2JXEA83rYwYSjVGk4wIhAObtGGkoK7K3 GwS1Gq0lxLixKfQlHf1jJnIOh2H6BRjzAiAhguwd0bgCG/8+QkiMyF9PsTvN3DtA W845OD6xMBd5RwIhANMDqKC+sl+Wbjv4+a1qq75RNZMBL8xRA9qJaDChdHL9AiEA 0WSA38W0INfBHknOUf+nphr01ismlGSvaSTzfEMdXQQ= -----END RSA PRIVATE KEY----- [root@localhost ~]# openssl rsa -in ff -pubout writing RSA key #手動從文件中提取公鑰 -----BEGIN PUBLIC KEY----- MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAOF2ErTafwojYWAo99h73Pk6hKUe8frO +edoVAUpZYaIHvqLeJIYEEdnBkqkatiKMXihwQXtM6WIqDwtfLJjy3kCAwEAAQ== -----END PUBLIC KEY----- [root@localhost ~]# openssl rsa -in ff -pubout -out ff writing RSA key #私鑰中提取公鑰,提取公鑰保存指定文件中,私鑰一樣,提出的公鑰也一樣。 [root@localhost ~]# cat ff -----BEGIN PUBLIC KEY----- MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAOF2ErTafwojYWAo99h73Pk6hKUe8frO +edoVAUpZYaIHvqLeJIYEEdnBkqkatiKMXihwQXtM6WIqDwtfLJjy3kCAwEAAQ== -----END PUBLIC KEY-----
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/40637.html
摘要:但是,還能夠將其他端口的網絡數據通過鏈接來轉發,并且自動提供了相應的加密及解密服務。而與此同時,如果工作環境中的防火墻限制了一些網絡端口的使用,但是允許的連接,也能夠通過將端口轉發來使用進行通訊端口轉發能夠提供兩大功能加 博文參考 http://www.178linux.com/48542 https://segmentfault.com/a/1190000010279082 利用op...
摘要:但是,還能夠將其他端口的網絡數據通過鏈接來轉發,并且自動提供了相應的加密及解密服務。而與此同時,如果工作環境中的防火墻限制了一些網絡端口的使用,但是允許的連接,也能夠通過將端口轉發來使用進行通訊端口轉發能夠提供兩大功能加 博文參考 http://www.178linux.com/48542 https://segmentfault.com/a/1190000010279082 利用op...
閱讀 2262·2023-04-26 02:14
閱讀 2933·2021-09-30 09:46
閱讀 2106·2021-09-24 09:48
閱讀 967·2021-09-24 09:47
閱讀 3257·2019-08-30 15:44
閱讀 1884·2019-08-30 15:44
閱讀 3287·2019-08-30 14:18
閱讀 1955·2019-08-30 12:58