中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

openssl

發布時間:2020-08-10 04:35:57 來源:網絡 閱讀:411 作者:syf151813262 欄目:安全技術

在現代互聯網中,安全是一個不容忽視的問題,說到安全就不得不涉及到加密,解密。現在只要我們數據在互聯網上傳播就避免不了一些有惡意企圖的人窺探,所以在網絡中傳播數據時首先要考慮幾個因素,對方的身份,數據的完整性,數據的私密性。

 

常用的密碼算法:對稱加密,公鑰加密,單向加密。

 

    對稱加密是加密和解密使用同一個秘鑰,將原始數據分塊進行加密。優點是加密速度快,常用于加密數據比較大的時候。其缺點是秘鑰無法安全的送到對方。如果密碼遺漏數據安全不復存在。常用的加密算法:DES3DESAESBlowfishTwofishIDEARC6CAST5

使用工具:openssl

    舉例:把qq.txt文件加密。

openssl enc -a -salt -des3 -in /tmp/qq.txt -out /tmp/qqs.txt   然后輸入2次自己定義的密碼。

-a : 表示已base64的方式加密。

-des3:加密算法。

openssl

此時查看加密后的qqs.txt

openssl

解密:openssl enc -d -salt -des3 -a -in /tmp/qqs.txt -out /tmp/qqj.txt

openssl

-d:解密。

在例子中可見,對稱加密和解密使用的同樣的方式,而且如果在網絡傳輸中傳輸密碼或密碼泄露數據也是不安全的。

 

單向加密:

    單向加密即加密運算后的數據是不可逆的,不能反向運算出原數據。一般通過散列函數計算,散列函數的主要任務用于計算數據的完整性。常用算法有:MD5SHA-1SHA256SHA384SHA512。其特點是輸入一樣輸出也是一樣。如果輸入發生任何改變,結果將引起巨大改變。無法通過輸出結果還原原來的數據,無論輸入多大,輸出結果都是相同的大小。

舉例:使用MD5算法計算qq.txt的結果。openssl dgst -md5 qq.txt

[root@localhost tmp]# openssl dgst -md5  qq.txt

MD5(qq.txt)=  cd7257236da80701dd11ce383644e213

[root@localhost tmp]# vim qq.txt

151515252:13523452345

455667678:45767687877

567787881:13456566767

667788931:15667676833

234457890:15899865663

567787881:13778798888

667788931:15678789904

234457890:15467689909

567791246:18755653256

234457890:15467685229

567791246:18758944576

d

                                                                                                                                   

"qq.txt" 12L, 244C written                                                                                        

[root@localhost tmp]# openssl dgst -md5  qq.txt

MD5(qq.txt)= c8fcbdb073a0381a8d2d9542dfc64800

[root@localhost tmp]#

由此可見,在文本中末尾添加了一個字符d,其結果與上一次大不相同。由于具備不可逆的特性所以常用于驗證文件是否發生過改變。而輸出的結果我們通常稱之為數據的指紋,或特征碼。

 

公鑰加密:

    公鑰加密也稱為非對稱加密,與對稱加密不同的是它有兩個秘鑰,即公鑰和私鑰,這兩個秘鑰成對出現如果使用公鑰加密數據解密必須用私鑰。用私鑰加密的數據解密要用其公鑰。因為它加密和解密使用不同的秘鑰所以稱之為非對稱加密。常結合其他加密方式組合使用。

生成自己的秘鑰對:

在當前目錄中生成一個2048位的秘鑰保存到mykey中,注意默認生成權限出屬主外賬戶有讀權限,要禁止其他用戶讀取需修改權限或者直接使用:(umask 077;openssl genrsa 2048 >mykey)

[root@localhost tmp]# openssl genrsa 2048  >mykey

Generating RSA private key, 2048 bit long  modulus

.................+++

..............................+++

e is 65537 (0x10001)

[root@localhost tmp]# ll

-rw-r--r-- 1 root root 1679 Sep 26 03:51  mykey

-rw-r--r-- 1 root root  242 Sep 26 02:54 qqj.txt

-rw-r--r-- 1 root root  358 Sep 26 02:49 qqs.txt

