加密、解密以及Openssl建立私有CA
一、openssl簡介
????? OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼算法、常用
的密鑰和證書封裝管理功能及SSL協(xié)議,并提供豐富的應(yīng)用程序供測試或其它目的使用。
? SSL:secure socket layer? 安全套接層協(xié)議 可以在internet提供秘密性的傳輸。
二、加密算法??
?加密算法的分類:對稱、公鑰和單向加密
?1、對稱加密:
? 加密和解密用同一個密鑰,安全性依賴于密鑰,而非算法。
?? (1)算法:
??????? DES:Data Encryption standard,數(shù)據(jù)加密標準,56bits
??????? 3DES:DES加強版
??????? AES:Advanced encrption standard 高級加密標準(128bits,192,256,382,512,)
??????? 可自行選擇加密位數(shù),常用算法
??????? blowfish
??????? twofish
??????? tdea
??????? rc6
??????? casts
?? (2)特性
?????? 1)同一密鑰
?????? 2)將明文分隔成固定大小的塊,逐個進行加密
?? (3)缺陷
?????? 1)密鑰過多
?????? 2)密鑰分發(fā)
?2、公鑰加密:
??? (1)私鑰和公鑰
????? 私鑰:secret key,僅允許個人使用
????? 公鑰:public key,公開給所有人獲取
????? 公鑰從私鑰中提取而來,使用公鑰加密的數(shù)據(jù),只能使用與此公鑰配對配對的私鑰解密
??(2)用處:
???1)身份認證:私鑰擁有者用自己的私鑰加密的數(shù)據(jù),只要用其公鑰能解密,即可認證其身份;
???2)密鑰交換:與被通信方通信之前,首先獲取到對方的公鑰,自己生成一個加密密碼,用對方的公鑰加密,并發(fā)送給對方;
???3)數(shù)據(jù)加密:
??(3)算法:
???RSA
???DSA
???ELGamal
??? (4)特性
?????? 1)密鑰長度較大,512,2048
?????? 2)加密解密分別使用密鑰對兒中的密鑰相對進行
?????? 3)用于數(shù)據(jù)簽名和密鑰交換
?3、單向加密:
? 提取數(shù)據(jù)的特征碼
?? (1)特性
????? 1)定長輸出,無論原來數(shù)據(jù)的大小,加密長度一樣
????? 2)雪崩效應(yīng):原數(shù)據(jù)微小改變,導(dǎo)致結(jié)果巨大變化
????? 3)不可逆???????
?? (2)算法:
??????? MD5:128bit
??????? sha1 160
??????? sha256
??????? sha384
??????? sha512
?? (3)用處:
??????? 數(shù)據(jù)完整性????????????
?4、一次加密通信過程
?發(fā)送者:??
?(1)提取數(shù)據(jù)特征碼
?(2)私鑰加密特征碼
?(3)生成臨時密鑰
?(4)臨時密鑰加密數(shù)據(jù)和加密過的特征碼
?(5)使用接收方公鑰加密臨時密鑰,附加在數(shù)據(jù)后方
?接收方:
?(1)用私鑰解密,獲得臨時密鑰
?(2)使用臨時密鑰解密數(shù)據(jù)和特征碼
?(3)用對方公鑰解密特征碼
?(4)計算特征碼,與解密的對比
三、數(shù)字證書
? 1、數(shù)字證書的定義:
???? 數(shù)字證書:互聯(lián)網(wǎng)通訊中標志通訊各方身份信息的一串數(shù)字,提供了一種在
? Internet上驗證通信實體身份的方式,數(shù)字證書不是數(shù)字***,而是身份認證
? 機構(gòu)蓋在數(shù)字***上的一個章或印。
???? 它是由一個由權(quán)威機構(gòu)——CA機構(gòu),又稱為證書授權(quán)(Certificate Authority)
?中心發(fā)行的,人們可以在網(wǎng)上用它來識別對方的身份。????
? 2、數(shù)字證書的格式與用戶
?? (1)數(shù)字證書的格式(x.509 ):
?????? 版本號(version)
?????? 序列號:(serial number):CA用于唯一標識證書
?????? 簽名算法標志(signature algorithm identifier)
?????? 發(fā)行者的名稱:即CA自己的名稱
?????? 有效證書主體名稱:證書擁有者自已的名字
?????? 證書文體公鑰信息:證書擁有者自己的公鑰
?????? 發(fā)行商的唯一標識
?????? 證書主體的唯一標識
?????? 擴展信息
?????? 簽名:CA對此證書的數(shù)字簽名
?? (2)證書通常有兩類用途
?????? 用戶證書
?????? 主機證書(httpd)
?3、證書的吊銷鏈表:
????? 算法-->CA的名稱-->本次更新時期-->下次更新日期-->用戶證書序列號,吊銷日期-->CA的數(shù)字簽名
?4、獲取證書的方法:
??? (1)向RA注冊申請
??? (2)建立私有CA?
四、openssl加密解密:
?1、openssl 的組成部分
??? libcrypto:加密、解密庫文件
??? libssl:ssl協(xié)議實現(xiàn)
??? openssl:多用途命令行工具,每種功能都使用專用 的子命令來實現(xiàn)
?2、對稱加密
??? 工具:openssl enc
??? 算法:des,3des,aes
??? openssl enc -e -CIPHERNAME -a salt -in /PATH/FROM/SOMEFILE -out /PATH/TO/FILE
??? openssl enc -d -CIPHERNAME -a salt -in /PATH/FROM/SOMEFILE -out /PATH/TO/FILE
????? #cp /etc/fstab ./
????? #openssl enc -e -des3 -a -salt -in fstab -out fstab.des3
????? #openssl enc -d -des3 -a -salt -in fstab.des3 -out fstab
?3、公鑰加密
?? 工具:gpg,openssl rsautl
?? 數(shù)字簽名:RSA,DSA,ELGamal
???? DSA:digital signature algorithm? 數(shù)字簽名算法
???? DSS:digital signature standard??? 數(shù)字簽名標準
操作過程 :生成私鑰,從私鑰中提取公鑰
(1)生成私鑰:
???? openssl genrsa -out keyFILE? NUM_BITS
???? #openssl genrsa -out testkey 2048
??? (umask 077;openssl genrsa -out KEY_FILE NUM_BITS)
??? #(umask 077;openssl genrsa -out testkey 2048)
??? 注意:命令加(),會在子shell中運行,修改默認生成私鑰權(quán)限
(2)提取公鑰
???? #openssl rsa -in KEY_FILE -pubout
???? #openssl rsa -in testkey -pubout
?4、單向加密
??? 算法:md5,sha1
??? 工具:openssl dgst,md2sum,sha1sum
??? openssl dgst -CIPHER /PATH/TO/SOMEFILE...
??? #openssl dgst -md5 fstab
??? #md5sum fstab
?5、生成用戶密碼:
???? openssl passwd -1 -salt 8bits 隨機數(shù) -1表示以MD5加密
???? #openssl passwd -1 -salt 12345678
?6、生成隨機數(shù)
??? openssl rand -hex|-base64 NUM
??? #openssl passwd -1 -salt $(openssl rand -hex 4)
???? openssl
?7、隨機數(shù)生成器
??? random,urandom
??? 熵池:保存硬件中斷產(chǎn)生的隨機數(shù)
??? /dev/random 僅從熵池中返回隨機,當熵池耗盡,進程將被阻塞
??? /dev/urandom? 取隨機數(shù),當熵池耗盡,讓生成器生成隨機數(shù)
五、構(gòu)建私有CA
?配置文件:/etc/pki/tls/openssl.conf
?工作目錄:/etc/pki/CA/
?1、建立私有CA:
? (1)生成私鑰文件? /etc/pki/CA/private/cakey.pem
??????? #cd /etc/pki/CA
??????? #(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
? (2)生成自簽證書
??????? #openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out/etc/pki/CA/cacert.pem -days 3650
????????? -new :生成新的證書簽署請求
????????? -key 私鑰文件路徑,用于提取公鑰
????????? -days N:有效時長 ,天
????????? -out:輸出文件保存位置
????????????? -x509:直接輸出自簽署證書文件,只有構(gòu)建CA時才用
? (3)提供輔助文件
??????? #cd /etc/pki/CA
??????? #touch /etc/pki/CA/index.txt
??????? #echo 01 >/etc/pki/CA/serial
?2、給節(jié)點發(fā)證書
? (1)節(jié)點申請證書
???????? 1)生成私鑰
???????????? #cd /etc/httpd
???????????? #mkdir ssl
???????????? #(umask 077;openssl genrsa -out httpd.key 1024)
???????? 2)生成證書簽署請求
???????????? #openssl req -new -key httpd.key -out httpd.csr
??????????? 注意:
?????????????? a)其中subject信息部分與CA一致
?????????????? b)common Name 要使用此主機在通信使用名字
???????? 3)把請求發(fā)送給CA
? (2)CA簽發(fā)證書
???????? 1)驗正請求者信息
???????? 2)簽署證書
?????????? openssl ca -in CSR_FILE -out CRT_FILE -days N
?????????? #openssl ca -in /etc/httpd/ssl/http.csr -out /etc/httpd/ssl/httpd.crt -days 3650
???????? 3)把簽署好的證書發(fā)還給請求者
?3、吊銷證書:
? (1)獲取吊銷證書的序列號
?????? openssl x509 -in CRT_FILE -noout -serial -subject
????? #openssl x509 -in /etc/httpd/ssl/httpd.crt -noout -serial -subject
? (2)實現(xiàn)證書吊銷
??????? 1)吊銷證書
????????? #openssl ca -revoke CRT_FILE
??????? 2) 生成吊銷證書編號
???????? #echo 01 >/etc/pkie/ca/crlnumber
??????? 3)更新證書吊銷列表
????????? #openssl crl -gencrl -out SCA.crl
轉(zhuǎn)載于:https://blog.51cto.com/linuxkingdom/1636696
總結(jié)
以上是生活随笔為你收集整理的加密、解密以及Openssl建立私有CA的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 医疗大数据:商业保险、移动医疗的崛起,正
- 下一篇: TortoiseSVN客户端重新设置用户