加密解密基礎、PKI及SSL、建立私有CA

加密解密基礎node


加密解密的技術:web

對稱加密算法

加密方和解密方使用是同一個密鑰,加密解密的速度都很快,先將數據明文安全

分紅數據塊兒,通常來說是大小相同的,若是到最後剩下的不能與其餘數據塊兒的網絡

大小相同,那麼就給它添加一些填充物,而後對每一個數據塊兒逐個加密,dom

而後把加密後的數據塊兒發給對方,每一次管理一起,ide

可是,加密後的塊兒怎麼處理,由於每個塊兒都是單獨處理,對方在破解數據時工具

每一起獨立破解,也就是說這樣的加密過程對反破解並無任何幫助,測試

對於加密之後的數據塊兒的處理有如下兩種方法ui

ECB:每一起單獨加密,加密一個傳遞一個,

CBC:加密或密文塊兒鏈,經過抑或運算實現,每個數據塊兒,在發送給對方

以前會實現將此數據塊兒與此前的數據塊兒作一次抑或運算,並把結果發送給對方

因此得不到第一個塊兒,獲得其餘也就沒有用,即便是第一塊,也會和一個隨機數

進行抑或運算

其最大好處在於,作兩次抑或運算後能夠將數據還原

 

算法:DES:數據加密標準,使用56位的密鑰長度

AES:高級加密標準,可使用12八、19二、256三種長度的密鑰

3DES:對原有加密3次,

Blowfish

Twofish

RC6

IDEA

CAST5

缺陷:一、一我的跟衆多對象通訊的時候須要記的密碼過多

二、密鑰分發困難,是最大的難題,沒有一種可靠的手段將密鑰送給一個

沒有見過面的對象

 

非對稱加密

公鑰加密算法:DSA,RSA,EIGamal

加密方和解密方使用不一樣的密鑰

功能:加密解密

用戶的身份認證,RSA二者均可以實現,而DSA只能加密數據

公鑰,私鑰

公鑰是從私鑰中抽出的一段特徵,公鑰隱含在私鑰中

如今主流的密鑰長度是2048




PKI


PKI技術與安全服務

公鑰基礎設施(Public Key Infrastructure,簡稱PKI)是一種遵循標準的,採用非對稱密碼算法和技術來實現並提供安全服務的,通用的安全基礎設施。它可以透明地爲網絡應用提供加密和數字簽名所必需的密鑰和證書管理。PKI體系其實是計算機軟硬件、權威機構及應用系統的結合。

PKI體系結構:

一個基本的PKI系統由認證中心(CA )、註冊中心(RA)、密鑰管理中心(KMC)、證書發佈系統幾個核心組件組成。其中CA認證中心做爲電子證書認證系統的核心,負責全部證書的簽發、註銷以及證書註銷列表的簽發等管理功能。RA註冊中心是認證中心證書發放、管理等業務的延伸。它負責全部證書申請者的信息錄入、審覈等工做,同時對發放的證書進行管理。密鑰管理中心(KMC)爲CA Server提供用戶加密密鑰的生成及管理服務。證書發佈系統提供頒發證書和CRL證書撤銷列表的發佈及查詢服務,其服務方式包括LDAP目錄發佈、Web發佈及OCSP線證書狀態查詢服務等。




SSL


首先說一下什麼是SSL

1. 爲網絡通訊提供安全及數據完整性的一種安全協議,囊括了主要的密碼算法、經常使用的密鑰和證書封裝管理功能以及SSL協議,並提供了豐富的應用程序供測試或其它目的使用;

2. OpenSSL只是OpenSSL開源套件中的多功能命令工具;

3. OpenSSL套件的組成部分有:

libcrypto:通用功能的加密庫

libssl:用於實現TSL/SSL功能的庫;

OpenSSL:多功能命令工具


OpenSSL:

三個組件:

openssl: 多用途的命令行工具;

libcrypto: 加密解密庫;

libssl:ssl協議的實現;




建立私有CA

CA和申請證書都在同一臺機器上進行

一、CA端操做流程
操做步驟:
一、生成私鑰文件;      
二、生成自簽署證書;        
三、相關輔助文件
touch/etc/pki/CA/index.txt
echo01 > /etc/pki/CA/serial
再次說明:
(1)私鑰用於簽發證書時,向證書添加數字簽名使用;
(2)證書:每一個通訊方都導入此證書至「受信任的證書頒發機構」;
1)、配置文件
  /etc/pki/tls/openssl.cnf,此文件格式爲INI格式的
………省略……………
[ ca ]
default_ca      =CA_default        # The default casection

[ CA_default ]  #定義Openssl作爲CA時本身的相關路徑
 
