Linux安全和加解密(二)

本文主要介紹:1、安全協議 2、openssl 3、創建CA和申請證書

一、安全協議

SSL: Secure Socket Layer???安全套階層協議

TLS: Transport Layer Security? ? ?安全傳輸協議,SSL改名TLS,一個東西,可通稱

1995:SSL 2.0 Netscape???1.0不普及

1996: SSL 3.0

1999: TLS 1.0

2006: TLS 1.1 IETF(Internet工程任務組) RFC 4346

2008:TLS 1.2 當前使用???最普遍

2015: TLS 1.3

  • 功能:機密性,認證,完整性,重放保護(防重放,第一次有效第二次失效)?
  • 兩階段協議,分為握手階段和應用階段

握手階段(協商階段):客戶端和服務器端認證對方身份(依賴于PKI體系,利用數字證書進行身份認證),并協商通信中使用的安全參數、密碼套件以及主密鑰。后續通信使用的所有密鑰都是通過MasterSecret生成。

應用階段:在握手階段完成后進入,在應用階段通信雙方使用握手階段協商好的密鑰進行安全通信

?

SSL/TLS

Handshake協議:包括協商安全參數和密碼套件、服務器身份認證(客戶端身份認證可選)、密鑰交換

ChangeCipherSpec 協議:一條消息表明握手協議已經完成

Alert 協議:對握手協議中一些異常的錯誤提醒,分為fatal和warning兩個級別,fatal類型錯誤會直接中斷SSL鏈接,而warning級別的錯誤SSL鏈接仍可繼續,只是會給出錯誤警告

Record 協議:包括對消息的分段、壓縮、消息認證和完整性保護、加密等

HTTPS 協議:就是“HTTP 協議”和“SSL/TLS 協議”的組合。HTTP over?SSL”或“HTTP over TLS”,對http協議的文本數據進行加密處理后,成為二進制形式傳輸? ? ??用的最多

 

、SSL協議的開源實現:OpenSSL

 

三個組件:

openssl: 多用途的命令行工具,包openssl

libcrypto: 加密算法庫,包openssl-libs

libssl:加密模塊應用庫,實現了ssl及tls,包nss

?

openssl命令:

兩種運行模式:交互模式? 和? 批處理模式

openssl version:程序版本號

命令大致分為三類:

標準命令:子命令 enc, ca, req, …

消息摘要命令:子命令 dgst …

加密命令:子命令 enc?…

查看更多子命令? ?openssl ??

 

1、對稱加密:

 

工具: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?生成新文件

 

-e? ? 表示加密

-d? ? 表示解密

-in /PATH/TO/FILE? ?要加密的文件

-out /PATH/TO/FILE ?加密后生成新文件;不加這個選項就只有標準輸出,不生成文件

-pass STRING ?表示對稱加密的秘鑰是什么

-a|-base64 ? 表示以base64文本格式進行編碼?(大小寫字母 / 及 + 的表現形式,不夠六位用=補足)

-salt? ? ?加雜質使亂碼??

 

2、單向加密:

 

工具:md5sum,sha1sum,sha224sum,sha256sum…

openssl dgst

 

dgst命令:

幫助:man dgst

openssl dgst -md5 [-hex默認] /PATH/SOMEFILE

openssl dgst -md5 testfile

md5sum testfile? 結果同上,格式不一樣

 

 

生成用戶密碼:? ?passwd命令

幫助:man sslpasswd

openssl passwd -1??不指定salt,則隨機生成

openssl passwd -1?-salt SALT(最多8位)????指定salt

openssl passwd -1 –salt centos 指定鹽,則同樣的密碼加密后生成同樣的字符串

圖片1

 

生成隨機數: rand命令

幫助:man sslrand

openssl rand -base64|-hex NUM

NUM: 表示字節數;-hex時,每個字符為十六進制,相當于4位二進制,出現的字符數為NUM*2 ?

注:-base64?二進制的六位,指定數字NUM若不是3的倍數,會用=補足

如下圖:

圖片2

隨機數生成器:偽隨機數字

鍵盤和鼠標,塊設備中斷

/dev/random:僅從熵池返回隨機數;隨機數用盡,阻塞

/dev/urandom:從熵池返回隨機數;隨機數用盡,會利用軟件生成偽隨機數,非阻塞

 

3、生成密鑰對

 

生成密鑰對兒:man genrsa

生成私鑰

openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS

? ? (umask 077; openssl genrsa -out test.key -des 2048)?

生成私鑰文件,并設定權限及加密私鑰,小括號開啟子進程,不改變父進程的umask值

將加密key解密并生成文件

? openssl rsa -in test.key -out test2.key

從私鑰中提取出公鑰

? ? ?openssl rsa -in PRIVATEKEYFILE –pubout –out PUBLICKEYFILE

例:openssl rsa –in test.key –pubout –out test.key.pub

 

 

公鑰加密:

算法:RSA, ELGamal

