17、加密解密技术介绍
1、通訊機制:
????同一主機間通訊機制:IPC、message quence,shm(共享內存),semerphone
????不同主機間通訊機制:socket(ip:port),一般來說socket通訊都是成對出現:CIP:PORT<--->SIP:PORT
2、傳輸層協議:
tcp、udp、sctp;傳輸層協議單元為段,用端口區分不同應用 ? ?
port用來標識進程地址;進程向內核注冊使用某端口(獨占的)
3、如何保證安全的信息通訊?
????ssl:secure socket layer:安全套接字層,ssl是一種規范協議
4、信息安全目標:
????保密性:confidentiality;確保通訊的保密性
????完整性:integrity;確保信息的完整性,體現在數據的完整性和系統完整性兩個層面
????有效性(可用性):
5、***類型:
????威脅保密性的***:竊聽、通信量分析
????威脅完整性的***:更改、偽裝、重放、否認
????威脅可用性的***:決絕服務
6、安全實現手段:安全通訊解決方案
????通過技術實現:加密和解密 ? ????
????????傳統加密方法:替代加密、置換加密
????????現代加密方法:現代塊加密技術,將存在硬盤上的數據,分成塊進行加密。 ??
????通過服務實現:用于抵御***的服務,也就是說為了實現上述安全目標而特地設計的安全服務。
????????認證機制
????????訪問控制機制
????????秘鑰算法和協議(專用于密碼交換)
6.1、linux系統實現上述解決方案工具主要有兩個:openssl、GPG
? ?openssl由三部分組成:
????libencrypt庫:實現加密解密的庫
????libssl庫:實現ssl安全通信的庫
????openssl工具:命令行工具,多用途,可以實現前兩者的功能
6.2、密鑰算法和協議:
????對稱加密:主要用來加密數據;DES、3DES、AES
????公鑰加密:主要用來加密對稱加密密鑰;RSA、DSA
????單向加密:主要用來提取數據特征碼;md5、sha1、sha224、sha256、sha384、sha512
????認證協議:主要用來進行密鑰交換
6.2.1、對稱加密: ????加密和解密使用同一個密鑰,但是加密和解密的算法可能不同。 ????對稱加密算法主要有:des(56位加密技術)、3des、aes(advance encryption standard;128bits、192bits、256bits、384bits)、blowfish、twofish、idea、rc6等等;常用的是3des和aes。 ????對稱加密特性: ????????①、加密解密使用同一個密鑰 ????????②、將原始的數據分隔成固定的大小的塊,逐個進行加密 ????對稱加密的缺陷: ????? ? ?①密鑰過多(體現在服務端和眾多客戶端通訊時,需要每個通訊都有一個單獨的密鑰) ????? ? ?②密鑰分發困難 |
6.2.2、公鑰加密: ????密鑰成對出現,有公鑰和私鑰。 ? ? ? ?公鑰:publickey,公開給所有人;公鑰從私鑰中提取產生 ????? 私鑰:secretkey:通過工具創建;使用者自己留存,必須保證其私密性。 ????公鑰加密特性: ????????①、用公鑰加密的數據只能由對應的私鑰進行機密,反之亦然。 ????公鑰加密用途: ????????①、數字簽名:主要在于讓接收方確認發送發的身份。 ????????②、密鑰交換:發送方用對方公鑰加密一個對稱密鑰,發送給對方。 ????????③、數據加密:主要加密對稱密鑰 數字簽名的實現過程: ? 以a用戶和b用戶通訊為例 ????①、a用戶發送數據給b用戶,a需要用到單向算法提取發送數據的特征碼,由于單向算法有雪崩效應,改動很小一部分,特征碼就會發生很大變化 ????②、a用戶用自己的私鑰加密這段特征碼,并將其附加在這段數據的后面(如果用私鑰加密原始數據,消耗內存、cpu) ????③、a用戶生成一個臨時的對稱加密密鑰,并使用這個密鑰加密原始數據和特征碼,生成的新的數據 ????④、a用戶獲取b用戶的公鑰,并用b用戶的公鑰加密a的對稱密碼,將其附在③中新生成數據包的后面,然后將整個數據包發送給b用戶。 ????⑤、b用戶用自己的私鑰去解密a用戶用b的公鑰加密的數據,得到③中的數據和④中的加密后的對稱密鑰并將其解密成明文對稱密鑰。 ????⑥、b用戶用a的對稱密鑰解密③中的數據,得到原始數據和原始數據提取的加密后的特征碼 ????⑦、b用戶用a的公鑰去解密②中的a私鑰加密的特征碼,如果可以解密,a用戶的身份得到驗證。 ????⑧、b用同樣的單向加密算法去計算原始數據的特征碼,如果一樣,完整性得到了驗證,否則說明數據被篡改過。 其中①-④說明了加密的過程,⑤-⑧說明了數字簽名和完整性驗證。但是,此處有個問題,怎么確保對方的公鑰是安全的,就是他們需要發送對方的呢?因此有了第三方公證機構(CA:證書頒發機構) ????公鑰加密常用算法: ????????DSA:只能用于實現數字簽名,不能實現加密解密 ????????RSA:既能實現數字簽名又能實現加密、解密。? ??? ?? |
6.2.3、單向加密:只能實現加密,不能實現解密,用于提取數據指紋 ????單向加密特征: ????????定長輸出、雪崩效應 ????單向加密功能: ????????用于實現完整性 ????單向加密算法: ????????md5:messagedigest,消息摘要,5是版本號,128bits定長輸出 ????????sha1:secure hash algorithm,1是版本號,160bits定長輸出 ????????sha224、sha256、sha384、sha512 ????注意:對于centos6、7來說,密碼加密已從centos5中的md5切換到sha512了。 |
6.2.4、認證協議:和加密算法相關的協議,密鑰交換,IKE(internet key exchange) ????密鑰交換:IKE ????????公鑰加密:密鑰在網上傳輸 ????????DH(diffie-hellman):密鑰不在網上傳輸,更安全些 |
6.3、PKI:pulic keyinfrastructure;公鑰基礎設施
????? 組件如下:
????????簽證機構:CA
????????注冊機構:RA
????????證書吊銷列表:CRL
????????證書存取庫:CB
?
證書:數字證書標準(x.509),它定義了證書的結構以及認證協議標準
? 證書組成部分:
? ? ①版本號
? ? ②序列號
? ? ③簽名算法ID
? ? ④發行者名稱
? ? ⑤有效期限
? ? ⑥主體名稱
? ? ⑦主體公鑰
? ? ⑧發行者的唯一標識
? ? ⑨主體的唯一標識
? ? ⑩拓展信息
? ? 11.發行者的簽名
?其中①-⑤為簽證機構信息,⑥-⑩為個人信息,11為發證機構
7、SSL和TLS協議:
ssl:secure socket layer,安全套接字層在ip層和傳輸層之間銜接,有網警公司開發
????ssl v1.0(已廢棄)、ssl v2.0(已廢棄)、ssl v3.0
tls:transport layer security,傳輸層協議安全,由ITEF研發
????tls v1.0 、tls v1.1 、tls v1.2 、tls v1.3(草案)? ?
tls分層設計:
????最底層:基礎算法原語的實現,aes,rsa,MD5
????向上一層:各種算法的實現
????再向上一層:組合算法實現的半層品
????最頂層:用各種組件拼裝而成的各種成品密碼學協議軟件。
注意:實現ssl協議和tls協議的軟件的有很多,著名的開源軟件有:openssl。
8、openssl組件:
????libcrypto庫:實現加密解密,主要由開發者使用
????libssl庫:實現ssl功能,主要由開發者使用
????openssl:多用途的明林工具
9、ssl會話步驟:
????客戶端向服務端索要并驗證證書
????雙方協商生成“會話密鑰”
????雙方采用“會話密鑰”進行加密通信
? ssl會話流程:ssl handshank,有四個階段
????第一階段:client hello
????????向服務器端發送①、支持的協議版本,比如tls1.2;②、客戶端生成一個隨機數,稍后用戶生成“會話密鑰”,③、支持的加密算法,比如rsa、aes,④、支持的壓縮算法
????第二階段:server hello??
????????①、確認使用的加密通信協議版本,比如tls1.2
????????②、服務器端生成一個隨機數,稍后用于生成“會話密鑰”
????????③、確認使用的加密算法
????????④、服務端發送自己的證書
????????⑤、索要客戶端證書(可省)
????第三階段:client端收到serverhello后的回應
????????①、驗證服務器證書,(證書發放機構、證書完整性、證書持有者、證書有效性、吊銷列表等)
????????②、確認以上信息無誤后,取出其公鑰
????????③、發送以下信息給服務器端:
????????????一個隨機數:用于服務器上的公鑰加密
????????????編碼變更通知:表示隨后信息都將用雙方協定的加密算法加密后發送
????????????客戶端握手結束通知
????
????第四階段:服務端收到客戶端發送來的信息
????????①、收到客戶端發送來的第二個隨機數,pre-master-key后,計算生成本次會話所用到的“會話密鑰”
????????②、向客戶端發送以下信息:
????????????編碼變更通知:表示隨后的信息都將用雙方協定的加密方法和密鑰發送
????????????服務端握手結束通知
? ? ? ?
10、openssl命令:
? 命令格式:openssl command [ command_opts ] [ command_args ]
????openssl命令有如下三類:
????????標準命令
????????消息摘要命令
????????加密命令
[root@localhost httpd]# openssl ? openssl:Error: '?' is an invalid command. Standard commands asn1parse ? ? ? ? ca ? ? ? ? ? ? ? ?ciphers ? ? ? ? ? cms ? ? ? ? ? ? ?? crl ? ? ? ? ? ? ? crl2pkcs7 ? ? ? ? dgst ? ? ? ? ? ? ?dh ? ? ? ? ? ? ? ? dhparam ? ? ? ? ? dsa ? ? ? ? ? ? ? dsaparam ? ? ? ? ?ec ? ? ? ? ? ? ? ? ecparam ? ? ? ? ? enc ? ? ? ? ? ? ? engine ? ? ? ? ? ?errstr ? ? ? ? ? ? gendh ? ? ? ? ? ? gendsa ? ? ? ? ? ?genpkey ? ? ? ? ? genrsa ? ? ? ? ? ? nseq ? ? ? ? ? ? ?ocsp ? ? ? ? ? ? ?passwd ? ? ? ? ? ?pkcs12 ? ? ? ? ? ? pkcs7 ? ? ? ? ? ? pkcs8 ? ? ? ? ? ? pkey ? ? ? ? ? ? ?pkeyparam ? ? ? ?? pkeyutl ? ? ? ? ? prime ? ? ? ? ? ? rand ? ? ? ? ? ? ?req ? ? ? ? ? ? ?? rsa ? ? ? ? ? ? ? rsautl ? ? ? ? ? ?s_client ? ? ? ? ?s_server ? ? ? ? ? s_time ? ? ? ? ? ?sess_id ? ? ? ? ? smime ? ? ? ? ? ? speed ? ? ? ? ? ?? spkac ? ? ? ? ? ? ts ? ? ? ? ? ? ? ?verify ? ? ? ? ? ?version ? ? ? ? ?? x509 ? ? ? ? ? ? ? Message Digest commands (see the `dgst' command for more details) md2 ? ? ? ? ? ? ? md4 ? ? ? ? ? ? ? md5 ? ? ? ? ? ? ? rmd160 ? ? ? ? ? ? sha ? ? ? ? ? ? ? sha1 ? ? ? ? ? ? ? Cipher commands (see the `enc' command for more details) aes-128-cbc ? ? ? aes-128-ecb ? ? ? aes-192-cbc ? ? ? aes-192-ecb ? ? ?? aes-256-cbc ? ? ? aes-256-ecb ? ? ? base64 ? ? ? ? ? ?bf ? ? ? ? ? ? ? ? bf-cbc ? ? ? ? ? ?bf-cfb ? ? ? ? ? ?bf-ecb ? ? ? ? ? ?bf-ofb ? ? ? ? ? ? camellia-128-cbc ?camellia-128-ecb ?camellia-192-cbc ?camellia-192-ecb ? camellia-256-cbc ?camellia-256-ecb ?cast ? ? ? ? ? ? ?cast-cbc ? ? ? ? ? cast5-cbc ? ? ? ? cast5-cfb ? ? ? ? cast5-ecb ? ? ? ? cast5-ofb ? ? ? ?? des ? ? ? ? ? ? ? des-cbc ? ? ? ? ? des-cfb ? ? ? ? ? des-ecb ? ? ? ? ?? des-ede ? ? ? ? ? des-ede-cbc ? ? ? des-ede-cfb ? ? ? des-ede-ofb ? ? ?? des-ede3 ? ? ? ? ?des-ede3-cbc ? ? ?des-ede3-cfb ? ? ?des-ede3-ofb ? ? ? des-ofb ? ? ? ? ? des3 ? ? ? ? ? ? ?desx ? ? ? ? ? ? ?idea ? ? ? ? ? ? ? idea-cbc ? ? ? ? ?idea-cfb ? ? ? ? ?idea-ecb ? ? ? ? ?idea-ofb ? ? ? ? ? rc2 ? ? ? ? ? ? ? rc2-40-cbc ? ? ? ?rc2-64-cbc ? ? ? ?rc2-cbc ? ? ? ? ?? rc2-cfb ? ? ? ? ? rc2-ecb ? ? ? ? ? rc2-ofb ? ? ? ? ? rc4 ? ? ? ? ? ? ?? rc4-40 ? ? ? ? ? ?seed ? ? ? ? ? ? ?seed-cbc ? ? ? ? ?seed-cfb ? ? ? ? ? seed-ecb ? ? ? ? ?seed-ofb ? ? ? ? ?zlib ? ? ? ? ? ? ? [root@localhost httpd]#? |
10.1、openssl實現對稱加密:
?openssl enc -ciphername [-in filename] [-out filename] [-pass arg] [-e] [-d] [-a/-base64] [-A] [-k password] [-kfile filename] [-K key] [-iv IV] [-S salt] [-salt] [-nosalt] ? ? ? ? ?[-z] [-md] [-p] [-P] [-bufsize number] [-nopad] [-debug] [-none] [-engine id] ? ?
????工具:openssl enc
????支持算法:3des、aes、blowfish、towfish
????加密示例:
? ? ? ? [root@localhost sh]# openssl enc -e -des3 -a -salt -in /etc/fstab -out /tmp/fstab.cipertext ? //-in:要加密的文件,-out:加密后的文件,-e:加密
????解密示例:
???? ? [root@localhost sh]# openssl enc -d -des3 -a -salt -in /tmp/fstab.cipertext -out /tmp/fstab.plain ?//-d:解密
10.2、openssl實現單向加密:
?openssl dgst [-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1] [-c] [-d] [-hex] [-binary] [-out filename] [-sign filename] [-keyform arg] [-passin arg] [-verify filename] ????? ??[-prverify filename] [-signature filename] [-hmac key] [file...]
???????
????? ??[md5|md4|md2|sha1|sha|mdc2|ripemd160] [-c] [-d] [file...]
????
????工具:openssl dgst
????支持的算法:md5sum、sha1sum、sha224sum、...
????加密示例:
? ? ??[root@localhost sh]# openssl dgst -md5 ? /etc/fstab
? ? ??MD5(/etc/fstab)= ec11d9db3a8d8a8dabfe0d98af76ac46
? ? ??[root@localhost sh]# md5sum /etc/fstab?
? ? ??ec11d9db3a8d8a8dabfe0d98af76ac46 ?/etc/fstab
? ? ??[root@localhost sh]#?
????生成用戶密碼工具:passwd、openssl passwd
????????[root@localhost sh]# man sslpasswd????
????????openssl passwd [-crypt] [-1] [-apr1] [-salt string] [-in file] [-stdin] [-noverify] [-quiet] [-table] {password} ? //salt:隨機數
?????示例:
????????[root@localhost sh]# openssl passwd ?-1 -salt 12345678 ? //-1:表示md5加密,salt表示隨機數
????????Password: ? ?
????????$1$12345678$KShFLCowWE89oV0dKisl2/
????????[root@localhost sh]#?
????????[root@localhost sh]# openssl passwd -1 -salt $(openssl rand -hex 5)
????????Password:?
????????$1$cccd731d$6j3DLRtJZqurDiprU/7oz0
????????[root@localhost sh]#?
????生成隨機數:工具openssl rand
???? 查看rand在哪些章節有幫助文檔
????????[root@localhost sh]# whatis rand
????????rand (3) ? ? ? ? ? ? - pseudo-random number generator
????????sslrand (1ssl) ? ? ? - generate pseudo-random bytes
????????rand (3p) ? ? ? ? ? ?- pseudo-random number generator
????????[root@localhost sh]#?
????rand命令用法:openssl rand [-out file] [-rand file(s)] [-base64] [-hex] num ? //base64表示:用ASCII碼表示輸出的文件(A-Z),-hex表示僅以16進制(1-F)表示數據
????示例:
????????[root@localhost sh]# openssl rand ?-base64 16
????????QbOTMmR3cpp5+Y2eKIoN3g==
????????[root@localhost sh]#?
????????[root@localhost sh]# openssl rand ?-hex 16
????????f41d01d6774f77029dd8ea46ca3214e8
????????[root@localhost sh]#?
10.3、openssl實現公鑰加密:
????公鑰加密的三種功能:
????????加密、解密:(算法:rsa;工具:openssl rsautl)
????????數字簽名:(算法:rsa、dsa,工具:rsautl)
????????密鑰交換:(算法:D-H)
? ? ? ?
????生成密鑰步驟:注意:生成密鑰對于公鑰加密來說,公鑰不是生成的,是從私鑰中提取出來的 。
? ? ?①、生成私鑰:
????????[root@localhost sh]# (umask 077;openssl genrsa -out /a.key 50) ?//命令放在括號中運行,表示在當前shell的子shell中運行,運行完則退出,避免對當前shell的影響;-out指出生成的密鑰存儲的位置,50:表示聲場密鑰的位長。
????????Generating RSA private key, 50 bit long modulus
????????.+++++++++++++++++++++++++++
????????.+++++++++++++++++++++++++++
????????e is 65537 (0x10001)
????????[root@localhost sh]# cat /a.key?
????????-----BEGIN RSA PRIVATE KEY-----
????????MDcCAQACBwNeIm8b7bkCAwEAAQIHAPfq8fZg4QIEAdutBQIEAc/8JQIEANpH6QID
????????P5cZAgQAtovS
????????-----END RSA PRIVATE KEY-----
????????[root@localhost sh]#?
????②、生成公鑰:從私鑰中提取。
????????[root@localhost sh]# openssl rsa -in /a.key -pubout ? ? //-in:指定從哪個文件提取公鑰,-pubout:提取并展示出
????????writing RSA key
????????-----BEGIN PUBLIC KEY-----
????????MCIwDQYJKoZIhvcNAQEBBQADEQAwDgIHA14ibxvtuQIDAQAB
????????-----END PUBLIC KEY-----
????????[root@localhost sh]#?
????------------------------------------------------------------------------------------------------------????
? ? ?linux系統上隨機數生成器:
????????/dev/random:僅從熵池中返回隨機數,隨機數用盡,進程阻塞
????????/dev/urandom:從熵池中返回隨機數,隨機數用盡,會利用軟件生成偽隨機數,不阻塞進程。但是這中不安全。
????
????????熵池中隨機數來源:
????????????①、硬盤I/0中斷時間間隔
????????????②、鍵盤I/O中斷時間間隔 ? ? ?
? ?
10.4、CA創建
????CA有兩種類型:公共信任CA、私有CA。
????
????建立私有CA的方法:openssl命令、openca命令
????
????CA的配置文件:[root@localhost sh]# cat /etc/pki/tls/openssl.cnf?
? ??
?構建私有CA步驟:
????①、在確定配置為CA的服務器上生成一個自簽證書 ②、并為CA提供所需要的目錄及文件即可
?私有CA配置示例:
? ?①、生成密鑰放在/etc/pki/CA/private/目錄下?,文件名必須為/etc/pki/tls/openssl.cnf中配置的名稱。???????
????[root@localhost CA]# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 40)
????[root@localhost CA]# ls /etc/pki/CA/private/ -l ? //確保生成的密鑰文件的權限為600
????total 4
????-rw-------. 1 root root 132 Feb ?3 10:21 cakey.pem
????[root@localhost CA]#?
??
?
? ?②、生成自簽證書(發送申請證書申請):按配置文件要求配置(certificate = /etc/pki/CA/cacert.pem )
? ? ? ? req:證書請求及證書生成工具。
? ?[root@localhost private]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 365
? ??Country Name (2 letter code) [XX]:cn
? ??State or Province Name (full name) []:beijing
? ??Locality Name (eg, city) [Default City]:beijing
? ??Organization Name (eg, company) [Default Company Ltd]:magedu
? ??Organizational Unit Name (eg, section) []:ops
? ??Common Name (eg, your name or your server's hostname) []:www2.stux.com ?//此處要寫成客戶端訪問的服務的主機信息,
? ??Email Address []:
? ? 命令解釋:
? ? ? ? -new:生成新證書簽署請求
? ? ? ? -x509:生成自簽格式證書,專用于創建私有CA時,此處如果不自簽,不需要加此項,但是自簽,必須要寫此項
? ? ? ? -key:生成請求時用到的私鑰文件路徑
? ? ? ? -out:生成的請求文件路徑;如果自簽操作將直接生成簽署過的證書
? ? ? ? -days:證書的有效時長,單位是days。
? ? ③、為ca提供所需要的目錄(certs 、crl、 newcerts)和文件(serial、index.txt),如果這幾個個文件不存在 則需要手工創建
? ??[root@localhost CA]# mkdir -pv?/etc/pki/CA/{certs,crl,newcerts}
? ??[root@localhost CA]# touch ?/etc/pki/CA/{serial,index.txt} ? ?//serial:證書序列號,index.txt:證書數據庫? ?
? ??[root@localhost CA]#?echo 01 >?/etc/pki/CA/serial ? //寫入一個證書序列號。
?至此,私有ca創建完成。
要用到證書進行安全通信的服務器,需要向CA請求簽署證書,比如https服務器,步驟如下:
? ? ①、用到證書的服務器主機生成私鑰(以https主機為例)
? ??[root@localhost CA]# mkdir /etc/httpd/ssl?
? ??[root@localhost CA]# cd /etc/httpd/ssl
? ??[root@localhost ssl]# (umask 077;openssl genrsa -out httpd.key 2048)
? ? ②、用到證書的服務器主機生成證書簽署請求:(因為不是自簽,所以不用加-x509)
? ? [root@localhost ssl]# openssl req -new -key httpd.key -out httpd.csr -days 365?
? ? ③、將請求通過可靠方式發送給ca主機,在CA主機上進行簽署。由于是在同一臺主機上,因此,直接簽署。
? ??[root@localhost ssl]# openssl ca -in httpd.csr -out /etc/pki/CA/httpd.crt -days 365
? ??Using configuration from /etc/pki/tls/openssl.cnf
? ??Check that the request matches the signature
? ??Signature ok
? ??Certificate Details:
? ? ? ? ? ??Serial Number: 1 (0x1)
? ? ? ? ? ??Validity
? ? ? ? ?? ?? ? Not Before: Feb 7 23:22:12 2018 GMT
? ? ? ? ? ? ??? Not After : Feb 7 23:22:12 2019 GMT
? ? ? ?? ?? Subject:
? ? ? ? ? ?? ?? countryName = cn
? ? ? ? ? ?? ?? stateOrProvinceName = beijing
? ? ? ? ? ?? ?? organizationName = magedu
? ? ? ? ? ?? ?? organizationalUnitName = ops
? ? ? ? ? ?? ?? commonName = www.magedu.com
? ? ? ? ? ??X509v3 extensions:
? ? ? ? ? ? ? ??X509v3 Basic Constraints:
? ? ? ? ? ? ? ? ? ??CA:FALSE
? ? ? ? ? ? ? ??Netscape Comment:
? ? ? ? ? ? ? ? ? ??OpenSSL Generated Certificate
? ? ? ? ? ? ? ??X509v3 Subject Key Identifier:
? ? ? ? ? ? ? ? ? ??93:33:80:F7:C5:12:6E:2A:22:92:E4:0C:70:56:00:D5:C4:76:6E:70
? ? ? ? ? ?? ?? X509v3 Authority Key Identifier:
? ? ? ? ? ? ? ? ? ??keyid:77:55:41:C6:1D:5E:77:43:F8:9E:C0:2E:67:75:87:F4:2F:FE:0E:CC
? ??Certificate is to be certified until Feb 7 23:22:12 2019 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@localhost ssl]#
? ? ④、查看證書信息:(可以在ca和客戶機上查看,只要有ca的主機都可以查看)
? ??[root@localhost ssl]# cat /etc/pki/CA/index.txt
? ??V 190207232212Z 01 unknown /C=cn/ST=beijing/O=magedu/OU=ops/CN=www.magedu.com
? ??[root@localhost ssl]#
? 或 [root@localhost CA]# openssl x509 -in httpd.crt -noout -serial -subject
? ??serial=01
? ??subject= /C=cn/ST=beijing/O=magedu/OU=ops/CN=www.magedu.com
? ??[root@localhost CA]#
? ? ⑤、將CA簽署過的證書發送給請求的服務器。由于是本機簽署,所以不發送,拷貝簽署的證書到指定位置。注意:此時的httpd.csr(請求簽署文件)可以刪除了
? ??[root@localhost CA]# cp /etc/pki/CA/httpd.crt ?/etc/httpd/ssl/? ??
?? ?
10.5、吊銷證書:一般私有ca搭建,不用吊銷,如果要吊銷,一般會用openca工具實現。
? ? ①、客戶端獲取要吊銷證書的serial(序列號),(在使用證書的主機上執行)
? ??[root@localhost ssl]# openssl x509 -in /etc/httpd/ssl/httpd.crt -noout -serial -subject
? ??serial=01
? ??subject= /C=cn/ST=beijing/O=magedu/OU=ops/CN=www.magedu.com
? ??[root@localhost ssl]#
? ? ②、CA端主機吊銷證書
? ? 先根據客戶提交的serial和subject信息,對比與本機數據庫index.txt中存儲的是否一致。
? ? [root@localhost ssl]# openssl ca -revoke /etc/pki/CA/newcerts/01.pem
? ??Using configuration from /etc/pki/tls/openssl.cnf
? ??Revoking Certificate 01.
? ??Data Base Updated
? ??[root@localhost ssl]#
? ? ③、生成吊銷證書編號(第一次吊銷證書時執行)
? ? [root@localhost ssl]# echo 01 > /etc/pki/CA/crlnumber
? ? ④、更新證書吊銷列表
? ??[root@localhost CA]# openssl ca -gencrl -out thisca.crl
? ? ⑤、查看crl文件:
? ? #openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text
? ?
轉載于:https://blog.51cto.com/10631377/2066212
總結
以上是生活随笔為你收集整理的17、加密解密技术介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 奥数之“牛吃草问题”C++实现
- 下一篇: 深入理解JVM-垃圾回收器