OpenSSL

OpenSSL由三部分組成:

            libencrypto

            libssl

            openssl多用途命令行工具

加密算法和協議:

            對稱加密:加密和解密使用同一個密鑰;

                    DES 3DES AES Blowfish Twofish IDEA RC6 CAST5

                    特性:

                        1、加密、解密使用同一個密鑰;

                        2、將原始數據分割成為固定大小的塊,逐個進行加密;

                    缺陷:

                        1、密鑰過多;

                        2、密鑰分發困難;

            公鑰加密:密鑰分為公鑰與私鑰

                    公鑰:從私鑰中提取產生;可公開給所有人;public key

                    私鑰:通過工具創建,使用者自己留存,必須保證其私密性;secret key

                    特點:用公鑰加密的數據,只能使用與之配對兒的私鑰解密;反之亦然;

                    用途:

                        數字簽名:主要在于讓接收方確認發送方的身份;

                        密鑰交換:發送方用對方公鑰加密一個對稱密鑰,并發送給對方;

                        數據加密

                    算法:RSADSA, ELGamal, DSS, DSA

            單向加密:即提出數據指紋;只能加密,不能解密;

                    特性:定長輸出、雪崩效應;

                    功能:完整性;

                    算法:

                        md5Message Digest 5, 128bits

                        sha1Secure Hash Algorithm 1, 160bits

                        sha224, sha256, sha384, sha512

            密鑰交換: IKEInternet Key Exchange

                    公鑰加密

                        DHDeffie-Hellman

                        Ap, g

                        Bp, g

                        A: x

                        –> p^x%g ==> B

                        A: (p^y%g)^x=p^yx%g

                        B: y

                        –> p^y%g ==> A => (p^y%g)^x=p^xy%g

                        B: (p^x%g)^y=p^xy%g

PKIPublic Key Infrastructure

            公鑰基礎設施:

                    注冊機構:RA

                    證書吊銷列表:CRL

                    證書存取庫:

            證書的結構以及認證協議標準:

                    版本號

                    序列號

                    簽名算法ID

                    發行者名稱

                    有效期限

                    主體名稱

                    主體公鑰

                    發行者的惟一標識

                    主體的惟一標識

                    擴展

                    發行者的簽名

                    SSLSecure sockets Layer

                    TLS: Transport Layer Security

            分層設計:

                    1、最底層:基礎算法原語的實現,aes, rsa, md5

                    2、向上一層:各種算法的實現;

                    3、再向上一層:組合算法實現的半成品;

                    4、用各種組件拼裝而成的各種成品密碼學協議軟件;

openssl:許多子命令,分為三類:

                   標準命令

                   消息摘要命令(dgst子命令)

                   加密命令(enc子命令)

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

                        對稱加密:

                            工具:openssl  enc,  gpg

                            支持的算法:3des, aes, blowfish, towfish

                            enc命令:

                                加密:~]# openssl  enc  -e  -des3  -a  -salt  -in fstab   -out fstab.ciphertext

                                解密:~]# openssl  enc  -d  -des3  -a  -salt  -out fstab   -in fstab.ciphertext

                        單向加密:

                                工具:openssl dgst, md5sum, sha1sum, sha224sum, …

                                dgst命令:

                                        ~]# openssl  dgst  -md5  /PATH/TO/SOMEFILE

                        生成用戶密碼:

                                工具:passwd, openssl  passwd

                                 openssl  passwd  -1  -salt  SALT

                        生成隨機數:

                                工具:openssl  rand

                                    ~]# openssl  rand  -hex  NUM

                                    ~]# openssl  rand  -base  NUM

                        公鑰加密:

                                加密解密:

                                算法:RSA,ELGamal

                                工具:openssl  rsautl, gpg

                                數字簽名:

                                算法:RSA, DSAELGamal

                                密鑰交換:

                                算法:DH

                                生成密鑰:

                                          生成私鑰: ~]# (umask 077;  openssl  genrsa  -out  /PATH/TO/PRIVATE_KEY_FILE   NUM_BITS)

                                          提出公鑰: ~]#  openssl  rsa  -in  /PATH/FROM/PRIVATE_KEY_FILE  -pubout

                        隨機數生成器:

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

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

                                                           偽隨機數不安全;

                                        熵池中隨機數的來源:

                                                           硬盤IO中斷時間間隔;

                                                           鍵盤IO中斷時間間隔;

