這篇文章主要介紹互聯(lián)網(wǎng)中安全和加密的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
創(chuàng)新互聯(lián)自2013年創(chuàng)立以來(lái),先為上虞等服務(wù)建站,上虞等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為上虞企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
信息安全防護(hù)的目標(biāo) 保密性 Confidentiality 完整性 Integrity 可用性 Usability 可控制性 Controlability 不可否認(rèn)性 Non-repudiation 安全防護(hù)環(huán)節(jié) 物理安全:各種設(shè)備/主機(jī)、機(jī)房環(huán)境 系統(tǒng)安全:主機(jī)或設(shè)備的操作系統(tǒng) 應(yīng)用安全:各種網(wǎng)絡(luò)服務(wù)、應(yīng)用程序 網(wǎng)絡(luò)安全:對(duì)網(wǎng)絡(luò)訪問(wèn)的控制、防火墻規(guī)則 數(shù)據(jù)安全:信息的備份與恢復(fù)、加密解密 管理安全:各種保障性的規(guī)范、流程、方法
安全: STRIDE Spoofing 假冒 發(fā)郵件冒充 telnet 127.0.0.1 25 25端口為郵件工作端口,連接的軟件為Postfix,監(jiān)聽(tīng)ESMTP,對(duì)應(yīng)25端口 helo magedu.com mail from(以誰(shuí)的身份發(fā)送):mayun@alibaba.com rcpt to(發(fā)送給誰(shuí)):wang data(內(nèi)容) 以.結(jié)束 dig命令可以做名字解析 -t 可以查到郵件服務(wù)器的地址,郵件地址的類型為mx 例: dig -t mx 163.com telnet 163mx00.mxmail.netease.com 25 即可連通網(wǎng)易郵箱 Tampering 篡改 Repudiation 否認(rèn) Information Disclosure 信息泄漏 (密碼泄露) Denial of Service 拒絕服務(wù) Elevation of Privilege 提升權(quán)限
使用成熟的安全系統(tǒng) 以小人之心度輸入數(shù)據(jù) 外部系統(tǒng)是不安全的 最小授權(quán) 減少外部接口 缺省使用安全模式 安全不是似是而非 從STRIDE思考 在入口處檢查 從管理上保護(hù)好你的系統(tǒng)
常用安全技術(shù) 認(rèn)證 授權(quán) 審計(jì) 安全通信 加密算法和協(xié)議 對(duì)稱加密 公鑰加密 單向加密 認(rèn)證協(xié)議
對(duì)稱加密:加密和解密使用同一個(gè)密鑰 key1==key2 data明文 --->加密(key1)--->data'密文--->(key2)--->data DES:Data Encryption Standard,56bits (密鑰長(zhǎng)度56位,7個(gè)字節(jié),逐漸淘汰,不太.安全) 3DES:將DES加密三次 AES:Advanced (128, 192, 256bits) Blowfish,Twofish 商用 IDEA,RC6,CAST5 特性: 1、加密、解密使用同一個(gè)密鑰,效率高 2、將原始數(shù)據(jù)分割成固定大小的塊,逐個(gè)進(jìn)行加密 缺陷: 1、密鑰過(guò)多 2、密鑰分發(fā) 3、數(shù)據(jù)來(lái)源無(wú)法確認(rèn)
key1 != key2 公鑰加密:密鑰是成對(duì)出現(xiàn) 公鑰:公開(kāi)給所有人;public key 私鑰:自己留存,必須保證其私密性;secret key 特點(diǎn):用公鑰加密數(shù)據(jù),只能使用與之配對(duì)的私鑰解密;反之亦然 功能: 數(shù)字簽名:主要在于讓接收方確認(rèn)發(fā)送方身份 對(duì)稱密鑰交換:發(fā)送方用對(duì)方的公鑰加密一個(gè)對(duì)稱密鑰后發(fā)送給對(duì)方 數(shù)據(jù)加密:適合加密較小數(shù)據(jù) 缺點(diǎn):密鑰長(zhǎng),加密解密效率低下 算法: RSA(加密,數(shù)字簽名) DSA(數(shù)字簽名) ELGamal
public key 公鑰:公開(kāi) secret(private) key 私鑰:私有 基于一對(duì)公鑰/密鑰對(duì) ?用密鑰對(duì)中的一個(gè)加密,另一個(gè)解密 實(shí)現(xiàn)加密: ?接收者 生成公鑰/密鑰對(duì):P和S 公開(kāi)公鑰P,保密密鑰S ?發(fā)送者 使用接收者的公鑰來(lái)加密消息M 將P(M)發(fā)送給接收者 ?接收者 使用密鑰S來(lái)解密:M=S(P(M)) alice(Pa,Sa)--->bob(Pb,Sb) 公鑰和私鑰成對(duì)使用,alice的公鑰私鑰成對(duì)使用,bob的公鑰私鑰成對(duì)使用 一個(gè)數(shù)據(jù)用對(duì)應(yīng)的公鑰加密,就必須用對(duì)應(yīng)的成對(duì)的私鑰解密 反過(guò)來(lái),如果用對(duì)應(yīng)的私鑰加密,就必須用成對(duì)的公鑰解密 理解:如果用alice的公鑰(Pa)加密,就必須用alice的私鑰(Sa)解密 如果用alice的私鑰(Sa)加密,就必須用alice的公鑰(Pa)解密
實(shí)現(xiàn)數(shù)字簽名: 私鑰加密 = 數(shù)字簽名(確認(rèn)數(shù)據(jù)來(lái)源) ?發(fā)送者 生成公鑰/密鑰對(duì):P和S 公開(kāi)公鑰P,保密密鑰S 使用密鑰S來(lái)加密消息M 發(fā)送給接收者S(M) ?接收者 使用發(fā)送者的公鑰來(lái)解密M=P(S(M)) 結(jié)合簽名和加密 分離簽名
rpm -K /misc/cd/Packages/tree-1.6.0-10.e17.x86.64.rpm 檢查數(shù)據(jù)來(lái)源是否安全 每個(gè)公司發(fā)布包的時(shí)候都有數(shù)字簽名,進(jìn)行了私鑰加密, 如果想要確定包的數(shù)據(jù)來(lái)源,就必須使用公鑰,進(jìn)行解密 驗(yàn)證包是由哪家公司發(fā)布的,系統(tǒng)默認(rèn)沒(méi)有公鑰,需要導(dǎo)入 rpm --import /misc/cd/RPM-GPG-KEY-CentOS-7 導(dǎo)入公鑰 獲得公鑰以后即可驗(yàn)證包的數(shù)字簽名 /etc/yum.repos.d/base.repo yum源配置文件中 gpgcheck=1 安裝某個(gè)包的時(shí)候要驗(yàn)證包的數(shù)子簽名,=0則不檢查 將密鑰的路徑寫進(jìn)配置文件,第一次安裝包的時(shí)候,會(huì)導(dǎo)入密鑰 導(dǎo)入公鑰的兩種方式: 1. rpm --import 導(dǎo)入公鑰 2.在yum源配置文件中,添加gpgkey路徑
RSA:公鑰加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美國(guó)麻省理工學(xué)院)開(kāi)發(fā)的, RSA取名來(lái)自開(kāi)發(fā)他們?nèi)叩拿郑蟪闪SA數(shù)據(jù)安全有限公司。 RSA是目前最有影響力的公鑰加密算法,它能夠抵抗到目前為止已知的所有密碼***,已被ISO推薦為公鑰數(shù)據(jù)加密標(biāo)準(zhǔn)。 RSA算法基于一個(gè)十分簡(jiǎn)單的數(shù)論事實(shí):將兩個(gè)大素?cái)?shù)相乘十分容易,但那時(shí)想要對(duì)其乘積進(jìn)行因式分解卻極其困難, 因此可以將乘積公開(kāi)作為加密密鑰 DSA (Digital Signature Algorithm):1991年7月26日提交,并歸屬于David W. Kravitz前NSA員工, DSA是Schnorr和ElGamal簽名算法的變種,被美國(guó)NIST作為SS(DigitalSignature Standard), DSA是基于整數(shù)有限域離散對(duì)數(shù)難題的,其安全性與RSA相比差不多。 DSA只是一種算法,和RSA不同之處在于它不能用作加密和解密,也不能進(jìn)行密鑰交換,只用于簽名,它比RSA要快很多 DSA只能實(shí)現(xiàn)數(shù)字簽名,無(wú)法實(shí)現(xiàn)數(shù)據(jù)加密
將任意數(shù)據(jù)縮小成固定大小的“指紋” ?任意長(zhǎng)度輸入 ?固定長(zhǎng)度輸出 ?若修改數(shù)據(jù),指紋也會(huì)改變(“不會(huì)產(chǎn)生沖突”) ?無(wú)法從指紋中重新生成數(shù)據(jù)(“單向”) 功能:數(shù)據(jù)完整性 常見(jiàn)算法 md5: 128bits、sha1: 160bits、sha224 、sha256、sha384、sha512 常用工具 ?md5sum | sha1sum [ --check ] file md5sum fstab > fstab.md5 md5sum -checkfstab.md5 檢測(cè)md5值 ?openssl、gpg ?rpm -V 檢測(cè)包是否發(fā)生修改
hash(data) => digest 摘要 hash算法得到的摘要,不可逆推回?cái)?shù)據(jù),單向的 數(shù)據(jù)如果不變,通過(guò)hash得到的摘要digest也是固定的 如果數(shù)據(jù)發(fā)生改變,得到的摘要?jiǎng)t會(huì)發(fā)生改變 結(jié)論: 數(shù)據(jù)不同,摘要必不同 摘要相同,摘要必相同 固定的hash算法,得到的摘要也是固定大小(長(zhǎng)度) md5 128bit 數(shù)據(jù)不同128bit的值不同 hash算法 經(jīng)常用來(lái)做數(shù)據(jù)完整性的檢查,檢查數(shù)據(jù)是否被更改
原文件利用hash運(yùn)算(md5)得到128bit的數(shù)字摘要(hash值) 使用Sa加密得到的hash值,形成數(shù)字簽名,將原文附加在后面,得到完整的新的文件 使用Pb加密生成的新文件,得到密文,發(fā)送給對(duì)方 確保無(wú)法被第三方截獲,并確認(rèn)數(shù)據(jù)來(lái)源 使用Sb解密收到的密文,得到數(shù)字簽名和原文件 對(duì)原文件做hash運(yùn)算(md5),得到128bit的數(shù)字摘要 使用Pa解密數(shù)字簽名,得到發(fā)送來(lái)的數(shù)字摘要 對(duì)比兩個(gè)數(shù)字摘要是否一致 一致,則原文沒(méi)有被篡改 即實(shí)現(xiàn)的數(shù)據(jù)的安全傳輸,又實(shí)現(xiàn)了數(shù)據(jù)來(lái)源的確認(rèn)
key{data +Sa[hash(data)]}+Pb(key) ==> 將數(shù)據(jù)做hash運(yùn)算,得到數(shù)字摘要(digest) # 單向散列hash算法 使用a的私鑰將數(shù)字摘要(digest)做數(shù)字簽名 # 非對(duì)稱加密算法 使用對(duì)稱加密將原文數(shù)據(jù)和數(shù)字簽名進(jìn)行加密 # 對(duì)稱加密算法 將對(duì)稱密鑰,使用b的公鑰進(jìn)行加密 對(duì)方可以使用Sb解開(kāi)對(duì)稱密鑰,得到對(duì)稱密鑰中的數(shù)據(jù)
文件完整性的兩種實(shí)施方式 被安裝的文件 ?MD5單向散列 ?rpm --verify package_name (or -V) 發(fā)行的軟件包文件 ?GPG公鑰簽名 ?rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat* ?rpm --checksig pakage_file_name (or -K)
密鑰交換:IKE( Internet Key Exchange ) 公鑰加密: DH (Deffie-Hellman):生成會(huì)話密鑰,由惠特菲爾德·迪菲(Bailey Whitfield Diffie)和馬丁·赫爾曼(Martin Edward Hellman)在1976年發(fā)表 參看:https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange DH: 1>A: g,p 協(xié)商生成公開(kāi)的整數(shù)g, 大素?cái)?shù)p B: g,p 2>A:生成隱私數(shù)據(jù) :a (aA:計(jì)算得出 [(g^b%p)^a] %p = g^ab%p,生成為密鑰 B:計(jì)算得出 [(g^a%p)^b] %p = g^ab%p,生成為密鑰
對(duì)稱加密file文件 gpg -c file 對(duì)文件進(jìn)行加密 ls file.gpg 生成加密文件 在另一臺(tái)主機(jī)上解密file gpg -o file -d file.gpg
在hostB主機(jī)上用公鑰加密,在hostA主機(jī)上解密 在hostA主機(jī)上生成公鑰/私鑰對(duì) gpg --gen-key 在hostA主機(jī)上查看公鑰 gpg --list-keys 在hostA主機(jī)上導(dǎo)出公鑰到wang.pubkey gpg -a --export -o wang.pubkey 從hostA主機(jī)上復(fù)制公鑰文件到需加密的B主機(jī)上 scp wang.pubkey hostB:
在需加密數(shù)據(jù)的hostB主機(jī)上生成公鑰/私鑰對(duì) gpg --list-keys gpg --gen-key 在hostB主機(jī)上導(dǎo)入公鑰 gpg --import wang.pubkey gpg --list-keys 用從hostA主機(jī)導(dǎo)入的公鑰,加密hostB主機(jī)的文件file,生成file.gpg gpg -e -r wangxiaochun file file file.gpg
復(fù)制加密文件到hostA主機(jī) scp fstab.gpg hostA: 在hostA主機(jī)解密文件 gpg -d file.gpg gpg -o file -d file.gpg 刪除公鑰和私鑰 gpg --delete-keys wangxiaochun gpg --delete-secret-keys wangxiaochun
PKI:Public Key Infrastructure 簽證機(jī)構(gòu):CA(Certificate Authority) 注冊(cè)機(jī)構(gòu):RAc 中間人,他會(huì)幫你把申請(qǐng)的證書(shū)提交給真正的CA 證書(shū)吊銷列表:CRL 證書(shū)存取庫(kù): X.509:定義了證書(shū)的結(jié)構(gòu)以及認(rèn)證協(xié)議標(biāo)準(zhǔn) 版本號(hào) 主體公鑰 序列號(hào) CRL分發(fā)點(diǎn) 簽名算法 擴(kuò)展信息 頒發(fā)者 發(fā)行者簽名 有效期限 主體名稱
證書(shū)類型: 證書(shū)授權(quán)機(jī)構(gòu)的證書(shū) 服務(wù)器 用戶證書(shū) 獲取證書(shū)兩種方法: ?使用證書(shū)授權(quán)機(jī)構(gòu) 生成證書(shū)請(qǐng)求(csr) 將證書(shū)請(qǐng)求csr發(fā)送給CA CA簽名頒發(fā)證書(shū) ?自簽名的證書(shū) 自已簽發(fā)自己的公鑰
A將公鑰Pa發(fā)送給CA,CA驗(yàn)證身份,成功會(huì)用自己的私鑰簽名公鑰Sca(Pa) 并追加信息:CA的信息,A的信息和有限期 得到證書(shū),將證書(shū)發(fā)送給A,A從而有了證書(shū) A和B事先已經(jīng)拿到了CA的公鑰
所有的機(jī)器都必須有rootCA的公鑰,rootCA進(jìn)行自簽名Srootca(Prootca)+Prootca,自己證明自己
SSL:Secure Socket Layer,TLS: Transport Layer Security 1995:SSL 2.0 Netscape 1996:SSL 3.0 1999:TLS 1.0 國(guó)際規(guī)范 2006:TLS 1.1 IETF(Internet工程任務(wù)組) RFC 4346 2008:TLS 1.2 當(dāng)前使用 2015:TLS 1.3 功能:機(jī)密性,認(rèn)證,完整性,重放保護(hù) 兩階段協(xié)議,分為握手階段和應(yīng)用階段 握手階段(協(xié)商階段):客戶端和服務(wù)器端認(rèn)證對(duì)方身份(依賴于PKI體系,利用數(shù)字證書(shū)進(jìn)行身份認(rèn)證),并協(xié)商通信中使用的安全參數(shù)、密碼套件以及主密鑰。后續(xù)通信使用的所有密鑰都是通過(guò)MasterSecret生成 應(yīng)用階段:在握手階段完成后進(jìn)入,在應(yīng)用階段通信雙方使用握手階段協(xié)商好的密鑰進(jìn)行安全通信
SSL/TLS工作在應(yīng)用層和傳輸層中間,把應(yīng)中層數(shù)據(jù)加密,到達(dá)傳輸層的時(shí)候已經(jīng)被加密了
Handshake協(xié)議:包括協(xié)商安全參數(shù)和密碼套件、服務(wù)器身份認(rèn)證(客戶端身份認(rèn)證可選)、密鑰交換 ChangeCipherSpec 協(xié)議:一條消息表明握手協(xié)議已經(jīng)完成 Alert 協(xié)議:對(duì)握手協(xié)議中一些異常的錯(cuò)誤提醒,分為fatal和warning兩個(gè)級(jí)別,fatal類型錯(cuò)誤會(huì)直接中斷SSL鏈接,而warning級(jí)別的錯(cuò)誤SSL鏈接仍可繼續(xù),只是會(huì)給出錯(cuò)誤警告 Record 協(xié)議:包括對(duì)消息的分段、壓縮、消息認(rèn)證和完整性保護(hù)、加密等 HTTPS 協(xié)議:就是“HTTP 協(xié)議”和“SSL/TLS 協(xié)議”的組合。HTTP over SSL”或“HTTP over TLS”,對(duì)http協(xié)議的文本數(shù)據(jù)進(jìn)行加密處理后,成為二進(jìn)制形式傳輸
OpenSSL:開(kāi)源項(xiàng)目 三個(gè)組件: openssl:多用途的命令行工具,包openssl libcrypto:加密算法庫(kù),包openssl-libs libssl:加密模塊應(yīng)用庫(kù),實(shí)現(xiàn)了ssl及tls,包nss openssl命令: 兩種運(yùn)行模式:交互模式和批處理模式 openssl version:程序版本號(hào) 標(biāo)準(zhǔn)命令、消息摘要命令、加密命令 標(biāo)準(zhǔn)命令:enc, ca, req, ...
對(duì)稱加密: 工具:openssl enc, gpg 算法:3des, aes, blowfish, twofish enc命令: 幫助:man enc 加密: openssl enc -e -des3 -a -salt -in testfile -out testfile.cipher 解密: openssl enc -d -des3 -a -salt –in testfile.cipher -out testfile openssl ? -a base64編碼 salt 鹽:將密碼順序打亂,隨機(jī)生成(也可指定),再進(jìn)行加密 -in 跟加密文件 -out 跟輸出結(jié)果 例:加密 openssl enc -e -des3 -a -salt -in f1.txt -out f1.txt.enc
單向加密: 工具:md5sum, sha1sum, sha224sum,sha256sum… openssl dgst dgst命令: 幫助:man dgst openssl dgst -md5 [-hex默認(rèn)] /PATH/SOMEFILE openssl dgst -md5 testfile 生成摘要 md5sum /PATH/TO/SOMEFILE MAC: Message Authentication Code,單向加密的一種延伸應(yīng)用,用于實(shí)現(xiàn)網(wǎng)絡(luò)通信中保證所傳輸數(shù)據(jù)的完整性機(jī)制 CBC-MAC HMAC:使用md5或sha1算法 生成用戶密碼: passwd命令: 幫助:man sslpasswd openssl passwd -1 -salt SALT(最多8位) openssl passwd -1 –salt centos 生成隨機(jī)數(shù): 幫助:man sslrand openssl rand -base64|-hex NUM NUM: 表示字節(jié)數(shù),使用-hex,每個(gè)字符為十六進(jìn)制,相當(dāng)于4位二進(jìn)制,出現(xiàn)的字符數(shù)為NUM*2 公鑰加密: 算法:RSA, ELGamal 工具:gpg, openssl rsautl(man rsautl) 數(shù)字簽名: 算法:RSA, DSA, ELGamal 密鑰交換: 算法:dh DSA:Digital Signature Algorithm DSS:Digital Signature Standard RSA:
生成密鑰對(duì)兒:man genrsa 生成RSA公鑰私鑰對(duì) 生成私鑰 openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS 輸出一個(gè)私鑰文件,要求指定私鑰程度(位數(shù)) (umask 077; openssl genrsa –out test.key –des 2048) 使用對(duì)稱密鑰生成口令 例: (umask 066;openssl genrsa -out app.key -des 1024) -des 生成密鑰的的密碼,忘記無(wú)法破解,可以重新生成 openssl rsa -in test.key –out test2.key 將加密key解密 例:openssl rsa -in app.key -out app1.key 從私鑰中提取出公鑰 openssl rsa -in PRIVATEKEYFILE –pubout –out PUBLICKEYFILE openssl rsa –in test.key –pubout –out test.key.pub 例:openssl rsa -in app.key -pubout -out app.key.pub 隨機(jī)數(shù)生成器:偽隨機(jī)數(shù)字 鍵盤和鼠標(biāo),塊設(shè)備中斷 /dev/random:僅從熵池返回隨機(jī)數(shù);隨機(jī)數(shù)用盡,阻塞 /dev/urandom:從熵池返回隨機(jī)數(shù);隨機(jī)數(shù)用盡,會(huì)利用軟件生成偽隨機(jī)數(shù),非阻塞
PKI:Public Key Infrastructure CA RA CRL 證書(shū)存取庫(kù) 建立私有CA: OpenCA openssl 證書(shū)申請(qǐng)及簽署步驟: 1、生成申請(qǐng)請(qǐng)求 2、RA核驗(yàn) 3、CA簽署 4、獲取證書(shū)
創(chuàng)建私有CA: openssl的配置文件:/etc/pki/tls/openssl.cnf 三種策略:match 匹配 optional 可選 supplied 提供 match:要求申請(qǐng)?zhí)顚懙男畔⒏鶦A設(shè)置信息必須一致 optional:可有可無(wú),跟CA設(shè)置信息可不一致 supplied:必須填寫這項(xiàng)申請(qǐng)信息, 1、創(chuàng)建所需要的文件 touch /etc/pki/CA/index.txt 生成證書(shū)索引數(shù)據(jù)庫(kù)文件 echo 01 > /etc/pki/CA/serial 指定第一個(gè)頒發(fā)證書(shū)的序列號(hào) 2、 CA自簽證書(shū) 生成私鑰 cd /etc/pki/CA/ (umask 066; openssl genrsa -out private/cakey.pem 2048) 生成自簽名證書(shū) openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 3650 -out /etc/pki/CA/cacert.pem 選項(xiàng)說(shuō)明: -new: 生成新證書(shū)簽署請(qǐng)求 -x509:專用于CA生成自簽證書(shū) -key: 生成請(qǐng)求時(shí)用到的私鑰文件 -days n:證書(shū)的有效期限 -out /PATH/TO/SOMECERTFILE: 證書(shū)的保存路徑 3、頒發(fā)證書(shū) 在需要使用證書(shū)的主機(jī)生成證書(shū)請(qǐng)求 給web服務(wù)器生成私鑰 (umask 066; openssl genrsa –out /data/test.key 2048) 生成證書(shū)申請(qǐng)文件 openssl req -new -key /data/test.key -out /data/test.csr 將證書(shū)請(qǐng)求文件傳輸給CA CA簽署證書(shū),并將證書(shū)頒發(fā)給請(qǐng)求者 openssl ca -in /tmp/test.csr –out /etc/pki/CA/certs/test.crt -days 100 注意:默認(rèn)要求 國(guó)家,省,公司名稱三項(xiàng)必須和CA一致 查看證書(shū)中的信息: openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|issuer|subject|serial|dates openssl ca -status SERIAL 查看指定編號(hào)的證書(shū)狀態(tài) 4、吊銷證書(shū) 在客戶端獲取要吊銷的證書(shū)的serial openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject 在CA上,根據(jù)客戶提交的serial與subject信息,對(duì)比檢驗(yàn)是否與index.txt文件中的信息一致,吊銷證書(shū): openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem 指定第一個(gè)吊銷證書(shū)的編號(hào),注意:第一次更新證書(shū)吊銷列表前,才需要執(zhí)行 echo 01 > /etc/pki/CA/crlnumber 更新證書(shū)吊銷列表 openssl ca -gencrl -out /etc/pki/CA/crl.pem 查看crl文件: openssl crl -in /etc/pki/CA/crl.pem -noout -text
實(shí)驗(yàn)前準(zhǔn)備: 1.SELINUX關(guān)閉 2.IPTAB關(guān)閉 3.時(shí)間校驗(yàn) 使用openssl搭建CA 搭建完成用戶向CA申請(qǐng)證書(shū) vim /etc/pki/tls/openssl.cnf 文件詳細(xì)配置 openssl的范例配置文件 一臺(tái)電腦可以搭建多個(gè)CA [ ca ] #為默認(rèn)CA default_ca = CA_default [ CA_default ] #定義默認(rèn)CA的相關(guān)信息 dir = /etc/pki/CA # 默認(rèn)CA中相關(guān)數(shù)據(jù)的存放路徑,dir為變量指的路徑 certs = $dir/certs # 存放發(fā)布的證書(shū) crl_dir = $dir/crl # 存放證書(shū)吊銷的列表的文件 database = $dir/index.txt # 存放索引,數(shù)據(jù)庫(kù) (需要手工創(chuàng)建) new_certs_dir = $dir/newcerts # 存放新證書(shū)路徑,新頒發(fā)的證書(shū),存放在此目錄 certificate = $dir/cacert.pem # CA自己的證書(shū),rootCA只能自簽名 serial = $dir/serial # 當(dāng)前序列號(hào),每頒發(fā)一個(gè)證書(shū)都要給它加編號(hào), # 下一個(gè)證書(shū)頒發(fā)的編號(hào)到幾了,寫到此文件 # 需要手動(dòng)創(chuàng)建 crlnumber = $dir/crlnumber # 證書(shū)吊銷列表的編號(hào) crl = $dir/crl.pem # 證書(shū)吊銷列表的文件存放的路徑 private_key = $dir/private/cakey.pem # CA私鑰存放路徑 RANDFILE = $dir/private/.rand # 隨機(jī)數(shù) default_days = 365 # 證書(shū)默認(rèn)有效期 default_crl_days= 30 # CRL吊銷列表有效值 default_md = sha256 # 默認(rèn)hash算法 preserve = no policy = policy_match #頒發(fā)證書(shū)的策略 [ policy_match ] 定義頒發(fā)證書(shū)的策略 搭建CA的時(shí)候,需要提交CA的相關(guān)信息 countryName = match # 國(guó)家 stateOrProvinceName = match # 省份 organizationName = match # 組織(公司名) organizationalUnitName = optional # 部門 commonName = supplied # 服務(wù)器名稱或網(wǎng)站域名 emailAddress = optional # 郵箱 國(guó)家,省份,組織 三項(xiàng)申請(qǐng)用戶必須和CA保持一致 [ policy_anything ] 可選,可一樣可不一樣
CA服務(wù)器 1.創(chuàng)建所需的文件 touch /etc/pki/CA/index.txt 生成證書(shū)索引數(shù)據(jù)庫(kù)文件 echo 01 > /etc/pki/CA/serial 指定第一個(gè)頒發(fā)證書(shū)的序列號(hào) 2.CA自簽證書(shū),生成私鑰 cd /etc/pki/CA/ (umask 066;openssl genrsa -out private/cakey.pem 2048) #生成私鑰文件 3.利用私鑰,給自己生成一個(gè)自簽名的證書(shū) openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650 req 表示申請(qǐng) -new 新證書(shū) -x509 加x509 表示自簽名,不加表示普通證書(shū) -key private/cakey.pem 指定私鑰 -out cacert.pem 生成的證書(shū)路徑 -days 3650 有效期 寫入國(guó)家兩個(gè)字符:CN 省份:beijing 城市:beijing 公司:adong 部門:devops 服務(wù)器名稱:ca.adong.com 郵箱:... 用戶申請(qǐng)證書(shū) 1.生成私鑰 cd /data/app (umask 077;openssl genrsa -out app.key 1025) 2.利用私鑰生成證書(shū)申請(qǐng)文件 openssl req -new -key app.key -out app.csr 申請(qǐng)內(nèi)容 國(guó)家,省份和公司必須和CA保持一致 國(guó)家:CN 省份:beijing 城市:bj 公司:adong 部門:devops 服務(wù):app.adong.com ... 3.將用戶申請(qǐng)的證書(shū)文件上傳到CA服務(wù)器 scp app.csr root@192.168.38.100:/etc/pki/CA 4.CA給用戶頒發(fā)證書(shū) openssl ca -in app.csr -out certs/app.crt -day 100 ca 頒發(fā)證書(shū) -in app.csr 證書(shū)申請(qǐng)文件 -out certs/app.crt 最終生成的證書(shū),放在/etc/pki/CA/certs目錄下 (crt證書(shū)文件) 確定提交信息,是否正確,正確y回車即可 5.驗(yàn)證證書(shū)是否有效 openssl ca -status 01 Using configuration from /etc/pki/tls/openssl.cnf 01=Valid (V) #V表示有效
系統(tǒng)默認(rèn)不允許一個(gè)用戶申請(qǐng)多個(gè)證書(shū) cat /etc/pki/CA/index.txt.attr unique_subject = yes #唯一的申請(qǐng)主題 #意思是一個(gè)主機(jī)只能申請(qǐng)一個(gè)證書(shū) 改為no,即可申請(qǐng)多個(gè)證書(shū) 在CA主機(jī)申請(qǐng)證書(shū) (umask 077;openssl genrsa -out app2.key 1024) openssl req -new -key app2.key -out app2.csr openssl ca -in app2.csr -out /etc/pki/CA/certs/app2.crt -days 100 cat /etc/pki/CA/index.txt V 191210091002Z 01 unknown /C=CN/ST=beijing/O=adong/OU=devops/CN=app.adong.com V 191210111559Z 02 unknown /C=CN/ST=beijing/O=adong/OU=devops/CN=ca.app2.com 吊銷證書(shū) openssl ca -revoke /etc/pki/CA/newcerts/02.pem cat /etc/pki/CA/index.txt V 191210091002Z 01 unknown /C=CN/ST=beijing/O=adong/OU=devops/CN=app.adong.com R 191210111559Z 190901111924Z 02 unknown /C=CN/ST=beijing/O=adong/OU=devops/CN=ca.app2.com 或者使用命令驗(yàn)證 openssl ca -status 02 Using configuration from /etc/pki/tls/openssl.cnf 02=Revoked (R) 被吊銷的證書(shū)改為Revokde(R) 需要生成公開(kāi)的證書(shū)吊銷列表,通知其他用戶此證書(shū)已被吊銷 創(chuàng)建證書(shū)吊銷列表目錄 echo 01 > /etc/pki/CA/crlnumber 更新證書(shū)吊銷列表 openssl cs -gencrl -out /etc/pki/CA/crl.pem
以上是“互聯(lián)網(wǎng)中安全和加密的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!