最後修改日期: 2008/01/23

  
OpenSSL X.509 CA ( Certificate Authority )

Document made with Nvu


Description:

        在
FreeBSD 中採用 OpenSSL 製作 X.509 憑證簽發。完整的 SSL/X.509 應該要做三層:最高層認證中心 (Root CA) ,中間的認證中心 (CA) ,最後才簽發下面的憑證,而本筆記則只有做兩層直接用最高的 Root CA 向下簽證。

Environment :

硬體:i386 PC Intel P3 550 x 3 台
網卡:6 片網卡 《 每台各兩片:AP 為一片無線網卡 + 一片有線網卡,Gateway 則為兩片 100M 的有線網卡 》
作業系統:FreeBSD 6.2 Release

Setp 1.

設定 FreeBSD SSL 環境

# cd /etc/ssl       
# 切換到  FreeBSD /etc/ssl 目錄去設定 SSL
# mkdir -p /etc/ssl/private       
#  建立存放私鑰 Private Key 目錄
# chmod og-rwx /etc/ssl/private        #  更改 Private Key 目錄權限
# mkdir -p /etc/ssl/certs
# mkdir -p /etc/ssl/crl
# mkdir -p /etc/ssl/newcerts

# vi /etc/ssl/openssl.cnf        # 修改 ssl 設定檔目錄,將 demoCA Mark 起來再指向 /etc/ssl 目錄

#dir = ./demoCA
dir = /etc/ssl


Setp 2.

製作 Root CA 憑證,首先產生 Root Private key

# openssl genrsa -des3 -out /etc/ssl/private/myroot.key.pem 2048
# chmod og-rwx /etc/ssl/private/myroot.key.pem

接著填寫 Root  憑證申請書

# openssl req -new -key /etc/ssl/private/myroot.key.pem -out /tmp/myroot.req.pem

最後簽發憑證 ( Root 自己簽給自己 ) 有效期就簽 7300 天約 20 年

# openssl x509 -req -days 7300 -sha1 -extfile /etc/ssl/openssl.cnf -extensions v3_ca -signkey /etc/ssl/private/myroot.key.pem -in /tmp/myroot.req.pem -out /etc/ssl/certs/myroot.crt.pem

查看 /etc/ssl/private 目錄下是否有 myroot.key.pem Private Key 及 /etc/ssl/certs/ 下是否有 myroot.crt.pem Public Key

# ls /etc/ssl/private
/etc/ssl/cert

※ Private key 檔案在 /etc/ssl/private/myroot.key.pem 要小心保管,檔案讀取權限最好不要給第二個人知道而簽好的Public Key 在 /etc/ssl/certs/myroot.crt.pem 可盡量散出去給其他人

完成後砍掉憑證申請書同時並建立 hash 索引

# rm -f /tmp/myrootca.req.pem
# rehash /etc/ssl/certs

Setp 3.

製作 Server 的 Private key ,首先產生 Server 的 Private key

# openssl genrsa -out /etc/ssl/private/myserver.key.pem 2048
# chmod og-rwx /etc/ssl/private/myserver.key.pem

※ Server 的 Private Key 不要設密碼,每當 SSL 伺服器程式重新啟動時就會去讀憑證和 Private Key 這時就會再問一次密碼,這樣每次重開機時都要停下來等鍵盤輸入密碼會很麻煩。

用 Server 的 Private Key 填寫憑證申請書

# openssl req -new -key /etc/ssl/private/myserver.key.pem -out /tmp/myserver.req.pem

使用 ROOT CA 來簽發 Server 的憑證,設 730 天 2 年

# openssl x509 -req -days 730 -sha1 -extfile /etc/ssl/openssl.cnf -extensions v3_req -CA /etc/ssl/certs/myroot.crt.pem -CAkey /etc/ssl/private/myroot.key.pem -CAserial /etc/ssl/myroot.srl -CAcreateserial -in /tmp/myserver.req.pem -out /etc/ssl/certs/myserver.crt.pem

一樣記得刪除憑證申請書

# rm -f /tmp/www.req.pem

製作 Client 的 Private key 與 Server 產生的過程一樣首先產生 Client 的 Private key

# openssl genrsa -out /etc/ssl/private/myclient.key.pem 2048
# chmod og-rwx /etc/ssl/private/myclient.key.pem

用 Client 的 Private Key 填寫憑證申請書

# openssl req -new -key /etc/ssl/private/myclient.key.pem -out /tmp/myclient.req.pem

使用 ROOT CA 來簽發 Client 的憑證,設 730 天 2 年

# openssl x509 -req -days 730 -sha1 -extfile /etc/ssl/openssl.cnf -extensions v3_req -CA /etc/ssl/certs/myroot.crt.pem -CAkey /etc/ssl/private/myroot.key.pem -CAserial /etc/ssl/myroot.srl -CAcreateserial -in /tmp/myclient.req.pem -out /etc/ssl/certs/myclient.crt.pem

一樣別忘記要刪除憑證申請書

# rm -f /tmp/myclient.req.pem


Reference:

http://www.imacat.idv.tw/tech/sslcerts.html.zh-tw