1. 程式人生 > >網絡通信安全基礎和OpenSSL

網絡通信安全基礎和OpenSSL

openssl 建立私有CA

一、數據安全的定義

數據安全由NIST(美國國家標準技術研究研究)提出, 主要有三個方面:

  • 保密性:
    • 數據保密性
    • 數據隱私性
  • 完整性
    • 數據完整性
    • 系統完整性
  • 可用性

二、數據所存在的風險

數據最主要的風險是安全攻擊, 分為主動攻擊和被動攻擊:

  • 被動攻擊: 竊聽
  • 主動攻擊: 偽裝, 重放, 消息篡改, 拒絕服務

三、目前常用的安全機制

  1. 加密
  2. 數字簽名
  3. 訪問控制
  4. 數據完整性校驗
  5. 認證交換
  6. 流量填充
  7. 路由控制
  8. 公證

三、安全服務

安全服務主要有以下幾個特點:

  • 認證
  • 訪問控制
  • 數據保密性
    • 連接保密性
    • 無連接保密性
    • 選擇域保密性
    • 流量保密性
  • 數據完整性
  • 不可否認性

四、現有的密碼算法和協議

4.1 對稱加密

加密和解密使用同一個密鑰的方法就是對稱加密, 現目前流行的對稱加密算法有如下:

  • DES: Data Encryption Standard, 03年算法已經被破解, 現在未使用
  • 3DES: Triple Data Encryption Standard
  • AES: Advanced Encryption Standard, 支持的秘鑰長度有128 bits, 192 bits, 258 bits, 384 bits, 512 bits
  • Blowfish
  • Twofish
  • IDEA
  • RC6
  • CAST

對稱加密的特性:

  • 加密、解密使用同一個密鑰
  • 將原始數據分割成固定大小的塊, 逐個進行加密

對稱加密的缺陷:

  • 密鑰過多
  • 密鑰分發

4.2 公鑰加密

公鑰加密的秘鑰是成對出現, 一個公鑰(Pubkey), 一個私鑰(Secret key); 公鑰可以公開給任何人, 自己留存私鑰, 但是必須要保證秘鑰的私密性.

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

公鑰加密的用途:

  • 數字簽名: 主要在於讓接收方確認發送方的身份
  • 秘鑰交換: 發送方用接收方的公鑰加密一個對稱秘鑰, 並發送給對方
  • 數據加密

4.3 單向加密

只能加密, 不能解密的加密方法稱之為單向加密, 單向加密是通過提取數據指紋來生成一串隨機子串.

單向加密具有如下特點:

  • 定長輸出
  • 雪崩效應

單向加密算法有如下:

  • md5: 128 bits
  • sha1: 160 bits
  • sha224
  • sha256
  • sha384
  • sha512

單向加密主要用於驗證數據的完整性.

4.4 密鑰交換

密鑰交換(Internet Key Exchange), 可以使用公鑰加密和Diffie-Hellman算法進行.

4.5 認證協議

五、PKI

PKI(Public Key Infastructure)是一種遵循標準和利用公鑰加密技術為電子商務的開展提供一套安全基礎平臺的技術和規範, 由以下幾個組件組成:

  • 證書簽發機構: CA
  • 註冊機構: RA
  • 證書吊銷列表: CRL
  • 證書存取庫

PKI的x.509標準定義了證書的結構, 以及證書的協議標準, 如下所示:

  • 版本號
  • 序列號
  • 簽署算法ID
  • 發行者名稱
  • 有效期限
  • 主體名稱
  • 主體公鑰
  • 發行者唯一標識
  • 主體的唯一標識
  • 擴展信息
  • 發行者簽名

六、SSL/TLS

SSL(Secure Socket Layer)中文名是安全套接字層, 由網景(Netscape)公司設計, 用於對互聯網上發送的數據進行加密, 防止數據在傳輸過程中被嗅探和篡改; 由於SSL的廣泛應用, 在1999年由IETF(The Internet Engineering Task Force, 國際互聯網工程任務組)將其標準化, 標準化之後改名為TLS(Transport Layer Security, 傳輸層安全協議), SSL的發展歷程如下:

  • 1995年SSL 2.0誕生
  • 1996年SSL 3.0誕生
  • 1999年TLS 1.0誕生
  • 2006年TLS 1.1誕生, RFC文檔編號為RFC 4346
  • 2008年TLS 1.2誕生
  • 2015年TLS 1.3誕生