工具:gpg,openssl rsautl(man rsautl

數字簽名:

算法:RSA, DSA, ELGamal

密鑰交換:

算法:dh

DSA: Digital Signature Algorithm

DSS:Digital Signature Standard

RSA:

 

三、創建CA和申請證書

 

創建私有CA:

openssl的配置文件:/etc/pki/tls/openssl.cnf??其中定義了openssl完成CA工作時的相關屬性定義

1474551915553921

三種策略:

匹配match:要求申請填寫的信息跟CA設置信息必須一致

支持supplied:必須填寫這項申請信息

可選optional:可有可無

 

1、創建所需要的文件? ? ?(服務器端)? ?掌握?。?!

 

touch /etc/pki/CA/index.txt? ??生成證書索引數據庫文件,內容可為空,但必須有,否則會報錯

echo 01 > /etc/pki/CA/serial? ??指定第一個頒發證書的序列號?沒有會報錯,十六進制數

 

2、?CA自簽證書? ? ?(服務器端)? ? ?掌握?。?!

 

生成私鑰

cd /etc/pki/CA/??后續創建的文件夾和目錄都要求在此目錄下

(umask 066; openssl genrsa -out?/etc/pki/CA/private/cakey.pem?2048)???目錄及文件名定死了

 

生成自簽名證書

?openssl req -new -x509?key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem

-x509表示自簽名,沒有表示申請,簽名證書路徑名稱定死 ?交互式命令

直接cat /etc/pki/CA/cacert.pem???base64編碼看不懂

 

-new: 生成新證書簽署請求

-x509: 專用于CA生成自簽證書

-key: 生成請求時用到的私鑰文件

-days n:證書的有效期限

-out /PATH/TO/SOMECERTFILE: 證書的保存路徑

 

??3、頒發證書? ? ?掌握?。?!

在需要使用證書的主機生成證書請求

 

給web服務器生成私鑰? ? (客戶端)

(umask 066; openssl genrsa -out?/etc/pki/tls/private/test.key 2048)???路徑和名字沒規定

 

生成證書申請文件? ?(客戶端)

openssl req -new -key /etc/pki/tls/private/test.key?-out /etc/pki/tls/test.csr??交互式命令

-days?365這里不寫,有效期由頒發者決定

 

將證書請求文件傳輸給CA? ?(客戶端)

?scp /etc/pki/tls/test.csr?IP:/PATH/TO

?

CA簽署證書,并將證書頒發給請求者? ? (服務器端)

openssl ca -in /tmp/test.csr out /etc/pki/CA/certs/test.crt -days 365??目錄定死,有效期默認一年

注意:默認國家,省,公司名稱三項必須和CA一致,若想不一致可以更改配置文件設定

 

查看證書中的信息:? ?(服務器端)

openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|issuer|subject|serial|dates?

? ? ? ? ?參數:Text格式查看、單看頒發人、單看頒發對象、單看編號、單看有效期

 

查看指定編號的證書狀態? ? (服務器端)

openssl ca -status SERIAL

補充:cat /etc/pki/CA/index.txt 查看所有證書 ?行首帶V表示有效,吊銷R

或者傳入Windows電腦,改后綴為.crt或 .cer才會變證書圖標,即可查看

安裝證書:雙擊證書圖標,安裝過程中要出現安全警告才正確!在控制面板-Internet選項-內容查看

 

4、吊銷證書? ? ?(了解)

 

在客戶端獲取要吊銷的證書的serial

openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject

 

在CA上,根據客戶提交的serial與subject信息,對比檢驗是否與index.txt文件中的信息一致,吊銷證書:

openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem

 

指定第一個吊銷證書的編號,注意:第一次更新證書吊銷列表前,才需要執行

echo 01 > /etc/pki/CA/crlnumber

 

更新證書吊銷列表

openssl ca -gencrl -out /etc/pki/CA/crl.pem

 

查看crl文件:

openssl crl -in /etc/pki/CA/crl.pem -noout -text

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/99795

(0)
bican813bican813
上一篇 2018-05-30
下一篇 2018-05-30

相關推薦

  • shell

    shell 內外部命令

    2018-04-07
  • CENTOS開機流程

    開機流程 centos 5和6版本開機流程kernel==>rootfs(根文件系統)首先內核啟動,然后加載根文件系統,然后啟動init(第一個文件系統)它負責所有的程序的啟動、管理、調用、刪除等(這一切是運行在用戶空間的)。 “`kernel:進程管理內存管理網絡管理驅動程序文件系統安全功能 rootfs:glibc“` 庫:…

    Linux筆記 2018-05-13
  • d1-d2 命令總結

    1.bc 計算器 [root@centos7 ~]# bc bc 1.06.95 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For det…

    Linux筆記 2018-07-19
  • lvs調度方案和應用場景

    ipvs scheduler: 根據其調度時是否考慮各RS當前的負載狀態,可分為靜態方法和動態方法兩種: 靜態方法:僅根據算法本身進行調度; RR:roundrobin,輪詢; WRR:Weighted RR,加權輪詢; SH:Source Hashing,實現session sticky,源IP地址hash;將來自于同一個IP地址的請求始終發往第一次挑中的…

    Linux筆記 2018-07-02
  • linux基礎

    linux基礎命令

    2018-04-08
  • Linux根文件系統和目錄結構及bash特性

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示 cp命令:copy 源文件;目標文件; 單源復制:cp [OPTION]… [-T] SOURCE DEST 多源復制:cp [OPTION]… SOURCE… DIRECTORY cp [OPTION]… -t DIRECTORY S…

    2018-06-29
欧美性久久久久