SSL憑證導入

先簡單介紹一下SSL憑證

SSL 採用的是 X.509 ,由上而下的金字塔架構

在 X.509 中,每個合格的憑證上面,都會有簽名, 最下層的憑證上,有上層認證中心( CA ,註一)的數位簽名,表示這個憑證被上層 CA 檢查過. 同樣的,上層 CA 上面會有管轄他的最高層認證中心( root CA )的簽名. 而 root CA 因為沒有更高層的單位,所以憑證上面的簽名是自己簽的.

會用到 SSL 的程式,通常都會內含幾家 CA 的憑證,往後接到憑證後,會確認上面的簽名是不是已經有認得(也就是內含)的CA簽名.
1.如果有,那就表示這個憑證是合格的,開始接下來的加密傳輸動作
2.如果沒有,就會被認為是無效或不安全的憑證,會出現”憑證無效”的警告

Windows 已經內建幾個CA的憑證,所以一般使用是沒有問題的.
但是如果自己架設網站,想要開啟 SSL 功能呢??總不可能也花個好幾萬請 CA 幫你簽名,更不用說這還有使用期限.

下面介紹的就是如何建個屬於自己的憑證,讓往後各種功能都可以正常使用SSL
(環境使用 FreeBSD 4.x 內建的 OpenSSL , 且已在 FreeBSD 6.0上確認可行)

註一: Certificate Authority,Windows翻譯成”憑證授權”,這邊指的是認證單位

1. 設定 OpenSSL

FreeBSD 內建的 OpenSSL 設定,放在 /etc/ssl

1-1. 設定各個相關目錄

mkdir -p /etc/ssl/private
chmod og-rwx /etc/ssl/private
mkdir -p /etc/ssl/certs
mkdir -p /etc/ssl/crl
mkdir -p /etc/ssl/newcerts

1-2. 修改 openssl 設定
修改 /etc/ssl/openssl.cnf

把這一行

dir = ./demoCA # Where everything is kept

改成

dir = /etc/ssl # Where everything is kept

2. 製作 Root CA 的憑證

這個動作只需要作一次,往後都使用這個憑證就可以了,除非 Private key 外洩 / 檔案遺失 / 憑證過期,不然絕對不要重作 root CA 憑證
先假設我們要作的最高層認證中心叫做 kaienroid

2-1. 製作 Private key
記得設定 Private Key 的 password

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

2-2. 填寫憑證申請書
憑證申請書,是用來和 Private Key 交給一起認證中心以便審核並簽名用的.
填寫時會詢問一些資訊,照著提示填就好了,密碼不需要設.

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

2-3. 簽發憑證
前面已經提過,因為 root CA 沒有上層單位,所以只能自己簽
root CA 最好不要過期,一旦過期所有 root CA 簽名的憑證會通通失效,所有憑證得重新做過,非常麻煩
預設是30天,為保險起見, 有效期就簽 7300 天 (約 20 年)

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

完成後記得砍掉憑證申請書,並建立hash索引

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

這樣就好了
Private key 檔案在 /etc/ssl/private/kaienroid.key.pem ,小心保管,檔案讀取權限最好不要給第二個人有

簽好的Public Key 在 /etc/ssl/certs/kaienroid.crt.pem , 盡量散出去給其他人,往後所有 SSL 憑證都認這個
可能的話把這個 Public key 加到各程式內建的憑證列表裡,往後用這個簽名後的憑證就不會再顯示 “憑證無效”

Pages: 1 2

RSS feed | Trackback URI

2 Comments »

Comment by cypress
2007-07-11 19:12:27

你好,感謝你的文章,讓我很快速的建立起我的 ca。
但想再問一個問題,在我所看到的 hp 印表機中,所使用的憑證好像有點出入
下面的連結是我把不一樣的地方擷取下來的
http://photo.xuite.net/potsunglo/1852051/1.jpg
在圖中,可以發現,我們所做出來的憑證只是最上層,但 hp 確可以做出二層
,可以解釋一下嗎?

我找了網路,都沒有這樣的教學,麻煩你了。

 
Comment by roid
2007-07-15 14:04:06

請看步驟 3, 步驟 3 作出來的憑證就是第二層的.
重點在 3-3, 看你的新憑證要擺在哪個 root CA 下面, 就使用那個 root CA 來簽憑證.

換句話說, 你只要把 3-3 指令裡的 kaienroid.crt.pem / kaienroid.key.pem 換成你的 root CA key pair, 簽出來的就會是你的 root CA 下面的第二層.

同理可證, 你想往下簽幾層都沒有關係, 只要 root CA 有被認可, 下面的通通都會被接受.

 
Name
E-mail
URI
Your Comment (smaller size | larger size)
You may use <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> in your comment.

Trackback responses to this post