openssl生成證書

Q1n6發表於2016-10-13

大家都可以生成公鑰、私鑰對,無法確認公鑰對到底是誰的。 如果能夠確定公鑰到底是誰的,就不會有這個問題了。例如,如果收到“黑客”冒充“伺服器”發過來的公鑰,經過某種檢查,如果能夠發現這個公鑰不是“伺服器”的就好了。

為了解決這個問題,數字證書出現了,它可以解決我們上面的問題。先大概看下什麼是數字證書,一個證書包含下面的具體內容:

  • 證書的釋出機構
  • 證書的有效期
  • 公鑰
  • 證書所有者(Subject)
  • 簽名所使用的演算法
  • 指紋以及指紋演算法
證書的內容的詳細解釋會在後面詳細解釋,這裡先只需要搞清楚一點,數字證書可以保證數字證書裡的公鑰確實是這個證書的所有者(Subject)的,或者證書可以用來確認對方的身份。也就是說,我們拿到一個數字證書,我們可以判斷出這個數字證書到底是誰的。


1.安裝openssl 之後在/usr/lib/ssl目錄下(ubuntu系統,用whereis查下ssl目錄即可)下找到openssl.cnf,拷貝到工作目錄下。

2.工作目錄下新建demoCA資料夾,資料夾中新建檔案index.txt和serial,再建立一個newcerts的資料夾。在serial裡面新增字元01。

mkdir demoCA

cd demoCA

touch ./{serial, index.txt}

vi serial 新增01 :wq

生成證書過程:(注意以下過程都在工作目錄下進行,即/home/qing/ca,截圖為當時自己試驗時出現差錯,最後還要把生成的檔案移到工作目錄下)

1.生成伺服器端私鑰(key檔案)

openssl genrsa -des3 -out server.key 1024

此時輸入的密碼用於每次讀取私鑰檔案的口令,可以去除但是不推薦(openssl rsa -in server.key -out server.key)


2.生成CSR檔案(Certificate Signing Request),csr檔案經過ca簽名才能夠生成證書

openssl req -new -key server.key -out server.csr -config openssl.cnf


3.對客戶端進行相同操作生成key以及csr檔案

openssl genrsa -des3 -out client.key 1024

openssl req -new -key client.key -out client.csr -config openssl.cnf

4.自己做CA

openssl req -new -x509 -keyout ca.key -out ca.crt -config openssl.cnf


5.用自己生成的ca證書為server.csr和client.csr 簽名

openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf

openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -config openssl.cnf


相關文章