瀏覽量:59次
openssl req 用于生成證書請求,以讓第三方權威機構CA來簽發(fā),生成我們需要的證書。req 命令也可以調用x509命令,以進行格式轉換及顯示證書文件中的text,modulus等信息。如果你還沒有密鑰對,req命令可以一統(tǒng)幫你生成密鑰對和證書請求,也可以指定是否對私鑰文件進行加密。
1、密鑰、證書請求、證書概要說明
在證書申請簽發(fā)過程中,客戶端涉及到密鑰、證書請求、證書這幾個概念,初學者可能會搞不清楚三者的關系,網(wǎng)上有的根據(jù)后綴名來區(qū)分三者,更讓人一頭霧水。我們以申請證書的流程說明三者的關系??蛻舳耍ㄏ鄬τ贑A)在申請證書的時候,大體上有三個步驟:
第一步:生成客戶端的密鑰,即客戶端的公私鑰對,且要保證私鑰只有客戶端自己擁有。第二步:以客戶端的密鑰和客戶端自身的信息(國家、機構、域名、郵箱等)為輸入,生成證書請求文件。其中客戶端的公鑰和客戶端信息是明文保存在證書請求文件中的,而客戶端私鑰的作用是對客戶端公鑰及客戶端信息做簽名,自身是不包含在證書請求中的。然后把證書請求文件發(fā)送給CA機構。第三步:CA機構接收到客戶端的證書請求文件后,首先校驗其簽名,然后審核客戶端的信息,最后CA機構使用自己的私鑰為證書請求文件簽名,生成證書文件,下發(fā)給客戶端。此證書就是客戶端的身份證,來表明用戶的身份。至此客戶端申請證書流程結束,其中涉及到證書簽發(fā)機構CA,CA是被絕對信任的機構。如果把客戶端證書比作用戶身份證,那么CA就是頒發(fā)身份證的機構,我們以https為例說明證書的用處。
為了數(shù)據(jù)傳輸安全,越來越多的網(wǎng)站啟用https。在https握手階段,服務器首先把自己的證書發(fā)送給用戶(瀏覽器),瀏覽器查看證書中的發(fā)證機構,然后在機器內置的證書中(在PC或者手機上,內置了世界上著名的CA機構的證書)查找對應CA證書,然后使用內置的證書公鑰校驗服務器的證書真?zhèn)巍H绻r炇?,瀏覽器會提示服務器證書有問題,詢問用戶是否繼續(xù)。
例如12306網(wǎng)站,它使用的自簽名的證書,所以瀏覽器會提示證書有問題,在12306的網(wǎng)站上有提示下載安裝根證書,其用戶就是把自己的根證書安裝到用戶機器的內置證書中,這樣瀏覽器就不會報證書錯誤。但是注意,除非特別相信某個機構,否則不要在機器上隨便導入證書,很危險。
2、req指令說明
上一節(jié)我們看到了申請證書流程,生成密鑰對我們已經(jīng)知道,那么如何生成證書請求呢,req指令就該上場了,我們可以查看req的man手冊,如下:
openssl req [-inform PEM|DER] [-outform PEM|DER] [-in filename] [-passin arg] [-out filename] [-passout arg] [-text] [-pubkey] [-noout] [-verify] [-modulus] [-new] [-rand file(s)] [-newkey rsa:bits][-newkey alg:file] [-nodes] [-key filename] [-keyform PEM|DER] [-keyout filename] [-keygen_engine id] [-[digest]] [-config filename] [-subj arg] [-multivalue-rdn] [-x509] [-days n] [-set_serial n][-asn1-kludge] [-no-asn1-kludge] [-newhdr] [-extensions section] [-reqexts section] [-utf8] [-nameopt] [-reqopt] [-subject] [-subj arg] [-batch] [-verbose] [-engine id]發(fā)現(xiàn)其參數(shù)多而復雜,還有許多沒有用到過的參數(shù)。但是在實際應用中我們使用到的參數(shù)很有限,我們根據(jù)req的基本功能來學習。
req的基本功能主要有兩個:生成證書請求和生成自簽名證書。其他還有一些校驗、查看請求文件等功能,示例會簡單說明下。參數(shù)說明如下
[new/x509]
當使用-new選取的時候,說明是要生成證書請求,當使用x509選項的時候,說明是要生成自簽名證書。
[key/newkey/keyout]
key和newkey是互斥的,key是指定已有的密鑰文件,而newkey是指在生成證書請求或者自簽名證書的時候自動生成密鑰,然后生成的密鑰名稱有keyout參數(shù)指定。
當指定newkey選項時,后面指定rsa:bits說明產(chǎn)生rsa密鑰,位數(shù)由bits指定。指定dsa:file說明產(chǎn)生dsa密鑰,file是指生成dsa密鑰的參數(shù)文件(由dsaparam生成)
[in/out/inform/outform/keyform]
in選項指定證書請求文件,當查看證書請求內容或者生成自簽名證書的時候使用
out選項指定證書請求或者自簽名證書文件名,或者公鑰文件名(當使用pubkey選項時用到),以及其他一些輸出信息。
inform、outform、keyform分別指定了in、out、key選項指定的文件格式,默認是PEM格式。
[config]
參數(shù)文件,默認是/etc/ssl/openssl.cnf(ubuntu12.04),根據(jù)系統(tǒng)不同位置不同。該文件包含生成req時的參數(shù),當在命令行沒有指定時,則采用該文件中的默認值。
除上述主要參數(shù)外,還有許多其他的參數(shù),不在一一敘述,有興趣的讀者可以查看req的man手冊
3、req指令使用實例
(1)使用已有私鑰生成證書請求
使用原有的RSA密鑰生成證書請求文件,輸入主體相關信息:
[聲明]本網(wǎng)轉載網(wǎng)絡媒體稿件是為了傳播更多的信息,此類稿件不代表本網(wǎng)觀點,本網(wǎng)不承擔此類稿件侵權行為的連帶責任。故此,如果您發(fā)現(xiàn)本網(wǎng)站的內容侵犯了您的版權,請您的相關內容發(fā)至此郵箱【779898168@qq.com】,我們在確認后,會立即刪除,保證您的版權。
官網(wǎng)優(yōu)化
整站優(yōu)化
渠道代理
400-655-5776