每一次為Apache設置SSL,都覺得很頭痛,因為很久沒設置很快就忘記設置步驟,所以這一次設置順便做個筆記。
- 安裝相關軟件
yum install mod_ssl openssl
- 生成SSL証書和密鑰(如只是開發環境,可以不用生成密鑰和憑証,只需使用預設的密鑰和憑証即可)
# 生成密鑰 openssl genrsa -out ca.key 2048 # 生成憑証簽名申請 openssl req -new -key ca.key -out ca.csr # 生成自簽名憑証 openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt # Copy the files to the correct locations cp ca.crt /etc/pki/tls/certs cp ca.key /etc/pki/tls/private/ca.key cp ca.csr /etc/pki/tls/private/ca.csr
注意:如果有啓用SELinux,請使用複製方式將密鑰和憑証複製到/etc/pki/tls/下。因為密鑰和憑証沒有設定好SELinux context,Apache會提示讀取不到密鑰和憑証。
如果是使用移動檔案方式,亦可以使用以下指令把密鑰和憑証設定好SELinux context。# 設定 SELinux context restorecon -RvF /etc/pki
修改Apache ssl.conf
vi /etc/httpd/conf.d/ssl.conf
修改ssl.conf內容
SSLCertificateFile /etc/pki/tls/certs/ca.crt SSLCertificateKeyFile /etc/pki/tls/private/ca.key
重啓Apache
/etc/init.d/httpd restart
- 設置Virtual Hosts(如沒有設置,可忽略此步驟)
<VirtualHost *:80> <Directory /var/www/vhosts/yoursite.com/httpdocs> AllowOverride All </Directory> DocumentRoot /var/www/vhosts/yoursite.com/httpdocs ServerName yoursite.com </VirtualHost>
加入VirtualHost之前,需要先加入這一句在最上方
NameVirtualHost *:443
<VirtualHost *:443> SSLEngine on SSLCertificateFile /etc/pki/tls/certs/ca.crt SSLCertificateKeyFile /etc/pki/tls/private/ca.key <Directory /var/www/vhosts/yoursite.com/httpsdocs> AllowOverride All </Directory> DocumentRoot /var/www/vhosts/yoursite.com/httpsdocs ServerName yoursite.com </VirtualHost>
重啓Apache
/etc/init.d/httpd restart
- 設置防火牆
# 加入443規則 iptables -A INPUT -p tcp --dport 443 -j ACCEPT # 儲存規則 /sbin/service iptables save # 列出所有規則 iptables -L -v
鏈結到這頁!