-rw-r--r-- 1 root root  244 Sep 26 03:31 qq.txt

提取公鑰:

[root@localhost tmp]# openssl rsa -in /tmp/mykey  -pubout

writing RSA key

-----BEGIN PUBLIC KEY-----

MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1CZOG8YAJ81strW7T9Sx

cdsdD9tc0wNk5Qv7qE2PyNAthCuQdernyWYbf0on6uOGVfiHu0djLc9mfbDlXV2q

Bu5WDS8Kh5RCFbTjeA35h+YGni16foQxa/U1QjijBK9Ju0BNQt/fblRsbjHR3W3g

0eUd5gJBgFf+p3W9FjR5S063ACIprVZF0u1Eu5lrOkKdtcHAXqSGQje70DCxJA3y

iMtcTxSwBl3YRTuu37GMYot5KVBKzxAfcs7xjB34qxremBZlrLB3Wv8mG1bFf3GH

siQjPtQ3gSig5spovPVccc5w4LglYE94OOa++hjf0btbBAqB9hET928cWZSGOuH+

9wIDAQAB

-----END PUBLIC KEY-----

[root@localhost tmp]#  

以上步驟完成公鑰和私鑰已創建完成。并且私鑰一定要保證其安全性。

 

以上三種加密方式各有特點,但也有各自的缺陷。如果單獨用于網絡數據加密仍然不可靠。但把他們組合在一起使用安全就有保障了。

 

首先發送方:

1、 把要發送的原文數據使用單向加密抽取出原文的特征碼,用來保證數據的完整性。

2、 發送方使用非對稱加密,即用自己的私鑰把原文的特征碼加密,加到原文后面。這樣一來就保證身份,接收方有發送方的公鑰收到數據后能正常用對方的公鑰解密得到特征碼即證明了數據發送方的身份。

3、 發送方再選擇一個密碼,用對稱加密方式對原文和加密過的特征碼一起再次進行加密。因為對稱加密方式比較快如果數據過大也不太影響。

4、 發送方把選擇的密碼用接收方的公鑰加密后一并把數據發給接收方。

 

接收方:

1、 接收方收到數據后首先使用自己的私鑰得到了一個密碼就是發送方打包的原數據和特征碼。

2、 使用得到的密碼打開發送方打包加密的原數據和特征碼。此時得到了原數據,只有了原數據并不能確定數據沒有被修改或替換過。此時要驗證數據的完整性

3、 接收方用發送方的公鑰解密加密過的特征碼,而后得到了原數據的特征碼。

4、 接收方用通樣的方式對原數據計算特征碼把得到的特征碼和解密后的特征碼進行比對如果一致說明數據沒有被修改過。如果不一致說明此信息不可靠。

總結整個過程:

    在過程中使用了三種加密方式組合,雙方通過非對稱加密驗證了彼此的身份,因為發送方的數據密碼使用了接收方的公鑰加密了,這個數據只能是接收方的私鑰才能解密,其他人得到了這些數據也是沒有用處。使用對稱加密對原數據進行加密使得原文得到加密。又通過單向加密的方式進行了特征碼的比對驗證了信息的可靠性。

下面用一張圖表示過程:

 openssl

在以上的過程當中接收方和發送方都事前有對方的公鑰且互相信任,但在互聯網當中我們又怎么保證對方公鑰的可信度,如果對方是一個冒名頂替的呢我們將無從獲知,所以我們需要一個可信的機構來保證,就好比我們生活當中一個人說他是張三住在甲街1號,我怎么知道他說的是真是假呢,我去派出所查一下,派出所說確實有個人叫張三住在甲街1號。那么我就認為他就是張三否則就不是。而在互聯網中這個派出所就是CA,它負責給互聯網上的主機簽發證書。而如果你想在互聯網上得到“信任就要先到CA那里注冊,CA核實你的身份信息然后提取信息的特征碼用CA自己的私鑰加密后發給你而這就是你的數字簽名。