dir            =/etc/pki/CA # Where everythingis kept  #指明CA本身的工做目錄
certs          =$dir/certs  # Where the issuedcerts are kept #已頒發證書的存取位置
crl_dir        =$dir/crl    # Where the issuedcrl are kept #已吊銷證書的吊銷鏈表存取位置
database        =$dir/index.txt  # database indexfile.  #證書索引文件
#unique_subject = no          # Set to 'no' to allowcreation of
#several ctificates with same subject.
new_certs_dir  =$dir/newcerts    # default place fornew certs.  #新證書的存放位置
    
certificate    =$dir/cacert.pem  # The CAcertificate    #指CA本身證書文件名
serial          =$dir/serial  # The currentserial number #序列號,下一個要發的證書的序列號,每籤一個序列號會怎麼加1
crlnumber      =$dir/crlnumber  # the current crlnumber  #吊銷證書列表的編號
# mustbe commented out to leave a V1 CRL
crl            =$dir/crl.pem # The current CRL  #當前正在使用的吊銷鏈
private_key    =$dir/private/cakey.pem# The private key  #CA本身的私鑰文件
RANDFILE        =$dir/private/.rand # private randomnumber file #隨機數的獲取位置
 
x509_extensions = usr_cert        # The extentions to add to thecert #定義了x.509的擴展信息中記錄爲「用戶證書」
 
…………省略……………………

2)、工做目錄
/etc/pki/CA/
注意:CentOS要想構建CA必須是基於/etc/pki/CA目錄進行
[root@node-2 ~]# cd /etc/pki/CA
[root@node-2 CA]# ll
total 16
drwxr-xr-x  2 root root4096 Oct 15  2014 certs        #證書文件存放位置,
drwxr-xr-x  2 root root4096 Oct 15  2014 crl          #證書吊銷列表存取文件
drwxr-xr-x. 2 root root 4096 Oct 15  2014 newcerts      #新建立證書存取位置
drwx------. 2 root root 4096 Oct 15  2014 private        #CA本身私鑰存儲位置

3)、建立CA本身的私鑰
[root@node-2 CA]# pwd
/etc/pki/CA
[root@node-2 CA]# (umask 077;openssl genrsa -out private/cakey.pem 2048)
Generating RSA private key, 2048 bit longmodulus
........................................................+++
..............+++
e is 65537 (0x10001)
[root@node-2 CA]# ll ./private/
total 4
-rw------- 1 root root 1675 Apr 22 22:23cakey.pem

4)、生成一個自簽署證書
此自簽署證書在/etc/pki/tls/openssl.cnf文件中定義必須放在CA目錄下叫cacert.pem;從私鑰中提取公鑰,並構建成證書籤署請求,而後讓CA給簽署;
格式:openssl req -new -x509-key  /etc/pki/CA/private/cakey.pem -out/etc/pki/CA/cacert.pem -days #
-x509:表示自簽署證書,不加表示證書籤署請求;
-key:從那個私鑰中自動提取出公鑰,並建立一個證書籤署請求;
-days:指明給本身簽署證書的有效期
12345678910111213141516171819202122 [root@node-2 CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days3360
You are about to be asked to enterinformation that will be incorporated
into your certificate request.
What you are about to enter is what is calleda Distinguished Name or a DN.
There are quite a few fields but you canleave some blank
For some fields there will be a defaultvalue,
If you enter '.', the field will be leftblank.
-----
Country Name (2 letter code) [XX]:CN            #國家代碼,必須使用兩位數字來描述
State or Province Name (full name) []:HA          #省名或州名
Locality Name (eg, city) [Default City]:ZZ          #城市名
Organization Name (eg, company) [DefaultCompany Ltd]:MagEdu  #組織名或公司名
Organizational Unit Name (eg, section)[]:Ops    #部門
Common Name (eg, your name or your server'shostname) []:www.magedu.com  #此項很重要,證書主題本身的名字,別人和你通訊是就使用此名字來聯繫你,然後你證書中的名字和通訊時所使用名字必需要保持一致;不然就認爲證書驗證沒法經過;
Email Address []:caadmin@magedu.com                    #主機的聯繫人
[root@node-2 CA]# ll
total 20
-rw-r--r--  1 root root 1395 Apr 22 22:40 cacert.pem
drwxr-xr-x  2 root root4096 Oct 15  2014 certs
drwxr-xr-x  2 root root4096 Oct 15  2014 crl
drwxr-xr-x. 2 root root 4096 Oct 15  2014 newcerts
drwx------. 2 root root 4096 Apr 22 22:23 private

注意:構建Ca是給通訊方簽發證書的

5)、生成相關的輔助文件
[root@node-2 ~]# cd /etc/pki/CA/
[root@node-2 CA]# ls
cacert.pem certs  crl  newcerts private
[root@node-2 CA]# touch index.txt
[root@node-2 CA]# echo 01 > serial
[root@node-2 CA]# cat serial
01

二、給節點發證書
操做步驟:
一、節點申請證書
在證書申請的主機上進行以下步驟;
(1)生成私鑰
(2)生成證書籤署請求;              
(3)把請求發送給CA;
二、CA簽發證書
(1)驗證請求者信息
(2)簽署證書
(3)把簽署好的證書發還給請求者
1)、以http目錄爲示例,本機給本地簽署證書:
123 [root@node-2 ~]# cd /etc/httpd/
[root@node-2 httpd]# mkdir ssl
[root@node-2 httpd]# cd ssl/

