CentOS 7:Apache強制使用https〈使用mod_rewrite、mod_ssl、openssl〉

安裝SSL加密軟體
yum install -y mod_ssl openssl

使用root身份,利用 OpenSSL 來產生一張自我簽署的憑證
  # 產生私鑰
openssl genrsa -out ca.key 2048

# 產生 CSR
openssl req -new -key ca.key -out ca.csr

# 產生自我簽署的金鑰
openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt

# 複製檔案至正確位置
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

更新 Apache SSL 的設定檔
vi +/SSLCertificateFile /etc/httpd/conf.d/ssl.conf

修改路徑至金鑰檔案的儲存位置
# 預設為localhost.crt
SSLCertificateFile /etc/pki/tls/certs/ca.crt

# 預設為localhost.key
SSLCertificateKeyFile /etc/pki/tls/private/ca.key

如果沒有使用Virtual Host,直接在httpd.conf的最後面加入 
  <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
  </IfModule>

如果有使用Virtual Host,範例如下 
<VirtualHost *:80>
  ...
  <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
  </IfModule>
</VirtualHost>

儲存離開,重新啟動 Apache
systemctl restart httpd

現在已經擁有一個以自我簽署憑證來支援 https 的網站。如果無法連線,需要更改 iptables 規則
[root@testuse ~]# iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
[root@testuse ~]# iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
[root@testuse ~]# service iptables save
[root@testuse ~]# iptables -L -n

ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:443
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:80

留言

這個網誌中的熱門文章

Centos 7:安裝openldap servers + clients

CentOS 7:安裝Proftpd〈提供 FTP、FTPs與SFTP〉

Apache的一些安全性設定