居安思危---安全與加密

來自專欄 Linux 雲計算

摘要:安全的重要性對於伺服器來說不言而喻,本文重點介紹與安全相關的演算法和協議;演示opensssl命令的相關用法

加密演算法

  • 對稱加密
  • 公鑰加密
  • 單向散列
  • 認證協議

演算法的特點

1.演算法本身可以公開2.有自己的key密鑰

對稱加密

對稱演算法:加密和解密使用同一個密鑰

常見演算法:

  • DES: Data Encryption Standard, 56bits
  • 3DES:3倍DES
  • AES: Advanced (128, 192, 256bits) ###目前的主流對稱加密演算法
  • Blowfish, Twofish
  • IDEA, RC6, CAST5

特性:

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

缺陷:

  • 加密不同的數據就對應不同的密鑰,導緻密鑰過多
  • 密鑰分發困難
  • 數據來源無法確認

非對稱加密演算法

非對稱演算法:密鑰成對出現,公鑰加密數據,只能使用與之配對的私鑰解密;反之亦然

常見演算法:

  • RSA(加密,數字簽名)###比較主流的非對稱演算法
  • DSA(數字簽名)
  • ELGamal

非對稱加密: 密鑰是成對出現

  • 公鑰:公開給所有人; public key
  • 私鑰:自己留存,必須保證其私密性; secret key

功能:

  • 數字簽名:主要在於讓接收方確認發送方身份,私鑰加密稱為數字簽名
  • 對稱密鑰交換:發送方用對方的公鑰加密一個對稱密鑰後發送給對方
  • 數據加密:適合加密較小數據

缺點:密鑰長, 加密解密效率低下

eg:A---Data--->B 通信

加密:PB[SA(data)] 註:每個人手裡可能會拿到三把鑰匙以A為例,A的公鑰(PA)、A的私鑰(SA)、B的公鑰(PB)1.B為了確保數據的來源是A,這時候就需要A用自己的私鑰機密,B用A的公鑰可以解開,證明數據來源一定是A,因為A私鑰只有A有,這個過程叫數字簽名2.為了確保數據的安全,A需要用B的公鑰進行數據加密,因為只有B有自己的私鑰可以解開數據