CA:公共信任的CA,私有CA

               建立私有CA

                       openssl

                       openCA

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

            構建私有CA:

                    在確定配置為CA的服務上生成一個自簽證書,并為CA提供所需要的目錄及文件即可;

                    步驟:

                            (1) 生成私鑰;

                                ~]# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)

                            (2) 生成自簽證書;

                                ~]# openssl,req  -new  -x509  -key  /etc/pki/CA/private/cakey.pem  -out    /etc/pki/CA/cacert.pem -days 3655

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

                                                    -x509:生成自簽格式證書,專用于創建私有CA時;

                                                    -key:生成請求時用到的私有文件路徑;

                                                    -out:生成的請求文件路徑;如果自簽操作將直接生成簽署過的證書;

                                                    -days:證書的有效時長,單位是day

                            (3) CA提供所需的目錄及文件;

                                    ~]# mkdir  -pv  /etc/pki/CA/{certs,crl,newcerts}

                                    ~]# touch  /etc/pki/CA/{serial,index.txt}

                                    ~]# echo  01 > /etc/pki/CA/serial

                    要用到證書進行安全通信的服務器,需要向CA請求簽署證書:

                            步驟:(以httpd為例)

                            (1) 用到證書的主機生成私鑰;

                                    ~]# mkdir  /etc/httpd/ssl

                                    ~]# cd  /etc/httpd/ssl

                                    ~]# (umask  077; openssl  genrsa -out  /etc/httpd/ssl/httpd.key  2048)

                            (2) 生成證書簽署請求

                                    ~]# openssl  req  -new  -key  /etc/httpd/ssl/httpd.key  -out /etc/httpd/ssl/httpd.csr  -days  365

                            (3) 將請求通過可靠方式發送給CA主機;

                            (4) CA主機上簽署證書;

                                    ~]# openssl ca  -in  /tmp/httpd.csr  -out  /etc/pki/CA/certs/httpd.crt  -days  365

                    查看證書中的信息:

                            ~]# openssl  x509  -in /etc/pki/CA/certs/httpd.crt  -noout  -serial  -subject

                    吊銷證書:

                             步驟:

                                (1) 客戶端獲取要吊銷的證書的serial(在使用證書的主機執行):

                                 ~]# openssl  x509  -in /etc/pki/CA/certs/httpd.crt  -noout  -serial  -subject

                                (2) CA主機吊銷證書

                                    先根據客戶提交的serialsubject信息,對比其與本機數據庫index.txt中存儲的是否一致;

                                    吊銷:

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

                                 其中的SERIAL要換成證書真正的序列號;

                                (3) 生成吊銷證書的吊銷編號(第一次吊銷證書時執行)

                                            # echo  01  > /etc/pki/CA/crlnumber

                                (4) 更新證書吊銷列表

                                            # openssl  ca  -gencrl  -out  thisca.crl

                                        查看crl文件:

                                            # openssl  crl  -in  /PATH/FROM/CRL_FILE.crl  -noout  -text

原創文章,作者:忠神通,如若轉載,請注明出處:http://www.www58058.com/77178

(0)
忠神通忠神通
上一篇 2017-05-30
下一篇 2017-05-30

相關推薦

  • 【招聘需求】高級運維工程師/上海虹口區/待遇20k左右

    上海虹口區/待遇20k左右 有意向者發簡歷至@管家郵箱 郵件名是:[求職]Net-姓名-花名-工作年限 崗位職責:1、降低技術壁壘,建設運維工具、運維平臺,實現運維自動化,包括 運維自動化、配置管理中心等。2、具備前瞻性,帶領運維技術團隊完成業務支撐,負責定位、分析、跟蹤和相協調處理重大事故,使之對業務影響降至最低。3、技術支持、培訓、知識庫建設。4、運維接…

    Linux干貨 2015-03-12
  • 利用heartbeat構建高可用http

    一、實驗準備:  1)實驗環境:          2)同步時間;確??梢允褂弥鳈C名通信;確??梢允褂胹sh秘鑰方式進行彼此登錄;由于是兩臺設備,需要仲裁;  確??梢允褂弥鳈C名通信 web1修改hosts文件如下: 172.16.2.12 web1.linux.com…

    Linux干貨 2015-07-08
  • Linux文本編輯器之 vi vim 詳談

    Linux文本編輯器之 vi vim         vi :Visual Interface,它與sed不同,sed是功能比較簡單的行編輯器,而vi是一個功能強大的全屏文本編輯器,它還有一個增強版vim (Vi IMproved).在vim里,有很多功能強大的文本編輯…

    Linux干貨 2016-08-15
  • 正則表達式及grep用法總結

    描述: grep: Global search REgular expression and Print outthe line. 作用:文本搜索工具,根據用戶指定的“模式”對目標文本逐行進行匹配檢查;打印匹配到的行; 模式:由正則表達式字符及文本字符所編寫的過濾條件 語法格式:grep [OPTIONS] PATTERN [FILE…] OPT…

    Linux干貨 2016-08-08
  • Python函數式編程指南:目錄和參考

    目錄: 概述 這一篇簡要地描述了函數式編程和一些相關的概念。 函數 這一篇展示了關于函數可能不常用到的部分特征并嘗試引導諸位使用函數式的思維解決問題,并介紹了諸多有用的內建函數。 迭代器 這一篇介紹了迭代器以及Python對迭代器的語法級的支持,還包括了內置模塊itertools的介紹。 生成器 這一篇介紹了自定義的迭代器——生成器,并展示了生成器的用途和使…

    Linux干貨 2015-03-11
  • 編譯安裝httt服務

    1 軟件下載地址:http://httpd.apache.org/ 2 將下載好的httpd-2.2.34.tar.bz2包解壓到 /usr/local/src/httpd-2.2.34–  # tar xvf httpd-2.2.34.tar.bz2 3 編譯安裝http,指定安裝路徑: –prefix=/app/http…

    Linux干貨 2017-08-05
欧美性久久久久