OpenSSL

OpenSSL由三部分組成:

            libencrypto

            libssl

            openssl多用途命令行工具

加密算法和協議:

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

                    DES 3DES AES Blowfish Twofish IDEA RC6 CAST5

                    特性:

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

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

                    缺陷:

                        1、密鑰過多;

                        2、密鑰分發困難;

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

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

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

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

                    用途:

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

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

                        數據加密

                    算法:RSA, DSA, 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 19:51
下一篇 2017-05-30 21:35

相關推薦

  • mysql基礎概念筆記 part1

    mysql基礎概念筆記     part1#wmd-preview h1 { color: #0077bb; /* 將標題改為藍色 */} mysql基礎概念筆記     part1 mysql 基礎概念 基礎原理,邏輯架構,事務,并發控制,讀寫鎖 1、前言     作為一個運維…

    Linux干貨 2016-09-19
  • 編譯安裝dropbear和使用

    一、概念 Dropbear是一個相對較小的SSH服務器和客戶端。它運行在一個基于POSIX的各種平臺。 Dropbear是開源軟件,在麻省理工學院式的許可證。 Dropbear是特別有用的“嵌入”式的Linux(或其他Unix)系統,如無線路由器。 二、功能 dropbear實現完整的SSH客戶端和服務器版本2協議。它不支持SSH版本1 的向后兼容性,以節省…

    Linux干貨 2016-10-04
  • 集群-基礎知識(1)

    背景 隨著互聯網訪問量的急劇增加,單臺服務器的能力已嚴重不能滿足需求。則需要從兩個方面考慮提高服務能力:1、向上擴展,2、向外擴展 向上擴展的缺點: 1、造價高 2、隨著性能的提高,會在某個臨界點遇到瓶頸,導致性能隨后降低。 向外擴展的優點: 1、造價低 2、提供高并發能力和高可用性 3、可擴展性好。 分類 負載均衡集群(Load Balance) 高可用集…

    Linux干貨 2015-11-26
  • 01葵花寶典之Linux基礎知識

    linux, ifconfig, man, pwd, echo, date, hwclock, fhs

    2018-03-01
  • 第四周

    查看鏈接:http://note.youdao.com/noteshare?id=317ec635a5f28f2681421fd7c9a60f27

    Linux干貨 2016-09-19
  • shell三劍客之grep

    正則表達式是對字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個“規則字符串”,這個“規則字符串”用來表達對字符串的一種過濾邏輯。 給定一個正則表達式和另一個字符串,我們可以達到如下的目的: 1. 給定的字符串是否符合正則表達式的過濾邏輯(稱作“匹配”); 2. 可以通過正則表達式,從字符串中獲取我們想要的特定部分。 正…

    Linux干貨 2016-08-08
欧美性久久久久