2013年7月2日 星期二

RHEL / CentOS Apache SSL 筆記

RHEL / CentOS Apache SSL 筆記

參考文件:RHEL5 Deployment Guide
date: 2007/11/12

套件需求:

http:apache web server
mod_ssl:apache mod_ssl模組
openssl:用來實踐SSL及TLS協定
crypto-utils:提供一系列套件產生、管理憑證

使用現有的憑證與金鑰

例外情況:
  1. IP或Domain name有更改的狀況下不得使用先前建立的憑證和金鑰,若有這種狀況必需要重新建立憑證。
  2. 若你有購買VeriSign的憑證並且準備更換軟體,由於VeriSign所發行的憑證是給特定用途的軟體、IP或domain name,所以不得延續使用現有的憑證。

產生憑證及金鑰

1.移除在安裝時建立的測試憑證及金鑰
Shell> cd /etc/httpd/conf
Shell> rm ssl.key/server.key
Shell> rm ssl.crt/server.crt

2.使用 crypto-utils 所含的 genkey 指令來產生金鑰,假設要建立 www.example.com 的金鑰,使用如下指令
Shell> genkey --days 3650 www.mycompany.com

#注意RHEL5不再使用make的方式產生金鑰,改由genkey代替。
# --days 代表憑證有效時間,單位為天,若不指定預設為30天
3. genkey www.example.com 後的畫面
RHEL4版預設將金鑰及憑證存放於/usr/share/ssl/private和/usr/share/ssl/certs


4.選擇鑰產生的金鑰的位元,位元愈小Server回應的速度愈快,但比較不安全。請依照自己的需求進行選擇。

5. 按下『下一步』後,系統會依照你所選擇的位元亂數產生金鑰,這將會需要一些時間。

6.產生完key後,會詢問你是否要向憑證單位申請憑證,我這裡選否,由自己發佈憑證。


7.填寫憑證內容
Country Name (ISO 2 letter code):TW
#填寫國家代碼,台灣為TW
State or Province Name (full name):
#填寫州、省,台灣沒有州、省,所以略過
Locality Nmae (e.g. city):Taipei
#填寫城市名如Taipei
Organization Name (eg, company):MyCompany
#填寫公司或組織名稱如MyCompany
Organizational Unit Name (eg, section):IT
#填寫公司或組織單位如IT
common Name (FQDN):www.mycompany.com
#填寫網站 hostname如:www.mycompany.com
其餘可以略過不填寫

8. 接下來會問你要不要使用一組密碼來保護你的私鑰,但是這樣每次重新啟動apache時都會詢問你一次,但有的話會比較安全。依照你自己的需求選擇,我選擇NO。(我有個同事在客戶的機器上設定密碼,結果他離職後也沒有交接,搞得我自己也很難過)

9. 一切大功告成,依照你的 RHEL 版本會放在 /usr/share/ssl/private|certs(RHEL4),/etc/pki/tls/private|certs(RHEL5)下

10.修改 /etc/httpd/conf.d/ssl.conf 裡的 SSLCertificateFile 和 SSLCertificateKeyFile 參數,指到存放憑證及金鑰的路徑。
Shell> vi /etc/httpd/conf.d/ssl.conf
SSLCertificateFile /usr/share/ssl/certs/www.example.com.crt
SSLCertificateKeyFile /usr/share/ssl/private/www.example.com.key
新增vertualhost
<VirtualHost *:443>
DocumentRoot /var/lib/www
ServerName www.example.com
</VirtualHost>
11.重新啟動apache
Shell> /sbin/service httpd restart

Troboshooting

  • Q1:
    連結 https://hostname 都會出現錯誤,apache 的 error log 出現 Invalid method in request x16x03x01。

    A1:
    將所有的 <VirtualHost 0.0.0.0> 改成 <VirtualHost *:80>試試看,若有NameVirtualHost 0.0.0.0 也改成 NameVirtualHost *:80
    即可解決上述問題。

    參考:
    http://www.mail-archive.com/modssl-users@modssl.org/msg17516.html

轉貼至http://beakdoosan.blogspot.tw/

沒有留言:

張貼留言