2005年9月9日 星期五

建立https的SSL憑證(適用RHEL 4及Fedora Core 3)

 前一陣子課程介紹到 https,正好在課堂上發生一個問題,課程中講師教我們如何啟動 http 的 SSL 機制,但我的 Firefox 卻無法與本機的 https 連線,出現憑證已存在,序號不一致...等訊息,突然想到在做這個 LAB 之前,有用 firefox 與公司的 webmail 做連線,公司的 webmail 也是走 https protocol ,由於當時並不是很清楚如何建立一個新的憑證,所以使用 Linux 預設本身的 SSL 憑證,發行者都為 localhost.localdomain,於是最近開始研究如何在 Linux 建立一個新的憑證,網路上這方面的資料不是很清楚,RHCE 的課程中也沒有講解如何建立 SSL 憑證,僅能藉由教材中半頁及網路上收集的資料進行測試,在這整理出 RHEL4 中的建立步驟及網路提供的方法。

一、RHEL4 及 Fedora Core3 版本
 1. 到 /etc/httpd/conf/ 目錄下來建立憑證,目錄下有許多 ssl.* 的目錄,建立後的憑證要各別放入所屬的目錄中。
  # cd /etc/httpd/conf/
 2. 建立 server.key 使用 1024-bit key 加密,一般也可使用 512-bit key 或 2048 -bit key,使用越大的 bit 數加密,解密的時間越長,雖然安全性越高,但所花的連線時間也會越長,所以建議使用 1024-bit 即可。
  # openssl genrsa -out server.key 1024   Generating RSA private key, 1024 bit long modulus
   ..++++++
   .......++++++++
   e is 65537 (0x10001)

  每次執行時上面的訊息都會有些許不同,檢查執行後目錄下是否有產生 server.key 的檔案。
 3. 建立 server.crt 憑證,有效時間為 365 天,使用 X.509 憑證格式。
  # openssl req -new -key server.key -out server.crt -x509 -days 365
   You are about to ..................................................................................................................................................................
   If you enter '.', the field will be left blank.
   -----
   Country Name (2 letter code) [GB]:
TW <輸入國家簡稱(兩個字母)
   State or Province Name (full name) [Berkshire]:Taiwan <輸入省或州
   Locality Name (eg, city) [Newbury]:Taipei <輸入城市名稱
   Organization Name (eg, company) [My Company Ltd]:XYZ <輸入公司名稱
   Organizational Unit Name (eg, section) [ ]:ABC <輸入部門
   Common Name (eg, your name or your server's hostname) [ ]:www.xyz.com.tw <建議輸入主機的FQDN
   Email Address [ ]:service@mail.xyz.com.tw <輸入管理者的mail

  檢查執行後目錄下是否有產生 server.crt 的檔案。

 在Linux下只要兩行指令即可產生憑證及key。
 4. 接下來只要將 server.crt 及 server.key 搬移到相關的目錄中即可。
  # mv server.key /etc/httpd/conf/ssl.key/
  # mv server.crt /etc/httpd/conf/ssl.crt/
 5. 若不知道你的 httpd 所放置 crt 及 key 的位置,可檢查 httpd.conf 裡,SSLCertificateFile 及 SSLCertificateKeyFile 的參數。
  #vi /etc/httpd/conf/httpd.conf
   SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
   SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key
 6. 最後只要重新啟動 httpd 新的憑證即可生效。
  # service httpd restart

二、網路版本(應適用舊版本Linux,也適用FC3及REL4)
 1. 先建立 server.csr
  # openssl req -new > server.csr

   Generating a 1024 bit RSA private key
   .++++++
   .........................................++++++++
   writing new private key to 'privkey.pem'
   Enter PEM pass phrase: <輸入四碼以上的 password
   Verifying - Enter PEM pass phrase: <再輸入一次四碼以上的 password

   -----
   You are ....................................
   -----
   Country Name (2 letter code) [GB]:
TW <輸入國家簡稱,以下與方法一相同。
   .............................
   Please enter ..................
   A challenge password [ ]:
 <直接按"Enter"

   An optional company name [ ]: <直接按"Enter"
   
執行後會產生兩個檔案 server.csr 及 privkey.pem
 2. 接下來產生加密的 key
  # openssl rsa -in privkey.pem -out server.key
   Enter pass phrase for privkey.pem: <輸入上一個指令中phrase 的 password,必須要與上一個指令中所輸入的 phrase 密碼一樣,輸入後會寫入 server.key 中。
   執行後會產生 server.key 
的檔案。
 3. 最後產生 server.crt 的憑證
  # openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 365
  執行後會產生 server.crt 的憑證。
 4. 接下來只要將 server.crt 及 server.key 搬移到相關目錄中,然後將 httpd 重新啟動即可生效。
三、由第三方產生憑證
 1. 若要由第三方公信單位授發憑證,則需產生 server.csr 檔案
  # openssl genrsa -out server.key 1024
  # openssl req -new -key server.key -out server.csr

  執行後會產生 server.csr 的檔案,並將 server.csr 寄給第三方公信單位產生 server.crt 憑證即可。


沒有留言:

張貼留言