[root@centos7 ~]#cd /etc/ssh[root@centos7 ssh]#lsmoduli sshd_config ssh_host_ecdsa_key.pub ssh_host_ed25519_key.pub ssh_host_rsa_key.pubssh_config ssh_host_ecdsa_key ssh_host_ed25519_key ssh_host_rsa_key[root@centos7 ssh]#cat ssh_host_rsa_key.pubssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC71f3lRepIy8IlcqIRWCzO8jaULTqp5tAk5Zbeee5koJ1am2GApWn6nv92gE6fxDnrsAeGzqpUDtx8W/zQ1b/1B9UJV3O5eTBF5XsetT+C2YeBGhM7sSRJTrO6DLFV2SqUxdnyZNkspHzxVNKiawiIJJ7l5WTvBom8dKD27chI9l8t80HS35r0++Ht5Q/PnoGkKn0ubn1fNdMORheOMCwBG9tNJhYpzSzZ1JxL4HE1Ea50gOTQN7XfpsxsYBj6kmAGcHWkILxMAMTh19HzkBtyrcqdrlyoEMOORdh0qkTQeVTxFbqe7GsJ0w7YLJVHu3zTNCh1KnGOgdwnS1fuwx87[root@centos7 ssh]#cat ssh_host_rsa_key ###非對稱演算法的密鑰長, 加密解密效率低下-----BEGIN RSA PRIVATE KEY-----MIIEogIBAAKCAQEAu9X95UXqSMvCJXKiEVgszvI2lC06qebQJOWW3nnuZKCdWpthgKVp+p7/doBOn8Q567AHhs6qVA7cfFv80NW/9QfVCVdzuXkwReV7HrU/gtmHgRoTO7EkSU6zugyxVdkqlMXZ8mTZLKR88VTSomsIiCSe5eVk7waJvHSg9u3ISPZfLfNB0t+a9Pvh7eUPz56BpCp9Lm59XzXTDkYXjjAsARvbTSYWKc0s2dScS+BxNRGudIDk0De136bMbGAY+pJgBnB1pCC8TADE4dfR85Abcq3Kna5cqBDDjkXYdKpE0HlU8RW6nuxrCdMO2CyVR7t80zQodSpxjoHcJ0tX7sMfOwIDAQABAoIBAB0SJoR4iKURnA+tqTWj/vNce2P9iAnJpkc/nVT7bBD45sGiMLn3X+qg9wrBGuoRNaGrkc6kZ6owzqEUn5E2s8nZl3glp8x53CXFOYPsK1M2FYm+nmFrriEGZDyUQFH4FWYHJQ8l2pLVNl0ncp4ekKh5eno8QZ3Y1jJrnon5DTl1XCIBPOqvcXbMZobFkfk7cYyKhHxxy0c807rNSTJtqxnakArERt1lHhUiGIxNyNilRstv3H/+8iEtYv7re9IYv8q22QLkJWk8lBDmRtrjOTGG/t0xT5XDPA3k+qqgozd0aODhddUMH9JFAv9q9DgLTHRwHyO2fpe5uXkKLNEpEMECgYEA4/ivloszkkDQ2JwHJeQiz7g4zw897ww9cWqKlv4CFBgBPOligoqgXVvS/FueXffbxZ/zVVUCt0pVmSe2mapp++qSt0qsxDbMd+rFjp0n9Rk8hrlm45V2Ev+UBrgWpSpeYe8AYsSraJoo/Tdr01752UBZ3me+0fejG5AnyKIOtiECgYEA0u4ONvR5k8pOY15VH9Xkq3xvpdGy2Nq0D16aKVGkGRVoNM5qkVVTcILfe/zrc2oVI1d6DWCedyWyarXyv2fePc85ZMHc9L3aI5YRo2Swr1QC4oO8PArvpifYMZrGGxDM4FlgdkC5yCYylI61Tt6Y4/cWeEtqtQMC9yNTXb8xMdsCgYAEyjfeQOR/gS8iLf0Udbupg6Rl7VsOx8IOvP9WdtXSWELGZdz1AzalX4WKWd50+P08JMU3GMcq1LwBsMzsY6FAcshMY5xHryMSrfMisPii9LnJ1uFrjLtjYM1aasnHBKHhCuWGLb2wP/T2hRCV61vyjaCVxLZEsSBTNu8vDwCiIQKBgGzjR6NHAZwxy9WwVPFiUfHVAy3u2wznmhx1EdBSvQvV6T2ZcZolGjXy2bwADOw/zzm3ZuKRBj0r0LcVxoLY8/mkiFRjX9VYTMwiJGjdCfj4vaSBrSKx4pU77HdvFuXR/nGysgFZ2I5iaaoXIbHdZ8AHRipDhIp9S4KZUegLUzIRAoGAMFUfCqjQy7Bgngc6g0Ml7gdMXX4DrCqVA0X1mgEdIN9+royWCNLwDUse6rNUiVJN2AlHLIaqvEt3bzU+9lXfGAYAfcSJsiXStZLmLEmHV/kvw6GrKonuSFKOs+Yjrz9iOFPSIlEynFR6WHxHSPnYltWrAIG7RN0BcvK1bI6RJ0k=-----END RSA PRIVATE KEY-----[root@centos7 ssh]#rpm -K /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm ###安裝包都用私鑰加密過了,也即數字簽名,需要導入對應的公鑰才能解密/mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm: RSA sha1 ((MD5) PGP) md5 NOT OK (MISSING KEYS: (MD5) PGP#f4a80eb5)[root@centos7 ssh]#rpm --import /mnt/RPM-GPG-KEY-CentOS-7[root@centos7 ssh]#rpm -K /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm/mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK[root@centos7 ssh]#

