CentOS 7:Apache強制使用https〈使用mod_rewrite、mod_ssl、openssl〉
安裝SSL加密軟體
使用root身份,利用 OpenSSL 來產生一張自我簽署的憑證
更新 Apache SSL 的設定檔
修改路徑至金鑰檔案的儲存位置
如果沒有使用Virtual Host,直接在httpd.conf的最後面加入
如果有使用Virtual Host,範例如下
儲存離開,重新啟動 Apache
現在已經擁有一個以自我簽署憑證來支援 https 的網站。如果無法連線,需要更改 iptables 規則
[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
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
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
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
# 預設為localhost.key
SSLCertificateKeyFile /etc/pki/tls/private/ca.key
SSLCertificateFile /etc/pki/tls/certs/ca.crt
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>
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>
...
<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 ~]# 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
留言
張貼留言