關於openssl應用的對話 (轉)

worldblog發表於2007-12-14
關於openssl應用的對話 (轉)[@more@]這是一個網友在跟我交流open的記錄整理出來的,希望能夠對剛剛接觸Openssl的朋友有用。
 
  Q1:我是偶然一次在清華的BBS上看到了你的文章,關於CA的。很感興趣。你是用的openssl嗎,可以發一點關於openssl 的資料給我嗎?
  A1:Openssl本身提供的API資料非常有限,當然,基本的說明文件還是有一些的,主要在Doc目錄下。此外,Openssl的官方網站也可以找到一些討論的材料,但是非常有限。至於Openssl的中文資料就非常少了,好像在水木上有些網友的心得,可以看看。要對Openssl有深入的瞭解,研究其是必須的過程,作為起步,可以從它的APP開始。 Openssl還提供了幾個簡單的例程,也可以看看。
 
  Q2:我現在打算在下,建一個小型CA.用-,在前端發出請求,伺服器來生成金鑰和證照。我想後臺用,openssl是命令列方式,我找了一些phpopenssl的函式,但是這些是php新增的功能,只給出了定義。我現在不知道該怎麼辦了,有沒有其他的比如什麼的,可以呼叫openssl.
  A2:我沒有在Linux下使用過Openssl,我是在下使用的。象你所說的功能,Openssl是完全可以完成的。Openssl是使用標準C語言寫的,所以只要按C語言的標準函式格式呼叫就可以了。Openssl的命令列方式直接呼叫我個人覺得並不是很方便,你可以對每個命令對應的源程式稍微修改,變成適合你需要的函式形式,這樣更方便。而且,這些程式並不是很長,改起來不是特別困難的。
 
  Q3:我這幾天在試那些函式,有一些小收穫,心情一下子好多了。你作的時候,證照和crl,金鑰是用什麼的。我想用庫來存放證照。那當我作廢一個證照時,應該從證照庫裡刪除這個證照嗎?另外,假如我用來存放crl ,是不是當新生成一個crl時,就可以刪除以前的crl,也就是隻保留一個最近的crl檔案即可。
  A3:我做的時候,證照、CRL以及金鑰都是用存放的,但是也可以匯入檔案或IC卡中,其實,這個存放形式並不重要。做廢一個證照的時候,可以從證照庫裡刪除證照,也可以建一個吊銷證照庫,專門存放吊銷的證照,作為以後查證的依據。必須注意的是,刪除證照的時候,Openssl是需要一個文字檔案index(好像是這個名字),因為最後Openssl生成CRL的時候就是根據這個檔案生成的。CRL理論上是最新的吊銷證照列表,所以你生成了新的CRL之後,舊的當然可以刪除。
 
  Q4:我用php的一個openssl_csr_sign()函式,可是隻能生成自簽名的證照,不能給其它證照籤名。看來我只能看openssl的源程式了。我只想看對應於命令列openssl ca ...的這一段源程式,你知道它在哪個檔案裡嗎?我是在linux下,我不知道在windows 下可不可以在命令列方式下這條命令,它實現的是用根證照給證照請求籤名。
  A4:Openssl CA對應的源程式就是appca.c,windows下也有命令列方式,其內容跟Linux下應該是一樣的。
 
  Q5:我在linux下用openssl生成一個自簽名的根證照,字尾為.crt,在windows下可以開啟.之後用根證照籤名一個使用者請求,生成使用者證照(副檔名是.crt),但在windows下開啟時卻顯示"無效的證照檔案" ,這是為什麼?
  A5:windows下的證照格式跟openssl生成的證照格式不完全一樣,主要是openssl的證照附加了一些文字頭資訊。這是很奇怪的一個問題,因為Openssl生成的自簽名根證照卻是不帶這個頭資訊的,肯定是寫這個程式碼的那個老兄一時胡塗了。所以,你只要用寫字板把生成的證照開啟,然後把------BEGIN….------前面的資訊去掉就可以了。
 
 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-993063/,如需轉載,請註明出處,否則將追究法律責任。

相關文章