單向散列( 又稱hash 哈希演算法)

作用:將任意數據縮小成固定大小的「指紋」,用於檢查數據的完整性

  • 任意長度輸入
  • 固定長度輸出
  • 若修改數據,指紋也會改變(「不會產生衝突」)
  • 無法從指紋中重新生成數據(「單向」)

功能:數據完整性

常見演算法
  • md5: 128bits、 sha1: 160bits、 sha224、 sha256、 sha384、 sha512 ###md5:計算數據得出是 128bit的二進位 相當於32bit16進位 sha1哈希演算法:160bit二進位相當於40bit十六進位

常用工具

  • md5sum | sha1sum [ --check ] file
  • openssl、 gpg
  • rpm -V ###利用的就是hash值,來比對軟體包數據是否做改動

[root@centos7 data]# cat > f1how are you[root@centos7 data]# sha1sum f1 ###利用哈希運算可以判斷文件的完整性fae8f6c72a6181c1963564d3882667e5eab6b648 f1[root@centos7 data]# md5sum f15ea0b7cb299e8c26b2d9c87039f5e7ad f1[root@centos7 data]# cat > f2how are you[root@centos7 data]# md5sum f2 ###只要文件裡面的數據不變,裡面的哈希值就是一樣的5ea0b7cb299e8c26b2d9c87039f5e7ad f2[root@centos7 data]#

數據安全高效的加密方法eg:A---Data--->B 通信加密:key{data+SA[hash(data)]}+PB(key) ###哈希值用A的私鑰加密,哈希值短,非對稱演算法適用,再將加密結果和數據用對稱演算法機密,效率高。最後把對稱的key用B的公鑰加密;最終將兩部分內容傳輸給B密鑰交換對稱演算法的key怎麼安全傳給對方,主要兩種方式
  1. 公鑰加密: ###非對稱的公鑰是可以公開的,用用非對稱的公鑰加密對稱演算法的密鑰
  2. DH (Deffie-Hellman):生成會話密鑰,由惠特菲爾德·迪菲( BaileyWhitfield Diffie)和馬丁·赫爾曼( Martin Edward Hellman)在1976年發表,會話密鑰是對稱演算法

DH:

A: g,p 協商生成公開的整數g, 大素數pB: g,pA:生成隱私數據 :a (a<p ),計算得出 g^a%p,發送給B

B:生成隱私數據 :b,計算得出 g^b%p,發送給A

A:計算得出 [(g^b%p)^a] %p = g^ab%p, 生成為密鑰B:計算得出 [(g^a%p)^b] %p = g^ab%p,生成為密鑰中間人攻擊公鑰的傳輸是存在安全隱患的,如服務端發公鑰給服客戶端的時候,被中間人截獲了,進行兩邊欺騙

CA和證書

CA和證書的出現,就是防止中間人攻擊,防止公鑰傳輸不安全隱患;A與B之間的通信,公鑰的傳輸不被對方信任,這時候就需要出現一個第三方,也即簽證機構CA;由CA來給通信雙方的人頒發證書;只要帶有證書的公鑰,我們認為數據是安全的。CA有有自己的組織,最上層是根CA,rootCA;在裝系統的時候,系統就有權威可信的rootCA的公鑰;所以可以認為只要是這些CA頒發的證書是安全的。

證書的獲取除了向權威結構申請付費的,也可以自己搭建私有的CA,在企業內部使用,實現自簽名證書;目的就是防止中間人攻擊,只要公鑰帶有簽名證書後安全可信就好

PKI: Public Key Infrastructure
  • 簽證機構: CA( Certificate Authority)
  • 註冊機構: RA
  • 證書吊銷列表: CRL
  • 證書存取庫:

證書的格式

