密鑰和公鑰

安全協議和搭建CA

安全協議

SSL:secure socket layer

TLS:transport layer security

功能:機密性,認證,完整性,重放保護

兩階段協議:分為握手階段和應用階段

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

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

在實現通訊的時候,加密過程怎么來實現的,

客戶端,發一個hello消息,我要和你通訊,服務器端也打聲招呼hello,我收到你的消息了,雙方開始一些數據交換,其中最重要的就是把服務器的證書發給他,證書包括CA簽過名的公鑰,一般來講客戶端信任CA,即客戶端拿到了CA的公鑰,服務器發過來的證書包括CA頒發給服務器的證書,即私鑰簽過名服務器的證書,客戶端就可以拿CA的公鑰把證書里面的簽過名的私鑰的信息解密,解密之后得到服務器的公鑰,

 

京東向CA申請證書,證書包括,Sca(Pa)+CA+A+expire

 

客戶端想訪問京東,京東先把證書傳給客戶,客戶端拿到證書,由于客戶信任CA,即客戶端拿到了京東的公鑰Pca,

CA的公鑰拿到了,我們就可以把CA簽過名的私鑰簽名的東西給解開,就得到了A的公鑰,

之后,客戶端在自己的瀏覽器自動生成一把對稱的密鑰,用京東的公鑰加密,再發回給京東,

Pjd(key)—–>jd.com ??京東的公鑰是證書里面包的,解開之后得到的, ?京東有自己的私鑰,就可以解開,拿到客戶端的對稱密鑰,雙方都有了對稱密鑰,以后就可以用對稱數據加密傳輸

Key(data)—->

<—–key(data) ??雙方都有密鑰,就可以通訊,

訪問HTTPS網站的原理

 

https:

1 client hello—> server???客戶端發消息連一下

2 server cert:Sca(Pserver)—>client???服務器把自己的證書傳給客戶端

3 client Pca[Sca(Pserver)]=Pserver?客戶端事先有ca的公鑰,就可以解開,得到服務器的公鑰

4 client key??隨機生成,對稱公鑰

5 client Pserver(key)—>server?用剛才解密出來的服務器公鑰加密,

6 server Sserver[Pserver(key)]=key?服務器用自己的私鑰解密,得到key

7 client<—key(data)—>server

 

CA證書 格式

PKI:

X.509:定義了證書的結構以及認證協議標準

支持ssl的功能的開源項目:openssl

三個組件:OpenSSL:多用途的命令行工具

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

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

Openssl命令:

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

Openssl version:程序版本號

標準命令、消息摘要命令、加密命令

標準命令:enc,ca,req

查看幫助,man dgst

Man enc

Openssl命令實現對稱密鑰加密

[root@centos7 app]# openssl enc -e -des3 -a -salt -in fstab ?-out fstab.des3

Enc對稱密鑰加密,-e表示要加密,-des3加密算法,-in表示對哪個文件操作-out輸出文件名,

-a是一種格式,base64 編碼 ??A-Za-z0-9+/ ?共64個 ?000000-111111

[root@centos7 app]# scp fstab.des3 192.168.27.120:/app/ ??傳到另一個主機

 

[root@Centos6 app]# openssl enc -d -des3 -a -salt -in fstab.des3 ???解密

 

Hash運算 支持hash運算 ?和md5運算一樣

[root@centos7 app]# openssl dgst -md5 fstab

MD5(fstab)= 5ee6b24e978dd663a191a50d7b36eb81

[root@centos7 app]# md5sum fstab

5ee6b24e978dd663a191a50d7b36eb81 ?fstab

 

生成用戶密碼:passwd命令

幫助:man sslpasswd

[root@centos7 app]# openssl passwd -1 -salt

生成隨機數

幫助:man sslrand

Openssl rand -base64|-hex NUM

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

[root@centos7 app]# openssl rand -base64 10

0sVbokguIMl55g==

[root@centos7 app]# openssl rand -hex 2 ?兩個字節

f1ef ?兩個字節占四位十六進制數,一個十六進制數相當于四位,

 

打包?tar jcvf script27.tar.xz /home/wang

Sz script27.tar.xz

