Site icon Mr. 沙先生

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:提供一系列套件產生、管理憑證

 

 

使用現有的憑證與金鑰
例外情況:

IP或Domain name有更改的狀況下不得使用先前建立的憑證和金鑰,若有這種狀況必需要重新建立憑證。
若你有購買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

新增virtualhost
<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/

Exit mobile version