X.509:定義了證書的結構以及認證協議標準
  • 版本號
  • 序列號
  • 簽名演算法
  • 頒發者
  • 有效期限
  • 主體名稱
  • 主體公鑰
  • CRL分發點
  • 擴展信息
  • 發行者簽名

註:在安全網頁中F12可以查看相關證書,如下圖所示

證書類型:

  • 證書授權機構的證書 ###rootCA自己搭建CA自簽名證書
  • 伺服器 ###CA頒發給企業用的,如 baidu.com
  • 用戶證書 ###CA頒發給個人用戶的 如 個人郵箱

獲取證書兩種方法

1.使用證書授權機構
  • 生成簽名請求( csr)
  • 將csr發送給CA
  • 從CA處接收簽名

2.自簽名的證書

  • 自已簽發自己的公鑰

安全協議

CA的實現需要依賴於重要的安全協議SSL: Secure Socket Layer現在又叫TLS協議: Transport Layer Security;很多帶s的協議就融合了ssl協議,如:https

功能:機密性,認證,完整性,重放保護 ###A與B通信,黑客截獲了A的加密數據,黑客代替A的身份將其數據完整發給B,偽造A與B通信

兩階段協議,分為握手階段和應用階段
  • 握手階段(協商階段):客戶端和伺服器端認證對方身份(依賴於PKI體系,利用數字證書進行身份認證),並協商通信中使用的安全參數、密碼套件以及主密鑰。 後續通信使用的所有密鑰都是通過MasterSecret生成。
  • 應用階段:在握手階段完成後進入,在應用階段通信雙方使用握手階段協商好的密鑰進行安全通信

https協議的工作過程

https就是典型的基於ssl協議的安全加密的web協議

應用場景:A需要登錄淘寶網站進行購物;淘寶是基於https協議的;A需要輸入自己的用戶名和密碼,以及購物信息等重要數據;但是如果數據被其他人截獲了,就會可能造成嚴重後果;所以A需要將自己的數據加密,由於數據量較大採用key的方式加密更高效,但key傳輸給對方是個難題;怎麼保證key的安全傳輸,即使截獲也無影響呢,這時候就需要結合非對稱演算法和CA證書;公鑰可以保護key,證書可以證明公鑰可靠;具體的過程就是:A就向淘寶網索要它的公鑰;淘寶網就會把自己的帶有CA簽名的公鑰發給A;A有CA的公鑰又信任CA,所以A可以信任收到的公鑰就是來自淘寶;由於A訪問淘寶產生的數據大,A決定用對稱加密演算法key加密數據,在用淘寶網的公鑰加密key;淘寶網有自己的私鑰,可以解開key;這樣的話以後淘寶和A之間的通信就用key來加密;難點就是怎麼傳輸key,而上面的一系列操作就是為了保證key傳輸安全。

證書的內容為:Sca(P淘寶)+CA+淘寶+expire ###淘寶網的公鑰 CA的私鑰簽名 CA的信息,淘寶的信息,證書的有效期等等

OpenSSL

與安全加密相關的重要應用程序,核心命令openssl

openssl命令

功能:加密解密編碼等等

兩種運行模式:交互模式和批處理模式

三種命令模式:標準命令、消息摘要命令、加密命令

1.對稱加密

工具: openssl enc, gpg ###enc對稱加密

演算法: 3des, aes, blowfish, twofish

