久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      公鑰基礎(chǔ)設(shè)施(PKI)/CFSSL證書(shū)生成工具的使用

      公鑰基礎(chǔ)設(shè)施(PKI)

      基礎(chǔ)概念

      CA(Certification Authority)證書(shū),指的是權(quán)威機(jī)構(gòu)給我們頒發(fā)的證書(shū)。

      密鑰就是用來(lái)加解密用的文件或者字符串。密鑰在非對(duì)稱加密的領(lǐng)域里,指的是私鑰和公鑰,他們總是成對(duì)出現(xiàn),其主要作用是加密和解密。常用的加密強(qiáng)度是2048bit。

      RSA即非對(duì)稱加密算法。非對(duì)稱加密有兩個(gè)不一樣的密碼,一個(gè)叫私鑰,另一個(gè)叫公鑰,用其中一個(gè)加密的數(shù)據(jù)只能用另一個(gè)密碼解開(kāi),用自己的都解不了,也就是說(shuō)用公鑰加密的數(shù)據(jù)只能由私鑰解開(kāi)。

      證書(shū)的編碼格式

      PEM(Privacy Enhanced Mail),通常用于數(shù)字證書(shū)認(rèn)證機(jī)構(gòu)(Certificate Authorities,CA),擴(kuò)展名為.pem, .crt, .cer, 和 .key。內(nèi)容為Base64編碼的ASCII碼文件,有類(lèi)似”—–BEGIN CERTIFICATE—–” 和 “—–END CERTIFICATE—–“的頭尾標(biāo)記。服務(wù)器認(rèn)證證書(shū),中級(jí)認(rèn)證證書(shū)和私鑰都可以儲(chǔ)存為PEM格式(認(rèn)證證書(shū)其實(shí)就是公鑰)。Apache和nginx等類(lèi)似的服務(wù)器使用PEM格式證書(shū)。

      DER(Distinguished Encoding Rules),與PEM不同之處在于其使用二進(jìn)制而不是Base64編碼的ASCII。擴(kuò)展名為.der,但也經(jīng)常使用.cer用作擴(kuò)展名,所有類(lèi)型的認(rèn)證證書(shū)和私鑰都可以存儲(chǔ)為DER格式。Java使其典型使用平臺(tái)。

      證書(shū)簽名請(qǐng)求CSR

      CSR(Certificate Signing Request),它是向CA機(jī)構(gòu)申請(qǐng)數(shù)字×××書(shū)時(shí)使用的請(qǐng)求文件。在生成請(qǐng)求文件前,我們需要準(zhǔn)備一對(duì)對(duì)稱密鑰。私鑰信息自己保存,請(qǐng)求中會(huì)附上公鑰信息以及國(guó)家,城市,域名,Email等信息,CSR中還會(huì)附上簽名信息。當(dāng)我們準(zhǔn)備好CSR文件后就可以提交給CA機(jī)構(gòu),等待他們給我們簽名,簽好名后我們會(huì)收到crt文件,即證書(shū)。

      注意:CSR并不是證書(shū)。而是向權(quán)威證書(shū)頒發(fā)機(jī)構(gòu)獲得簽名證書(shū)的申請(qǐng)。

      把CSR交給權(quán)威證書(shū)頒發(fā)機(jī)構(gòu),權(quán)威證書(shū)頒發(fā)機(jī)構(gòu)對(duì)此進(jìn)行簽名,完成。保留好CSR,當(dāng)權(quán)威證書(shū)頒發(fā)機(jī)構(gòu)頒發(fā)的證書(shū)過(guò)期的時(shí)候,你還可以用同樣的CSR來(lái)申請(qǐng)新的證書(shū),key保持不變.

      數(shù)字簽名

      數(shù)字簽名就是”非對(duì)稱加密+摘要算法”,其目的不是為了加密,而是用來(lái)防止他人篡改數(shù)據(jù)。

      其核心思想是:比如A要給B發(fā)送數(shù)據(jù),A先用摘要算法得到數(shù)據(jù)的指紋,然后用A的私鑰加密指紋,加密后的指紋就是A的簽名,B收到數(shù)據(jù)和A的簽名后,也用同樣的摘要算法計(jì)算指紋,然后用A公開(kāi)的公鑰解密簽名,比較兩個(gè)指紋,如果相同,說(shuō)明數(shù)據(jù)沒(méi)有被篡改,確實(shí)是A發(fā)過(guò)來(lái)的數(shù)據(jù)。假設(shè)C想改A發(fā)給B的數(shù)據(jù)來(lái)欺騙B,因?yàn)榇鄹臄?shù)據(jù)后指紋會(huì)變,要想跟A的簽名里面的指紋一致,就得改簽名,但由于沒(méi)有A的私鑰,所以改不了,如果C用自己的私鑰生成一個(gè)新的簽名,B收到數(shù)據(jù)后用A的公鑰根本就解不開(kāi)。

      常用的摘要算法有MD5、SHA1、SHA256。

      使用私鑰對(duì)需要傳輸?shù)奈谋镜恼M(jìn)行加密,得到的密文即被稱為該次傳輸過(guò)程的簽名。

      數(shù)字證書(shū)和公鑰

      數(shù)字證書(shū)則是由證書(shū)認(rèn)證機(jī)構(gòu)(CA)對(duì)證書(shū)申請(qǐng)者真實(shí)身份驗(yàn)證之后,用CA的根證書(shū)對(duì)申請(qǐng)人的一些基本信息以及申請(qǐng)人的公鑰進(jìn)行簽名(相當(dāng)于加蓋發(fā)證書(shū)機(jī) 構(gòu)的公章)后形成的一個(gè)數(shù)字文件。實(shí)際上,數(shù)字證書(shū)就是經(jīng)過(guò)CA認(rèn)證過(guò)的公鑰,除了公鑰,還有其他的信息,比如Email,國(guó)家,城市,域名等。

      CFSSL工具

      CFSSL介紹

      項(xiàng)目地址: https://github.com/cloudflare/cfssl

      下載地址: https://pkg.cfssl.org/

      參考鏈接: https://blog.cloudflare.com/how-to-build-your-own-public-key-infrastructure/

      CFSSL是CloudFlare開(kāi)源的一款PKI/TLS工具。 CFSSL 包含一個(gè)命令行工具 和一個(gè)用于 簽名,驗(yàn)證并且捆綁TLS證書(shū)的 HTTP API 服務(wù)。 使用Go語(yǔ)言編寫(xiě)。

      CFSSL包括:

      • 一組用于生成自定義 TLS PKI 的工具
      • cfssl程序,是CFSSL的命令行工具
      • multirootca程序是可以使用多個(gè)簽名密鑰的證書(shū)頒發(fā)機(jī)構(gòu)服務(wù)器
      • mkbundle程序用于構(gòu)建證書(shū)池
      • cfssljson程序,從cfssl和multirootca程序獲取JSON輸出,并將證書(shū),密鑰,CSR和bundle寫(xiě)入磁盤(pán)

      PKI借助數(shù)字證書(shū)和公鑰加密技術(shù)提供可信任的網(wǎng)絡(luò)身份。通常,證書(shū)就是一個(gè)包含如下身份信息的文件:

      • 證書(shū)所有組織的信息
      • 公鑰
      • 證書(shū)頒發(fā)組織的信息
      • 證書(shū)頒發(fā)組織授予的權(quán)限,如證書(shū)有效期、適用的主機(jī)名、用途等
      • 使用證書(shū)頒發(fā)組織私鑰創(chuàng)建的數(shù)字簽名

      安裝cfssl

      這里我們只用到cfssl工具和cfssljson工具:

      wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
      wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
      wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
      chmod +x cfssl_linux-amd64 cfssljson_linux-amd64 cfssl-certinfo_linux-amd64
      mv cfssl_linux-amd64 /usr/local/bin/cfssl
      mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
      mv cfssl-certinfo_linux-amd64 /usr/bin/cfssl-certinfo

      cfssl工具,子命令介紹:

      bundle: 創(chuàng)建包含客戶端證書(shū)的證書(shū)包

      genkey: 生成一個(gè)key(私鑰)和CSR(證書(shū)簽名請(qǐng)求)

      scan: 掃描主機(jī)問(wèn)題

      revoke: 吊銷(xiāo)證書(shū)

      certinfo: 輸出給定證書(shū)的證書(shū)信息, 跟cfssl-certinfo 工具作用一樣

      gencrl: 生成新的證書(shū)吊銷(xiāo)列表

      selfsign: 生成一個(gè)新的自簽名密鑰和 簽名證書(shū)

      print-defaults: 打印默認(rèn)配置,這個(gè)默認(rèn)配置可以用作模板

      serve: 啟動(dòng)一個(gè)HTTP API服務(wù)

      gencert: 生成新的key(密鑰)和簽名證書(shū)

      ◾-ca:指明ca的證書(shū)

      ◾-ca-key:指明ca的私鑰文件

      ◾-config:指明請(qǐng)求證書(shū)的json文件

      ◾-profile:與-config中的profile對(duì)應(yīng),是指根據(jù)config中的profile段來(lái)生成證書(shū)的相關(guān)信息

      ocspdump

      ocspsign

      info: 獲取有關(guān)遠(yuǎn)程簽名者的信息

      sign: 簽名一個(gè)客戶端證書(shū),通過(guò)給定的CA和CA密鑰,和主機(jī)名

      ocsprefresh

      ocspserve

      創(chuàng)建認(rèn)證中心(CA)

      CFSSL可以創(chuàng)建一個(gè)獲取和操作證書(shū)的內(nèi)部認(rèn)證中心。

      運(yùn)行認(rèn)證中心需要一個(gè)CA證書(shū)和相應(yīng)的CA私鑰。任何知道私鑰的人都可以充當(dāng)CA頒發(fā)證書(shū)。因此,私鑰的保護(hù)至關(guān)重要。

      生成CA證書(shū)和私鑰(root 證書(shū)和私鑰)

      創(chuàng)建一個(gè)文件ca-csr.json:

      {
        “CN”: “www.linuxidc.com”,
        “key”: {
          “algo”: “rsa”,
          “size”: 2048
        },
        “names”: [
          {
            “C”: “CN”,
            “ST”: “BeiJing”,
            “L”: “BeiJing”,
            “O”: “linuxidc”,
            “OU”: “ops”
          }
        ]
      }

      術(shù)語(yǔ)介紹:

      CN: Common Name,瀏覽器使用該字段驗(yàn)證網(wǎng)站是否合法,一般寫(xiě)的是域名。非常重要。瀏覽器使用該字段驗(yàn)證網(wǎng)站是否合法

      C: Country, 國(guó)家

      L: Locality,地區(qū),城市

      O: Organization Name,組織名稱,公司名稱

      OU: Organization Unit Name,組織單位名稱,公司部門(mén)

      ST: State,州,省

      生成CA證書(shū)和CA私鑰和CSR(證書(shū)簽名請(qǐng)求):

      # cfssl gencert -initca ca-csr.json | cfssljson -bare ca  ## 初始化ca
      # ls ca*
      ca.csr  ca-csr.json  ca-key.pem  ca.pem

      該命令會(huì)生成運(yùn)行CA所必需的文件ca-key.pem(私鑰)和ca.pem(證書(shū)),還會(huì)生成ca.csr(證書(shū)簽名請(qǐng)求),用于交叉簽名或重新簽名。

      小提示:

      使用現(xiàn)有的CA私鑰,重新生成:

      cfssl gencert -initca -ca-key key.pem ca-csr.json | cfssljson -bare ca

      使用現(xiàn)有的CA私鑰和CA證書(shū),重新生成:

      cfssl gencert -renewca -ca cert.pem -ca-key key.pem

      查看cert(證書(shū)信息):

      # cfssl certinfo -cert ca.pem

      查看CSR(證書(shū)簽名請(qǐng)求)信息:

      # cfssl certinfo -csr ca.csr

      配置證書(shū)生成策略

      配置證書(shū)生成策略,讓CA軟件知道頒發(fā)什么樣的證書(shū)。

      # vim ca-config.json
      {
        “signing”: {
          “default”: {
            “expiry”: “8760h”
          },
          “profiles”: {
            “etcd”: {
              “usages”: [
                  “signing”,
                  “key encipherment”,
                  “server auth”,
                  “client auth”
              ],
              “expiry”: “8760h”
            }
          }
        }
      }

      這個(gè)策略,有一個(gè)默認(rèn)的配置,和一個(gè)profile,可以設(shè)置多個(gè)profile,這里的profile是etcd。

      默認(rèn)策略,指定了證書(shū)的有效期是一年(8760h)

      etcd策略,指定了證書(shū)的用途

      signing, 表示該證書(shū)可用于簽名其它證書(shū);生成的 ca.pem 證書(shū)中 CA=TRUE

      server auth:表示 client 可以用該 CA 對(duì) server 提供的證書(shū)進(jìn)行驗(yàn)證

      client auth:表示 server 可以用該 CA 對(duì) client 提供的證書(shū)進(jìn)行驗(yàn)證

      cfssl常用命令:

      cfssl gencert -initca ca-csr.json | cfssljson -bare ca ## 初始化ca

      cfssl gencert -initca -ca-key key.pem ca-csr.json | cfssljson -bare ca ## 使用現(xiàn)有私鑰, 重新生成

      cfssl certinfo -cert ca.pem

      cfssl certinfo -csr ca.csr

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)