Rz

公鑰加密

算法:RSA. ?ELGamal

工具:gpg,openssl ??rsautl(man rsautl)

數據簽名:

算法:RSA,DSA,ELGamal

密鑰交換

算法:df

DSA

DSS

RSA

生成密鑰對:man genrsa

生成私鑰

[root@centos7 app]# openssl genrsa -out centos6.key 1024 ?私鑰文件不安全

[root@centos7 app]# (umask 066;openssl ?genrsa -out centos6.key 1024) ?066對文件最大權限666,減去066,600都是偶數也不用加1

[root@centos7 app]# (umask 066;openssl ?genrsa -out centos6.key2?-des3?4096) ?對稱加密,即加上密碼(只有root權限)

[root@centos7 app]# openssl rsa -in ?centos6.key2 -out centos6.key2.out ?將加密key解密

從私鑰文件中,把公鑰提取出來

[root@centos7 app]# openssl rsa -in ?centos6.key -pubout -out centos6.key.pub

[root@centos7 app]# openssl rsa -in ?centos6.key2 -pubout -out centos6.key.pub2

隨機數生成器:

鍵盤和鼠標,塊設備中斷

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

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

[root@centos7 ~]# cat /dev/urandom |tr -dc ‘[:alnum:]’ |head -c 10

[root@centos7 ~]# openssl rand -base64 12 |head -c 10

Head 用于顯示文件的開頭的內容,-c 指定顯示頭部內容的字符數

 

Tr用來自標準輸入的字符進行替換、壓縮和刪除、

-c 取代所有不屬于第一字符集的字符(即取補集)

-d 刪除所有屬于第一字符集中的字符

 

PKI: Public Key Infrastructure ?公共密鑰架構

CA 證書的頒發機構

RA 證書的申請機構

CRL 證書吊銷列表

證書的存取庫

建立私有CA

OpenCA

Openssl

證書申請及簽署步驟

  1. 生成申請請求
  2. RA核驗
  3. CA核驗
  4. 獲取證書

搭建CA

搭建ca時,需要自己建立私鑰,需要有根ca,第一個ca,就相當于根ca,根ca的證書是自己給自己頒發的,自簽名的證書,建立公鑰私鑰對,通過私鑰來自己向自己頒發證書,,,第一步,建立自己的ca,客戶端向ca申請證書,

生成文件,填寫必要信息,國家,省,域;RA檢查信息,收集請求,沒問題之后;CA簽署,客戶端獲取證書后就

可以使用了,可以放在web服務器上將來實現web https的應用程序加密

 

創建私有CA

Openssl的配置文件:/etc/pki/tls/openssl.cnf

Centos7 ?改ip地址

看ip地址,nmcli connection

改ip地址,nmcli connection modify ens33 ipv4.addresses 192.168.27.7 /24

讓該地址生效,nmcli connection up ens33

三種策略:匹配、支持和可選

匹配指要求填寫的信息跟CA設置信息必須一致,支持指必須填寫這項申請信息,可選指可有可無

1創建所需要的文件

touch ?/etc/pki/CA/index.txt ?生成證書索引數據庫文件

echo 01 > /etc/pki/CA/serial ??指定第一個頒發證書的序列號

2CA自簽證書

生成私鑰

cd /etc/pki/CA ?CA工作的主目錄

(umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048) ????私鑰文件/private/cakey.pem

生成自簽名證書,從私鑰下生成自簽名證書