有了簽名之后當我們需要與一個主機通訊的時候對方會發給我它的證書,這時我首先去用CA的公鑰解密證書,如果能夠解密說明證書是CA給頒發的,CA已經核實過他的身份和信息了我們認為對方是可靠的,但我們需要進一步證明證書是否在有效期內和是否是已經吊銷的證書,這個查詢就需要到CA那里查詢。當整個確認過程沒有問題之后通信才真正的開始。而以上的整個加密解密過程和CA的這種驗證機制行程了一個新的技術規范就是:PKIPublic.Key.Infrastructure)。

 

CA證書的這種機制不是一定要應用于大型互聯網中在自己的私有范圍內也可以使用,其中使用的工具就是openssl

建立私有CA

1、 生成秘鑰:

(umask077; openssl genrsa –out /etc/pki/CA/private/cakey.pem 2048)

[root@localhost  private]# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)

Generating  RSA private key, 2048 bit long modulus

...............+++

................+++

e  is 65537 (0x10001)

[root@localhost  private]#

 

2、 簽署請求:

[root@localhost  private]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out  /etc/pki/CA/cacert.pem -days 365

You  are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is  called a Distinguished Name or a DN.

There are quite a few fields but you can  leave some blank

For some fields there will be a default  value,

If you enter '.', the field will be left  blank.

-----

Country Name (2 letter code) [XX]:CN

State or Province Name (full name)  []:PEK  

Locality Name (eg, city) [Default  City]:PEK

Organization Name (eg, company) [Default  Company Ltd]:FF

Organizational Unit Name (eg, section)  []:FF

Common Name (eg, your name or your  server's hostname) []:ops

Email Address []:admin@admin.com

[root@localhost private]# ls  /etc/pki/CA/cacert.pem

/etc/pki/CA/cacert.pem

[root@localhost private]# ls /etc/pki/CA/

cacert.pem  certs   crl  newcerts  private

[root@localhost private]#

使用命令:openssl req-new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem –days365,發起證書簽署請求,然后會提示你填寫一些信息。

req:生成證書簽署請求;-news:新請求;-key  /path/to/keyfile:指定私鑰文件;                    -x509:生成自簽署證書; -days 365:有效天數,可自定義。

然后在CA目錄下新建2個文件,index.txt serial

然后:~]# echo 00 > seria

3、 簽署證書:

簽署請求生成的方法在文中提到過。不在重復說明,簽署證書命令:

openssl ca -in /tmp/mykey.csr -out /tmp/ff.com.crt -days 365

   -in:指明請求文件位置

   -out:指明輸出文件名和位置。

   -days:指明簽署有效期限。

 

 

[root@localhost CA]# openssl ca -in  /tmp/mykey.csr -out /tmp/ff.com.crt -days 365

Using configuration from  /etc/pki/tls/openssl.cnf

Check that the request matches the  signature

Signature ok

Certificate Details:

         Serial Number: 0 (0x0)

         Validity

            Not Before: Sep 26 12:22:03 2015  GMT

            Not After : Sep 25 12:22:03 2016  GMT

         Subject:

            countryName               = CN

            stateOrProvinceName       = PEK

            organizationName          = FF

             organizationalUnitName    = OPS

            commonName                = OPS

            emailAddress              = admin@ff.com

         X509v3 extensions:

            X509v3 Basic Constraints:

                CA:FALSE

            Netscape Comment:

                 OpenSSL Generated  Certificate

            X509v3 Subject Key Identifier:

                 12:2C:F0:DF:C1:99:08:88:73:BA:04:8E:C4:2F:26:20:52:F5:A2:13

            X509v3 Authority Key Identifier:

                 keyid:84:C4:2E:4A:ED:A6:9D:26:A1:80:BE:D2:47:7F:CC:D9:85:97:4D:19

 