[root@centos7 test]#openssl enc -e -des3 -a -salt -in fstab -out fstab.cpi ###enc對稱演算法加密 -e加密 -des3加密演算法 -a表示是可讀的base64編碼文本格式enter des-ede3-cbc encryption password:Verifying - enter des-ede3-cbc encryption password:[root@centos7 test]#cat fstab.cpi ###這個是base64編碼出來的結果,base64是由大小寫字母加數字和/+=編碼而成U2FsdGVkX19Q1G7VZoIU9KXn3ETbyIRufKVnn/86pdt8fdgUlWqmb7owrrJIh20AYMFE1pJz8jo3f22ikt9Ap4jUsSgiN0n3pGiXtZ5dSo0b9BAJRQ2z7Tnep0aTmws/VXTGJonLdtp67gHbxuDWEirs7C1iKzv8Zf2/K1vqKutF6xZlPB+2mDCdbKt2Y+jjN1D9MCam11BjMVOqhUM9TU5yhV7+W+H+VFMs6QgfgwZef0gJAu9gAVu9YeLLb+YIQkdtojNqQqMnRvwETGlpog5Q1ILWR9fCEt2Gg6jSPHBwAD2Zo2np5xwwxKhX0Q+c8KgCkftBQhaOM39SA66loQHhT57HJS+HBf84zQnef0U5MZqVi7m7XP+pncBJgmWpUXa0OsL9poKJElJxNLhBsafn2SfRk/ZK46Tbuvjz5XMJbdbgAQ4KPtiYw4JwZoxo23CaimC77DzbqCOcjdWcOoTIWkyGI9G1NlV7O+5hugdonrKhVub4zRHzDj5+FAtzDiqAJbdgksc4Kk2NvXEOunBho7PaNruw3F/cOX+VlLkwNJxo7BmR+1NhTJFllAF3IRCI8/EiYx9DwRVzSt0XoYZTdk0d/dld+JsJ+i6sdWQnBtZBejLlc4rPjDGnDnJv+P2+a+1IB+UQTM1kRJ/ZOvVwWbYJL+XOs3XwM6n9eBNq4NuBFcfR0BrAoNCUTkAQKLtAlOdkxObmYMsAmrsHIsen0TlwWvsxCwp0RVQ3/1fFm4jNVW6v2jMBTkAlsfGKhGZk7j0cp+jHofon1rM+FuMtJPZnO5Oa[root@centos7 test]#base64 -d fstab.cpi ###正真的加密完的格式是這樣的,亂碼格式;-d 解base64編碼?Utv*+;+[l0&1SMNr,^H omLiipp=%/E91e:4m > ?pf#:6U{;h s*%`8*M--a6_904hSaLe+!"cC_JS+M] .+dAz2_1_-+HLdD:-Y /+3|+N@(@d`[root@centos7 test]#openssl enc -d -des3 -a -salt -in fstab.cpi -out fstab2 ###按照相同的格式進行解密,-e變成-denter des-ede3-cbc decryption password:

2.哈希運算

工具: md5sum, sha1sum, sha224sum,sha256sum…

openssl dgst命令:

  • openssl dgst -md5 [-hex默認] /PATH/SOMEFILE
  • openssl dgst -md5 testfile
  • md5sum /PATH/TO/SOMEFILE

[root@centos7 test]# md5sum fstab8ffa1b26533c70455be7ff5a2e912acc fstab[root@centos7 test]#openssl dgst -md5 fstabMD5(fstab)= 8ffa1b26533c70455be7ff5a2e912acc[root@centos7 test]#openssl dgst -sha1 fstabSHA1(fstab)= dd4520fe89ec6090a42688ce2d06cf0f1ae1c42d

3.生成用戶密碼

openssl passwd命令:

openssl passwd -1 -salt SALT(最多8位)

openssl passwd -1 –salt centos

[root@centos7 test]#openssl passwd -1 ###默認就是加salt的Password:Verifying - Password:$1$bp.bPsls$kN2JgrlQxtoKK9T19DP3Y1[root@centos7 test]#openssl passwd -1 -salt centosPassword:$1$centos$Uq6E6Wp5SDZYbs6MCmamP0 ###指定鹽centos

4.生成隨機數

幫助: man sslrand

openssl rand -base64|-hex NUM ###-base64編碼,是由大小寫字母加數字和/+=編碼而成

NUM: 表示位元組數; -hex時,每個字元為十六進位,相當於4位二進位,出現的字元數為NUM*2