SSL/TLS采用分層設計, 總共分四層, 最底層為基礎算法原語的實現(aes, rsa, md5); 向上一層為各種算法的實現; 在向上一層為組合算法實現的變成品; 最頂層為用各種組件拼接二次的種種成品密碼學協議/軟件(TLS, SSH).

七、OpenSSL

OpenSSL是SSL的開源實現, 由三個組件組成:

  • openssl: 多用途命令行工具
  • libcrypto: 公共加密庫
  • libssl: 庫, 實現了ssl以及tls的功能

7.1 openssl命令

openssl - 多用途命令行工具

# 用法: openssl command [command_options] [command_ args]
# 查看程序版本號: openssl version
[root@docker-package ~]# openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017

openssl的命令分為三類, 標準命令、消息摘要命令和加密命令, 可以直接使用man openssl命令查看相關說明.

  • 對稱加密
    工具: oepnssl enc
    算法: 3des, aes, blowfish, twofish
# enc命令:
# 加密: oepnssl enc -e 加密算法 -a -salt -in /PATH/TO/FILE -out /PATH/TO/FILE.OUT
    # 加密算法: 使用oepnssl enc ?查看
[root@docker-package ~]# openssl enc -e -aes256 -salt -in /etc/fstab -out /tmp/fstab.cipher
enter aes-256-cbc encryption password: # 輸入密碼
Verifying - enter aes-256-cbc encryption password: # 再次輸入密碼
[root@docker-package ~]# cat /tmp/fstab.cipher
Salted__$?B8h?tR‘Bnd)t?bv;|ΖH=1PW<?o&CP‘?+}f_Jvxx.T)?6(M{
                                                                         l_8B_AULfc}1B$?6Y"Ok

# 解密: openssl enc -d 加密算法 -a -salt -in /PATH/TO/FILE -OUT /PAHT/TO/FILE.OUT
    # 加密用的什麽算法, 解密就用什麽算法
[root@docker-package ~]# openssl enc -d -aes256 -salt -in /tmp/fstab.cipher -out /tmp/fstab
enter aes-256-cbc decryption password: # 輸入加密時使用的密碼
[root@docker-package ~]# cat /tmp/fstab

#
# /etc/fstab
# Created by anaconda on Wed Jul  5 16:40:52 2017
#
# Accessible filesystems, by reference, are maintained under ‘/dev/disk‘
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos_docker--package-root /                       xfs     defaults        0 0
UUID=ed124d13-489a-40dd-b64b-a64a26bff6c5 /boot                   xfs     defaults        0 0
/dev/mapper/centos_docker--package-swap swap                    swap    defaults        0 0
  • 單向加密:
    工具: openssl dgst
    算法: md5sum, sha1sum, sha224sum, sha246sum, ...
# 用法: oepnssl dgst 加密算法 FILE
[root@docker-package ~]# openssl dgst -sha512 /etc/fstab 
SHA512(/etc/fstab)= 69005c142d6b7d0cd37433c17709baa65b843da2fd242d5ceef135c57565a67a683064d7b83da19bd9ea4cb0553eb0a3a81e8639d977fcd515f2850fdff7929d
  • 生成用戶密碼:
    工具: openssl passwd
# 用法: openssl passwd [OPTIONS] [PASSWORDS]
    # OPTIONS:
        # -crypt: 標準unix密碼算法, 默認
        # -1: 基於MD5的密碼算法
        # -slat string: 使用私有的salt
        # 更多請自行man

# 在最後直接更上密碼會直接返回加密後的密碼, 不跟上密碼則會進入交互式的密碼輸入
[root@docker-package ~]# openssl passwd newmedia
nECdgB7ycMZRI

[root@docker-package ~]# openssl passwd
Password: 
Verifying - Password: 
uMYOK7Q9rexkY

[root@docker-package ~]# openssl passwd -1 -salt sdfjle newpass
$1$sdfjle$rFYuazowo.o0yWgnNrhdL/
  • 生成隨機數:
    工具: openssl rand
# 用法: openssl rand -base64|-hex NUM(字節數, -hex時, 每個字符4位, 出現的字符數為NUM*2)
[root@docker-package ~]# openssl rand -base64 32
P4kboBNrBYyKoJ8T8ISZxlcbjKY2Jd81qyxFLBbV0Io=

[root@docker-package ~]# openssl rand -hex 18   
77e90f2e4f136dbcd4e8819c636c77d0e17a

# 在上一個生成用戶密碼的示例中的salt就可以用隨機數來生成
[root@docker-package ~]# openssl passwd -1 -salt $(openssl rand -base64 6)
Password: 
$1$u1ieZgLy$DXFW2JjJPWWS2iD45Kfbj.
  • 公鑰加密:
    工具: openssl rsautl, openssl genrsa, openssl rsa
    算法: RSA, ELGamal
    數字簽名算法: RSA, DSA, ELGamal
    密鑰交換算法: dh
    RSA: 一種非對稱加密算法
    DSA: Digital Signature Algorithm, 數字簽名算法
    DSS: Digital Signature Standard, 數字前面標準
# 生成密鑰對: openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS
[root@docker-package ~]# openssl genrsa -out /tmp/mykey.pri 2048
Generating RSA private key, 2048 bit long modulus
........+++
....+++
e is 65537 (0x10001)

[root@docker-package ~]# cat /tmp/mykey.pri 
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAusWeo507dh7PcXyvEejKEd5ABGWhRlNwitjWsuf6rdEMpTM/
QO95QgzU39/HZfOSgnjBibOYNc/g7jvKGbY6JbRtdmvDIjM6HtZo+tsY1zx3kC3q
h2iZyM2dlVwLzbnnmwTFgugwK015nkd1CQ62pVHvZRBFn9XvZaVfDbk1c4aAHKW7
JX8CRGNi4GVJSG1Tn5sPRA8prcI2Ms/SOChzrAt7WcyidKjTrtBJ0vrET9vgF5re
FmfE9jEfJZjRRkJu4T09thTCwHlZfcEmUYFLwNzGWhoPmMOq1BU58wR+k1paRZ4Q
0/Whl4Lp/8DJf/0HlgDlpAUMf/eO9MiWFhnFQQIDAQABAoIBAH6HTpds91FoQgSS
AVBSskI0nI3eA8nO0RlfGOQOwAZs7vIjq6BkG3Ohmb0orr7kqcZ15DdTUbRy5eC+
5IVSrEXK27Uz//f1WFR30JrRPxzhO+aTFKUzOauNkEoVF3IBlWOxcdTjU26ih9ew
dRrzusx4m4ON6H0Fw67Kv4BejlV6CpxmkHFH89/8D//CJVm2DFd2WjKFpEfeteGu
GFZUvdAXfMrLDGADo9w78F9viMrlRANRR9u8NSwdw/dtfJuNQ3qeOmN9ZXOgOpZG
1fQ1W222gVM63trsiaZeE+zduk9+K59JG9y5NDOKVOFC7TavmK8FdWRjHVL7j5C0
UylIMxkCgYEA3HgOegkRLJTKnlWPzyyj1lw7QMFnxuw4fisPgmHmuHawiFL7PV8d
xREy40PnYx88ZEYfEOsYq//5IiZc1E1r+ET8Ts2Oj3BkR6PgrEvQGNJlDQspQxqZ
Bunls+hcQY9ULwiyQFHTdMoJ+av2Nds8A1q9AHNk4CrSar2WmTMPsEMCgYEA2N9R
GZpnI7NbR2i4o/WM3XF8pnpCawQJn02lqUP6XsBMJgr1eM8ylXvWsDe7hACyCJM8
11ibQu/EUkITxpS0qC0BcYiRODsqPckIKDgpEK/KllJXaRZ2Wz8BZMoOf27sZl2t
8y+pYgq0XGto+m5UXXxrpNSY1DRAJXiYGtxmjisCgYEAnEzJBp9y+4Yo94N1Rs1B
AfG1WD1FU3OYwWnJvwelSFVs5djeoS3Tryh4SUKUwmMcr4I++AGUJix89Ub5PNH+
n65YqY11ah+mGFwIJl5BE7flSBAHmrk6j/o2jQtIjHoOlqG1rX/VR9EMrWLKVHgu
3bnwkGc+tuXk8yOhps7aan0CgYBEdpMyovSmZ4uMSnnngK/8hEQWhggLopWrDacb
fVM/sDMZ22HMxpQwbozCyoVO0a1iWaDeVqGFCw4N7cAyc2VopfSLs9IsTzkxkhIa
KEiGdQheVhY0HZw1h/lXqRXUkt7cHfy5BbXSNpDjkCDu1f+aF5ofyeGJNAmACsbx
y9wwSwKBgCNiFDKDb3EekPUTfosmENGiWkCo+Q+f/Rr8PBUM7BAdFhDr3k5k+07W
l+Yxfm6qz+I/sC6I1wrozhFWabeRfAMY7e5KYn5z027KAFOaZ4L9XgZrojg/vyPc
lqjqodTuCS3YynEwk5AZLa4Ym24qtyzBEkl+afZRlmYr9wIV61O8
-----END RSA PRIVATE KEY-----

# 提取出公鑰: openssl rsa -in /PATH/TO/PRIVATEKEY.FILE -pubout
[root@docker-package ~]# openssl rsa -in /tmp/mykey.pri -pubout -out /tmp/mykey.pub
writing RSA key

[root@docker-package ~]# cat /tmp/mykey.pub
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAusWeo507dh7PcXyvEejK
Ed5ABGWhRlNwitjWsuf6rdEMpTM/QO95QgzU39/HZfOSgnjBibOYNc/g7jvKGbY6
JbRtdmvDIjM6HtZo+tsY1zx3kC3qh2iZyM2dlVwLzbnnmwTFgugwK015nkd1CQ62
pVHvZRBFn9XvZaVfDbk1c4aAHKW7JX8CRGNi4GVJSG1Tn5sPRA8prcI2Ms/SOChz
rAt7WcyidKjTrtBJ0vrET9vgF5reFmfE9jEfJZjRRkJu4T09thTCwHlZfcEmUYFL
wNzGWhoPmMOq1BU58wR+k1paRZ4Q0/Whl4Lp/8DJf/0HlgDlpAUMf/eO9MiWFhnF
QQIDAQAB
-----END PUBLIC KEY-----

# 對文件簽名, 文件內容不能太長
[root@docker-package ~]# echo "hello" > /tmp/fstab

# 將以16進制格式輸出
[root@docker-package ~]# openssl rsautl -sign -inkey /tmp/mykey.pri -in /tmp/fstab -hexdump
0000 - 6f 6c c5 ca 30 c0 f3 fd-fd 8d 7f da 43 80 12 e2   ol..0.......C...
0010 - 28 cf 29 88 10 d9 3a 31-70 e2 bc 48 7f 20 5a 09   (.)...:1p..H. Z.
0020 - c3 f8 cd 35 6b e0 f6 77-f2 45 38 16 95 b9 62 5d   ...5k..w.E8...b]
0030 - 7d ac 4e 0f f9 9a 47 42-cd 99 ea 41 f9 c3 80 02   }.N...GB...A....
0040 - 74 a3 ae 51 e3 51 13 a3-1e 48 ee f7 63 9e 34 84   t..Q.Q...H..c.4.
0050 - f7 1b 29 cf 14 c8 bc a9-b9 97 6d f2 7e 72 05 f2   ..).......m.~r..
0060 - 33 f6 27 f6 34 34 ab 65-0b a8 a7 8b 84 48 38 fc   3.‘.44.e.....H8.
0070 - 21 48 e3 78 9d 1e b3 53-e1 07 21 25 2b 11 cf cb   !H.x...S..!%+...
0080 - 74 4e 3e 49 0e 7c 89 4c-78 5b 3f 2c 5a 6a b3 b2   tN>I.|.Lx[?,Zj..
0090 - fb f1 72 95 9a 9a 0b 74-21 c5 8f 22 f4 e6 56 3f   ..r....t!.."..V?
00a0 - 4d d5 1e 16 bb 21 73 52-7a 3e 15 3b e9 3e ea 62   M....!sRz>.;.>.b
00b0 - ad 74 21 7f 4a bd 6e 41-0b f7 33 08 4b 7b ba a7   .t!.J.nA..3.K{..
00c0 - 66 e1 ae 47 10 f1 95 d6-40 6c 77 36 1c 80 54 b4   [email protected].
00d0 - 27 63 69 89 09 9c e1 f4-5a f9 b7 50 a4 3e 03 26   ‘ci.....Z..P.>.&
00e0 - 12 06 0f f7 70 b6 df 4b-d7 7b cc 07 22 b7 dd b0   ....p..K.{.."...
00f0 - 5b ef ea 54 3d 70 07 e4-ca e3 a6 fc ce ed 35 40   [..T=p........5@

# 輸出到自定文件
[root@docker-package ~]# openssl rsautl -sign -inkey /tmp/mykey.pri -in /tmp/fstab -out /tmp/fstab.s

# 驗證簽名
[root@docker-package ~]# openssl rsautl -verify -inkey /tmp/mykey.pri -in /tmp/fstab.s   
hello

# 公鑰加密
[root@docker-package ~]# openssl rsautl -encrypt -pubin -inkey /tmp/mykey.pub -in /tmp/fstab -out /tmp/fstab.lock
[root@docker-package ~]# cat /tmp/fstab.lock
kn&
O Z`%1?fffN
rh?|1|7xjFs#P6q&`2?b

# 私鑰解密
[root@docker-package ~]# openssl rsautl -decrypt -inkey /tmp/mykey.pri -in /tmp/fstab.lock 
hello

[root@docker-package ~]# openssl rsautl -decrypt -inkey /tmp/mykey.pri -in /tmp/fstab.lock -out /tmp/fstab1
[root@docker-package ~]# cat /tmp/fstab1
hello

7.2 建立私有CA

建立私有CA有兩個工具可以使用:

  • OpenCA: openssl的二次封裝, 用於建立私有CA
  • openssl: 可直接用於建立私有CA

7.2.1 證書申請及簽署步驟

證書申請及簽署總共有四步:

  • 生成證書申請請求
  • RA核驗
  • CA簽署
  • 獲取證書

7.2.2 創建私有CA

openssl的配置文件定義了CA的位置, 證書存放路徑和默認加密算法類型等, 路徑為/etc/pki/tls/openssl.conf

# 創建所需要的文件, 僅第一次需要
[root@docker-package CA]# touch index.txt
[root@docker-package CA]# echo 01 > serial

# 生成證書
[root@docker-package CA]# (umask 077; openssl genrsa -out /etc/pki/CA/private/testcert.pem 2048)
Generating RSA private key, 2048 bit long modulus
.............................................................................................................+++
....................................................+++
e is 65537 (0x10001)

# 證書自簽
[root@docker-package CA]# openssl req -new -x509 -key /etc/pki/CA/private/testcert.pem -days 365 -out /etc/pki/CA/testcacert.pem  
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) []:SiChuan
Locality Name (eg, city) [Default City]:Chengdu
Organization Name (eg, company) [Default Company Ltd]:HuaQiYun
Organizational Unit Name (eg, section) []:Ops
Common Name (eg, your name or your server‘s hostname) []:ca.leistudy.com
Email Address []:mail.leistudy.com

    # -new: 生成新證書簽署請求
    # -509: 專用於CA生成自簽證書
    # -key: 生成 請求時用到的私鑰文件
    # -days n: 證書的有效期限
    # -out /PATH/TO/SOMECERTFILE: 證書的保存路徑

# 用到證書的主機生成證書請求
[root@docker-package CA]# cd /etc/httpd/
[root@docker-package httpd]# mkdir ssl
[root@docker-package httpd]# cd ssl/
[root@docker-package ssl]# ls
[root@docker-package ssl]# (umask 077; openssl genrsa -out httpd.key 2048)
Generating RSA private key, 2048 bit long modulus
...............................+++
..................................+++
e is 65537 (0x10001)

[root@docker-package ssl]# openssl req -new -key httpd.key -days 365 -out httpd.csr
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) []:SiChuan
Locality Name (eg, city) [Default City]:Chengdu
Organization Name (eg, company) [Default Company Ltd]:Mycompany
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server‘s hostname) []:www.leistudy.com
Email Address []:httpadmin.leistudy.com

Please enter the following ‘extra‘ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

# 把請求文件傳輸給CA
[root@docker-package ssl]# scp httpd.csr [email protected]:/tmp/
# NOTE: 這裏測試用的scp, 不代表一定使用此方式

# 查看證書信息
openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject

# 簽署證書, 並將證書發還給客戶端
[root@docker-package tmp]# openssl ca -in /tmp/httpd.csr -out /tmp/httpd.crt -days 365
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: Mar 27 06:48:43 2018 GMT
            Not After : Mar 27 06:48:43 2019 GMT
        Subject:
            countryName               = CN
            stateOrProvinceName       = SiChuan
            organizationName          = HuaQiYun
            organizationalUnitName    = IT
            commonName                = www.leistudy.com
            emailAddress              = httpadmin.leistudy.com
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            Netscape Comment: 
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier: 
                5F:35:94:FA:4F:6B:CE:FF:24:C6:ED:E8:6D:A6:78:0B:88:09:59:92
            X509v3 Authority Key Identifier: 
                keyid:53:3D:29:41:A5:1A:2E:83:2B:86:39:14:C9:6C:3C:34:22:73:F9:FE

Certificate is to be certified until Mar 27 06:48:43 2019 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

7.2.3 吊銷證書

# 獲取要吊銷的證書的serial: openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject
[root@docker-package CA]# openssl x509 -in /tmp/httpd.crt -noout -serial -subject
serial=01
subject= /C=CN/ST=SiChuan/O=HuaQiYun/OU=IT/CN=www.leistudy.com/emailAddress=httpadmin.leistudy.com

# CA端根據客戶端提交的serial與subject信息, 對比校驗是否與index.txt文件中的信息一致
# 吊銷證書: openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
[root@docker-package CA]# openssl ca -revoke /etc/pki/CA/newcerts/01.pem 
Using configuration from /etc/pki/tls/openssl.cnf
Revoking Certificate 01.
Data Base Updated

# 生成吊銷證書的編號(一次吊銷一個證書)
[root@docker-package CA]# echo 01 > /etc/pki/CA/crlnumber

# 更新證書吊銷列表: openssl ca -gencrl -out thisca.crl
[root@docker-package CA]# openssl ca -gencrl -out /etc/pki/CA/thisca.crl

# 查看crl文件
[root@docker-package CA]# openssl crl -in thisca.crl -noout -text
Certificate Revocation List (CRL):
        Version 2 (0x1)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: /C=CN/ST=SiChuan/L=Chengdu/O=HuaQiYun/OU=Ops/CN=ca.leistudy.com/emailAddress=mail.leistudy.com
        Last Update: Mar 27 06:55:01 2018 GMT
        Next Update: Apr 26 06:55:01 2018 GMT
        CRL extensions:
            X509v3 CRL Number: 
                1
Revoked Certificates:
    Serial Number: 01
        Revocation Date: Mar 27 06:53:29 2018 GMT
    Signature Algorithm: sha256WithRSAEncryption
         2c:29:ac:55:aa:46:e0:d5:8e:e9:3c:cb:3f:2d:17:72:ce:11:
         1c:1a:42:72:02:0f:e5:d8:32:d7:32:37:86:1f:fe:82:6e:f9:
         49:d3:5d:b1:5c:0a:7c:06:69:6b:49:a6:21:10:1d:b2:82:b7:
         6c:dc:18:65:99:ef:c6:0f:b4:db:fd:ed:6d:33:33:02:d0:7d:
         ba:8a:37:70:62:5d:9f:22:42:fc:60:87:7a:d5:48:1b:6c:1d:
         5d:bb:fd:2e:8f:8e:fd:9a:4d:d6:19:6c:31:28:f1:0f:28:b0:
         52:b6:7f:84:af:25:20:e9:28:16:fe:fb:2d:ab:0e:e1:22:03:
         a9:d8:42:08:27:ec:de:10:11:6c:b0:30:3e:55:91:48:d0:1b:
         4b:12:7d:c2:31:cd:85:bf:8b:90:b2:35:c3:35:ad:eb:63:a9:
         a5:f2:65:50:63:69:3d:ee:73:51:0b:97:3b:d4:77:47:38:3b:
         1d:f0:84:8c:00:02:d3:57:8b:b3:33:b3:c6:f0:4a:5b:86:d2:
         3a:55:c2:cd:bf:6a:c6:01:31:aa:61:c5:bf:fb:37:8b:86:02:
         e6:24:db:47:72:17:24:4b:aa:49:98:8b:ae:2c:01:24:b5:dd:
         e9:e7:a6:ab:6c:a3:cb:d4:d2:c4:d5:dc:58:00:e8:33:7a:b2:
         24:fe:9d:d8

網絡通信安全基礎和OpenSSL