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、創建所需要的文件? ? ?(服務器端)? ?掌握?。。?/span>

 

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 10:31
下一篇 2018-05-30 22:21

相關推薦

  • Linux文件系統簡介

    “一切皆是文件”是Linux基本哲學思想之一,可見文件系統在linux系統中的重要性,學好文件系統將為以后深入研究與學習Linux系統奠定良好的基礎。

    2018-03-30
  • 網絡管理基礎

    IP地址由網絡ID和主機ID組成 A類:0 000 0000 – 0 111 1111:1-127 網絡數:126 每個網絡中的主機數2^ 24-2=16777214 B類:10 00 0000 – 10 11 1111:128-191 網絡數:2^ 14=16384 每個網絡中的主機數:2^ 16–2=65534 C類:100 0 …

    2018-04-01
  • SElinux簡介

    本文主要介紹:SELinux概念、配置SELinux、管理文件安全標簽、管理端口標簽、管理SELinux布爾值開關、管理日志、查看SELinux幫助以及SElinux操作示例(遷移httpd服務默認目錄)

    2018-05-17
  • linux入門命令

    bc:計算器 mainframe 緩存查看:lscpu磁盤和內存性能測試命令: dd Xmanager (xshell) 安裝:用戶名: byg公司: microsoft注冊碼: 使用工具生成 命令庫調用: # ldd /bin/ls系統庫跟蹤,調用庫詳細信息 # strace lslibrary 庫跟蹤 # ltrace ls 二進制文件查看: # hex…

    Linux筆記 2018-07-21
  • AWK

    ### awk awk分為nawk,gawk 我們shell中常用的awk 其版本是gawk “`AWK會把file中的每一行(記錄/可以指定分隔符),讀入空間中并默認以空白(TAB\space\\n)等分割成幾個字段,每個字段用$#表示$0表示整行本身“` awk [Option] ‘program’ file option -F:…

    Linux筆記 2018-05-20
  • 簡單Linux腳本實現《雞兔同籠》數學題的自動計算~!

    簡單shell腳本計算《雞兔同籠》數學名題

    2018-08-05
欧美性久久久久