隨機數生成器:偽隨機數字

  • 鍵盤和滑鼠,塊設備中斷
  • /dev/random:僅從熵池返回隨機數;隨機數用盡,阻塞
  • /dev/urandom:從熵池返回隨機數;隨機數用盡,會利用軟體生成偽隨機數,非阻塞

[root@centos7 test]#openssl rand -base64 12 ###注意12是位元組數;並不是輸出的字元數mgA1Dbdou6BzrFPu[root@centos7 test]#cat /dev/urandom |tr -dc "a-zA-Z00-9" |head -c 12 ###也可以通過隨機設備取隨機數cNAplJFPJB8Z[root@centos7 test]#

5.生成私鑰公鑰

生成密鑰對兒幫助: man genrsa

生成私鑰

  • openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS
  • (umask 077; openssl genrsa –out test.key –des 2048) ###添加許可權後,增加私鑰的安全性,-des是加密口令
  • openssl rsa -in test.key –out test2.key 將加了key的私鑰解密

從私鑰中提取出公鑰

  • openssl rsa -in PRIVATEKEYFILE –pubout –out PUBLICKEYFILE
  • openssl rsa –in test.key –pubout –out test.key.pub

[root@centos7 test]#openssl genrsa -out test.key 1024 ###指定1024位密鑰Generating RSA private key, 1024 bit long modulus..++++++................++++++e is 65537 (0x10001)[root@centos7 test]#cat test.key-----BEGIN RSA PRIVATE KEY-----MIICWwIBAAKBgQDh4CRvx2PxNqyM3SBkEkCTSNVkHPiSy9NooDIWeo+Ix9ib1X4w2zLDL3bvYn+O+MZYbPP7LrZ2nsPQZdnPN1IJda7AwcPZMtrNrlWex89RU/WfApq/RDS1oHR1Gh/QtmjJiqkCqEfqJTh8gjqlAzxQE9L8uVEqeYhpzc1BPwY8JwIDAQABAoGAbskRFgIl8tluKGkMyghpw9OlVkUfZmCygE6SQpQ6ckwS4dwE2NGqRDGzlBYrmmRKZHSL9lcjB2s3f6909T2c7jrtnDxQGS5vuY9AKPDFszBPp/CD5d6riWOX9Jzo9eGRzw6GcU/d/zgmVY2wUGqLYxPUxHZTXS7QLrBEMkVpLgECQQD0xvvFvYHY+cknxcJLwd84JKEv4m5HbKexzPVe1lcBZreEmSurM2vNHY4dMOc0sU+4pDjiLnLZkOLh0Dv+JHXRAkEA7DtN45aLWlFYICk3tu82zrNc4coa8CewBpmLSeWM/fZXmI8DSGUIztKSO7SCFa4wqDaZckdjYOlnD8WyeiH4dwJAKbczt1p5o6HGP2n7l++dfDL56XA8fR2uYqXcd2IuB8YappV4FMA5sgZEbwMjlB5XyM7sBtgFqMCBehyD7OcH0QJAaMUclFWOVG5DUXA2X5HUkvQFu7YxIFXZwfOTTSDb2T7KNsUmxZLZxzCo3oX+M7NfrRsaDw8OSkr6BIq/z18FnQJAZQvsO/qYTpwj+hlxdFjZK1hmO/luF0nOL1AMGv0WHK5rO0XmT6tgBjwYekFQKktMCK7Eky0+jrR6pIqf+j9SsA==-----END RSA PRIVATE KEY-----[root@centos7 test]#(umask 077;openssl genrsa -out test2.key -des 1024) ###開啟子進程修改umask,更改許可權後,-des加上密碼這樣私鑰安全Generating RSA private key, 1024 bit long modulus.......++++++...++++++e is 65537 (0x10001)Enter pass phrase for test2.key:Verifying - Enter pass phrase for test2.key:[root@centos7 test]#ll ####test2.key的許可權發生變化total 24-rw-r--r--. 1 root root 578 Sep 12 20:23 fstab-rw-r--r--. 1 root root 578 Sep 13 10:58 fstab2-rw-r--r--. 1 root root 600 Sep 13 10:56 fstab.cip2-rw-r--r--. 1 root root 813 Sep 13 10:50 fstab.cpi-rw-------. 1 root root 958 Sep 13 11:33 test2.key-rw-r--r--. 1 root root 887 Sep 13 11:27 test.key[root@centos7 test]#openssl rsa -in test2.key -out test3.key ###解密加了key的私鑰Enter pass phrase for test2.key:writing RSA key[root@centos7 test]#openssl rsa -in test2.key -pubout -out test.key.pub ###從私鑰中提取公鑰,因為加密了,所以提取的時候需要輸入密碼Enter pass phrase for test2.key:writing RSA key