2)、生成節點私鑰:
12345678 [root@node-2 ssl]# (umask 077; openssl genrsa -out httpd.key 1024)
Generating RSA private key, 1024 bit longmodulus
....................++++++
......++++++
e is 65537 (0x10001)
[root@node-2 ssl]# ll
total 4
-rw------- 1 root root 891 Apr 23 08:19httpd.key
 
3)、生成簽署證書請求:
[root@node-2 ssl]# openssl  req -new -key httpd.key-out httpd.csr
You are about to be asked to enterinformation that will be incorporated
into your certificate request.
What you are about to enter is what is calleda Distinguished Name or a DN.
There are quite a few fields but you canleave some blank
For some fields there will be a defaultvalue,
If you enter '.', the field will be leftblank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:HA
Locality Name (eg, city) [Default City]:ZZ
Organization Name (eg, company) [DefaultCompany Ltd]:MagEdu
Organizational Unit Name (eg, section)[]:Ops
Common Name (eg, your name or your server'shostname) []:www.zh.com  #此名稱要和證書申請者的FQDN的保持一致
Email Address []:webadmin@zh.com
 
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
[root@node-2 ssl]# ls
httpd.csr httpd.key
#提示:以上的國家、省名、城市名要和CA的保持一致
三、CA簽署證書
[root@node-2 ssl]# openssl ca -in /etc/httpd/ssl/httpd.csr -out /etc/httpd/ssl/httpd.crt-days 3360
Using configuration from/etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 1(0x1)
Validity
Not Before:Apr 23 00:30:38 2015 GMT
Not After :Jul  4 00:30:38 2024 GMT
Subject:
countryName          = CN
stateOrProvinceName      = HA
organizationName        = MagEdu
organizationalUnitName      = Ops
commonName            =www.zh.com
emailAddress          =webadmin@zh.com
X509v3 extensions:
X509v3 BasicConstraints:
CA:FALSE
NetscapeComment:
OpenSSLGenerated Certificate
X509v3 SubjectKey Identifier:
C9:1A:C2:19:08:28:FF:1F:B4:85:90:32:00:E1:5B:E8:FF:6E:7E:95
X509v3Authority Key Identifier:
keyid:66:1E:36:DB:E7:40:30:ED:B1:04:24:86:11:08:73:0C:DF:5E:DD:52
 
Certificate is to be certified until Jul  4 00:30:38 2024 GMT (3360 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified,commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

操做過程遇到如下問題1:[root@node-2 ssl]# openssl ca -in/etc/httpd/ssl/httpd.csr -out /etc/httpd/ssl/httpd.crt -days 3360Using configuration from /etc/pki/tls/openssl.cnf/etc/pki/CA/index.txt:No such file or directory  #沒有/etc/pki/CA/index.txt文件unable to open '/etc/pki/CA/index.txt'139960522676040:error:02001002:systemlibrary:fopen:No such file or directory:bss_file.c:398:fopen('/etc/pki/CA/index.txt','r')139960522676040:error:20074002:BIOroutines:FILE_CTRL:system lib:bss_file.c:400:操做過程遇到如下問題2:[root@node-2 CA]# openssl ca -in/etc/httpd/ssl/httpd.csr -out /etc/httpd/ssl/httpd.crt -days 3360Using configuration from/etc/pki/tls/openssl.cnf/etc/pki/CA/serial:No such file or directory      #沒有/etc/pki/CA/serial文件error while loading serial number140170056320840:error:02001002:systemlibrary:fopen:No such file ordirectory:bss_file.c:398:fopen('/etc/pki/CA/serial','r')140170056320840:error:20074002:BIOroutines:FILE_CTRL:system lib:bss_file.c:400:四、查看節點所生成的文件:[root@node-2 ~]# cd /etc/httpd/ssl/[root@node-2 ssl]# lltotal 8-rw-r--r-- 1 root root  0 Apr 23 19:47 httpd.crt      #證書文件-rw-r--r-- 1 root root 676 Apr 23 08:22  httpd.csr      #證書請求文件-rw------- 1 root root 891 Apr 23 08:19  httpd.key      #私鑰文件

相關文章
相關標籤/搜索