前一陣子課程介紹到 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/
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 的檔案。
# 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。
# 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/
# 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
#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
# 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。
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 的檔案。
# 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 的憑證。
# 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 憑證即可。
1. 若要由第三方公信單位授發憑證,則需產生 server.csr 檔案
# openssl genrsa -out server.key 1024
# openssl req -new -key server.key -out server.csr
執行後會產生 server.csr 的檔案,並將 server.csr 寄給第三方公信單位產生 server.crt 憑證即可。
沒有留言:
張貼留言