[root@centos7 CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650

(證書里面是放公鑰的)

Openssl req -new -x509 -key

/etc/pki/CA/private/cakey.pem -days ?7300 ?-out ???????????7300有效期

/etc/pki/CA/cacert.pem

-new 生成新證書簽署請求

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

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

-days n 證書的有效期限

-out 證書的保存路徑

-x509 加這個,表示自己給自己頒發證書 ???不加,表示向CA申請證書,

查看證書信息

[root@centos7 CA]# openssl x509 -in cacert.pem -noout -text

 

客戶端centos6向centos7申請證書

第一步,自己有私鑰,比如將來給http服務用的,我們要生成私鑰文件,利用私鑰文件生成證書申請,也是一個文件,拷貝到centos7上,CA頒發證書,也生成一個文件,復制回到centos6,意味著centos6有三個文件,私鑰文件,請求文件,最終的證書文件, ??其中搭建http的加密應用,需要用到兩個文件,私鑰文件和證書文件

第一步,生成私鑰文件

(umask 066;openssl genrsa -out app.key 1024)

第二步,利用私鑰文件生成證書申請請求

[root@Centos6 ~]# openssl req -new -key app.key -out app.pem ??生成證書申請文件

[root@Centos6 ~]# mv app.pem app.csr ???????改名字

[root@Centos6 ~]# scp app.csr 192.168.27.8:/etc/pki/CA ?????傳遞給centos7 證書申請,等待頒發

[root@centos7 CA]# openssl ca -in app.csr -out certs/app.crt -days 730 ?對申請,頒發證書,,對申請生成證書文件

[root@centos7 CA]# touch index.txt

[root@centos7 CA]# echo ?0F > /etc/pki/CA/serial ?序列號

[root@centos7 CA]# openssl ca -in app.csr -out certs/app.crt -days 730

[root@centos7 CA]# ?scp certs/app.crt 192.168.27.120:/app ??導入centos6

 

在客戶端查看證書

[root@Centos6 app]# openssl x509 -in /app/app.crt -noout -text

吊銷證書

Openssl ca -revoke newcerts/11.pem

生成證書吊銷列表

第一步Echo 0F > /etc/pki/CA/crlnumber 生成相關文件

第二步Openssl ca -gencrl -out crl.pem ?生成證書吊銷列表

 

?

總結創建CA

搭建根CA ,根CA的創建有兩步

第一步,建立兩個必要的文件,

第二步,生成私鑰給自己簽名 ;生成私鑰文件,生成自簽名文件

 

在另外一臺機器上,生成私鑰, 向CA申請證書,填寫信息 生成請求文件csr,復制到CA,然后CA頒發證書

 

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

(0)
sunchunjiangsunchunjiang
上一篇 2018-01-09 17:59
下一篇 2018-01-10

相關推薦

  • vim 編輯器 定時任務 bash基礎

    vim 編輯器 定時任務 bash基礎

    2017-10-17
  • 開機啟動流程

    Centos的開機啟動流程 具體步驟解釋:  第一步:加電自檢:POST         加電自檢是檢測硬件設備是否正常運行,以及一些外圍設備的輸入輸出是否存在。 自檢功能的實現是依靠BIOS軟件程序實現的 BIOS即基本輸入輸出系統,它是裝載在一個硬件芯片COMS上的,加電過程…

    Linux干貨 2016-09-13
  • 前兩周linux基礎知識總結

    linux用戶權限管理 軟鏈接與硬鏈接 輸入輸出重定向 文本處理三劍客vim sed awk 包管理rpm yum 源碼包編譯安裝

    Linux干貨 2018-03-17
  • rpm包管理(二)

    查詢查詢庫文件包查詢[select-options][query-options]licdR常用的查詢用法:卸載:二進制文件的恢復包效驗使用rpm命令導入公鑰(KEY文件)驗證rpm包來源(光盤)的來源及完整性檢查包安裝后生成的文件,是否發生過變動RPM包管理器的數據庫如果某個rpm相關內容被刪除如果rpm命令的包被刪除了信息庫被刪除了刪除/usr/bin下…

    Linux干貨 2016-09-19
  • Linux百科

    百度百科摘

    Linux干貨 2018-03-26
  • 學習積累01#計算機組成#Linux版本#基本命令

    第一周的積累 問題1:描述計算機的組成及其功能 CPU:中央處理器,主要功能是進行運算和邏輯運算,內部大致可分為控制單元、邏輯算術單元、存儲單元; 主板:核心部件,是電腦的“脈絡”,CPU\內存\控制核心電路均安裝在主板上,各種外部設備也通過主板上的插槽相互連接; 硬盤:常見的外存儲器,容量大,保存時間長、安全性高。接口主要分為IDE、SATA、SCSI。 …

    Linux干貨 2016-10-25
欧美性久久久久