Certificate is to be certified until Sep  25 12:22:03 2016 GMT (365 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

[root@localhost CA]#

[root@localhost CA]# cat serial

01

[root@localhost CA]# cat index.txt

V   160925122203Z       00  unknown    /C=CN/ST=PEK/O=FF/OU=OPS/CN=OPS/emailAddress=admin@ff.com

[root@localhost CA]

上圖中看到在index.txt.生成了簽署記錄.其他主機簽署是同樣的方式,只不過需要把請求通過一些途徑發送給CA

吊銷證書:當有主機秘鑰丟失或泄露為保證安全需要向CA申請吊銷證書。

1、 獲取要吊銷證書的序號和信息。

[root@localhost CA]# openssl x509 -in  /tmp/ff.com.crt -noout -serial -subject

serial=00

subject=  /C=CN/ST=PEK/O=FF/OU=OPS/CN=OPS/emailAddress=admin@ff.com

[root@localhost CA]#

2、 核實要吊銷證書是否與申請吊銷主機提供的信息是否一致。

3、 吊銷證書:openssl ca -revoke /etc/pki/CA/newcerts/00.pem

如果是第一次吊銷需生成吊銷證書的編號: echo 01 > /etc/pki/CA/crlnumber

4、 更新吊銷證書列表:openssl ca -gencrl -out ff.com.crl

查看crl文件:openssl crl -in /path/to/crl_FILE.crl -noout -text

 

[root@localhost crl]# openssl crl -in  ff.com.crl -noout -text

Certificate Revocation List (CRL):

         Version 2 (0x1)

     Signature Algorithm: sha1WithRSAEncryption

         Issuer:  /C=CN/ST=PEK/L=PEK/O=FF/OU=FF/CN=ops/emailAddress=admin@admin.com

         Last Update: Sep 26 12:45:50 2015 GMT

         Next Update: Oct 26 12:45:50 2015 GMT

         CRL extensions:

            X509v3 CRL Number:

                1

Revoked Certificates:

     Serial Number: 00

         Revocation Date: Sep 26 12:40:47 2015 GMT

     Signature Algorithm: sha1WithRSAEncryption

          b5:f4:9c:ec:3d:4a:e4:d1:1b:48:d4:a0:5e:06:4f:a0:ab:e6:

          76:de:62:f6:88:8e:cc:ec:b9:de:39:db:8c:a0:00:3e:57:41:

          73:09:90:e9:64:4c:0a:01:70:0b:ac:43:f2:28:0a:1a:77:c9:

          b2:20:ef:30:d6:3d:5b:7b:a0:5a:5d:dc:1a:95:63:4b:e8:11:

          e9:f6:53:8b:42:83:cb:34:cc:cc:25:94:de:f9:54:77:a4:1f:

          6a:12:27:77:e2:fc:48:3b:56:58:08:f2:47:0c:f2:4d:52:ed:

          0e:ba:e6:76:47:d5:d5:6f:de:44:5d:73:3d:ff:14:13:b1:d0:

          aa:da:ee:6e:4d:84:d7:34:e9:4f:0f:fe:aa:9f:da:6e:a9:bd:

          2b:aa:3e:82:2b:91:f4:37:bd:38:08:99:94:95:0b:98:3b:93:

          81:bf:cc:6a:80:31:f5:73:4f:45:e3:5f:53:25:a3:d9:95:03:

          c7:27:e8:44:c1:97:9d:cb:8d:26:9d:69:d3:0d:ba:6d:a8:1b:

          6f:47:e9:fb:9e:ad:9c:f5:e9:9c:b0:50:be:e2:35:44:2b:c5:

          6b:c6:36:3d:52:e5:d1:5a:6c:56:13:57:6f:67:e5:5b:ba:1d:

          5c:d4:5b:81:9b:e7:c2:9e:99:c7:7b:ea:48:ff:3c:70:5d:96:

          50:20:18:1a

[root@localhost crl]#

crt證書文件可以配置到http服務器當中,這樣就可以用https的訪問站點,實現交換數據的全。

至此私有CA搭建和證書簽署已經完成。此文只為個人知識總結便于以后查閱用。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

洪洞县| 吉首市| 桦南县| 西盟| 藁城市| 迁安市| 揭东县| 苍南县| 平乡县| 宾阳县| 鄂伦春自治旗| 成都市| 启东市| 达孜县| 泗洪县| 邻水| 磐石市| 资溪县| 鲁甸县| 武威市| 元江| 灵寿县| 轮台县| 和林格尔县| 成都市| 花垣县| 济宁市| 吉木乃县| 苏尼特左旗| 青岛市| 运城市| 承德市| 名山县| 呼伦贝尔市| 东丰县| 稻城县| 达拉特旗| 渭源县| 普陀区| 子长县| 敦化市|