星期三, 8月 29, 2007

建立https的SSL憑證

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

一、RHEL4 及 FC3 版本

 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 的檔案。

genrsa generate an RSA private 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 的檔案。

req - PKCS#10 certificate request and certificate generating utility.

-new

this option generates a new certificate request. It will prompt the user for
the relevant field values. The actual fields prompted for and their maximum
and minimum sizes are specified in the configuration file and any requested
extensions.

If the -key option is not used it will generate a new RSA private key using
information specified in the configuration file.

-x509
this option outputs a self signed certificate instead of a certificate
request. This is typically used to generate a test certificate or a self
signed root CA. The extensions added to the certificate (if any) are speci-
fied in the configuration file. Unless specified using the set_serial option
0 will be used for the serial number.

 在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.csrprivkey.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.crtserver.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 憑證即可。