6.創建CA和申請證書

第一步:建立私有CA ###私有CA可以給企業內部使用

第二步:證書申請及簽署步驟:

  • 生成申請請求
  • RA核驗 ###RA是請求的證書權威結構,CA的下屬機構
  • CA簽署
  • 獲取證書

[root@centos7 test]#cd /etc/pki/tls[root@centos7 tls]#lscert.pem certs misc openssl.cnf private[root@centos7 tls]#less openssl.cnf ####這裡面有與CA相關的配置## OpenSSL example configuration file.# This is mostly being used for generation of certificate requests.#####################################################################[ ca ]default_ca = CA_default # The default ca section####################################################################[ CA_default ]dir = /etc/pki/CA # Where everything is keptcerts = $dir/certs # Where the issued certs are kept ###頒發的證書所在地crl_dir = $dir/crl # Where the issued crl are kept ###證書吊銷列表放在這裡database = $dir/index.txt # database index file. ###證書索引資料庫;已經頒發證書的信息,文件不存在,需要手工建立#unique_subject = no # Set to no to allow creation of # several ctificates with same subject.new_certs_dir = $dir/newcerts # default place for new certs. ###存放新證書的certificate = $dir/cacert.pem # The CA certificate ###rootCA的證書自簽名serial = $dir/serial # The current serial number ###頒發下一個證書的編號crlnumber = $dir/crlnumber # the current crl number ###下一個被吊銷的編號 # must be commented out to leave a V1 CRLcrl = $dir/crl.pem # The current CRL ###證書吊銷列表存放的位置private_key = $dir/private/cakey.pem# The private key ###私鑰RANDFILE = $dir/private/.rand # private random number filex509_extensions = usr_cert # The extentions to add to the cert# Comment out the following two lines for the "traditional"# (and highly broken) format.name_opt = ca_default # Subject Name optionscert_opt = ca_default # Certificate field options# Extension copying option: use with caution.# copy_extensions = copy# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs# so this is commented out by default to leave a V1 CRL.# crlnumber must also be commented out to leave a V1 CRL.# crl_extensions = crl_extdefault_days = 365 # how long to certify for ###證書默認有效期是365天default_crl_days= 30 # how long before next CRL ###30天發布一次吊銷列表default_md = sha256 # use SHA-256 by defaultpreserve = no # keep passed DN ordering# A few difference way of specifying how similar the request should look# For type CA, the listed attributes must be the same, and the optional# and supplied fields are just that :-)policy = policy_match ###匹配哪種策略,有兩種 match和anything# For the CA policy[ policy_match ] ####match的規則,country state organization common是必須一致的,common一般指網站域名;這部分一般對應私有CAcountryName = matchstateOrProvinceName = matchorganizationName = matchorganizationalUnitName = optionalcommonName = suppliedemailAddress = optional# For the anything policy# At this point in time, you must list all acceptable object# types.[ policy_anything ] ###anything的策略大多可選的,域名需要填寫,非私有CA時一般採用這一項countryName = optionalstateOrProvinceName = optionallocalityName = optionalorganizationName = optionalorganizationalUnitName = optionalcommonName = suppliedemailAddress = optional

推薦閱讀:

相關文章