2012-11-08 359 views
7

JKJSOpenSSL的證書驗證

我有這個證書鏈: rcert.pem(自簽名) - > scert.pem - > ccert.pem

所有這三個證書由我生成。沒有互聯網連接在任何地方使用。這是完美的離線工作。 現在,下面是一些命令及其輸出:

[email protected]:~/hari$ openssl verify rcert.pem 
rcert.pem: C = IN, ST = OM, L = OM, O = HARI, OU = HARI, CN = OM, emailAddress = OM 
error 18 at 0 depth lookup:self signed certificate 
OK 
[email protected]:~/hari$ openssl verify -CAfile rcert.pem scert.pem 
scert.pem: OK 
[email protected]:~/hari$ openssl verify -CAfile rcert.pem rcert.pem 
rcert.pem: OK 
[email protected]:~/hari$ openssl verify -CAfile rcert.pem -untrusted scert.pem ccert.pem 
ccert.pem: C = IN, ST = HARI, L = HARI, O = HARI, OU = HARI, CN = HARI, emailAddress = HARI 
error 24 at 1 depth lookup:invalid CA certificate 
OK 

爲什麼錯誤24 created.How刪除它是不是像可信或不可信?

謝謝。

回答

17

JKJS

我自己的問題的

得到了答案:

1)創建這些命令的根CA證書:

openssl req -newkey rsa:1024 -sha1 -keyout rootkey.pem -out rootreq.pem 

openssl x509 -req -in rootreq.pem -sha1 -signkey rootkey.pem -out rootcert.pem 

2)安裝使用下列命令CA證書作爲受信任的證書:

sudo mkdir /usr/share/ca-certificates/extra 

sudo cp rootcert.pem /usr/share/ca-certificates/extra/rootcert.crt 

sudo dpkg-reconfigure ca-certificates 

sudo update-ca-certificates 

3)創建的中間證書由root簽名CA通過以下命令:使用下列命令由中間CA簽署

openssl req -newkey rsa:1024 -sha1 -keyout skey.pem -out sreq.pem 

sudo openssl x509 -req -in sreq.pem -sha1 -CA /etc/ssl/certs/rootcert.pem -CAkey rootkey.pem -CAcreateserial -out scert.pem 

4)創建客戶證書:

openssl req -newkey rsa:1024 -sha1 -keyout ckey.pem -out creq.pem 

openssl x509 -req -in creq.pem -sha1 -CA scert.pem -CAkey skey.pem -CAcreateserial -out ccert.pem 

現在,鏈的信託工作正常:

1)根的驗證CA

openssl verify rootcert.pem 
rootcert.pem: OK 

2)中間驗證CA

openssl verify scert.pem 
scert.pem: OK 

3)客戶端證書

openssl verify -CAfile scert.pem ccert.pem 
ccert.pem: OK 
+1

的驗證好上尋找解決方案來完成。一個不錯的完整迷你教程。 對於那些現在發現這個問題的小備註,將其更改爲2048字節和sha256,因爲這些日子更爲常見。 – YorickH

+2

警告,上面的證書鏈驗證命令更加寬容,您可能會期待!默認情況下,除了檢查給定的CA文件外,他們還檢查系統證書目錄中的任何匹配的CA,例如的/ etc/SSL /證書。爲了防止這種行爲,並確保你正在檢查特定的CA證書,還需要將一個-CApath選項與一個不存在的目錄一起傳遞,例如:「openssl verify -CApath nosuchdir -CAfile scert.pem ccert.pem」 – DSimon

+0

非常酷,在Linux上工作。但我如何在Mac上安裝根證書? – prayagupd