參考 [Linux][架站] ubuntu 16.04 如何設定 apache 的 VirtualHost 可以架起 http:// 的網站,如果將 url 改成 https:// 會出現"無法連上這個網站"的畫面,因為 server 目前沒有監聽 443 port (可用 #netstat -nlpt 查看 有沒有443),這時需先啟用 ssl,如下:
$sudo su -
#a2enmod ssl
#service apache2 restart
檢查一下 server 有沒有監聽 443 port。
#netstat -nlpt
應該就會看到 443 了,這時url輸入 https:// 會出現跟剛剛不一樣的訊息 "這個網站無法提供安全連線",那是因為我們沒有憑證。
申請憑證需要費用,以 GoDaddy 的憑證為例,付費後會得到三個檔案(兩個crt、一個key),需要放在 server 指定位置上,如下:
/etc/ssl/certs/myweb.com.crt
/etc/ssl/certs/gd_bundle-g2-g1.crt
/etc/ssl/private/myweb.com.key
(可以用從別台已經有SSL的主機,用SCP將憑證複製過去 舉例: #scp /etc/ssl/certs/myweb.com.crt root@172.31.0.99:/etc/ssl/private/ PS.因為需要用root來執行scp 請先參考 Ubuntu 如何使用 root 連 ssh 或 scp )
有這三個檔案後才能正式進入設定的階段,步驟如下...
$sudo su -
#vim /etc/apache2/site-available/site.myweb.com.conf
複製 80 port 的設定,如下
<VirtualHost *:80>
(內容)
</VirtualHost>
然後,在下方貼上 (將 80 改成 443)
<VirtualHost *:443>
(原 80 port 內容)
<Directory /var/www/site.myweb.com>
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
SSLEngine on
SSLProtocol All -SSLv2 -SSLv3
SSLProtocol TLSv1.2 #傳輸安全性協定(TLS1.0~1.2) 2020年起建議使用1.2 避免瀏覽器顯示不安全的提示
SSLCertificateFile /etc/ssl/certs/myweb.com.crt
SSLCertificateKeyFile /etc/ssl/private/myweb.com.key
SSLCertificateChainFile /etc/ssl/certs/gd_bundle-g2-g1.crt
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
修改完 conf 檔後,重啟apache服務
#service apache2 restart
開啟 https://網址 應該就能看到網頁內容囉。
備註:
如果要讓 http:// 自動轉址到 https:// 方法如下:
#vim /etc/apache2/site-available/site.myweb.com.conf
<VirtualHost *:80>
(原內容)
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)?$ https://%{SERVER_NAME}$1 [R=301,L]
</VirtualHost>
改好後 啟用 Rewrite 功能
#a2enmod rewrite
#service apache2 restart
註1:
如果想要查詢SSL憑證的到期日
#cd /etc/ssl/certs/
#openssl x509 -enddate -noout -in myweb.com.crt
或者用 chrome 瀏覽器開啟網站 然後點擊上方網址列前面的鎖頭圖示
註2:
如果要調整傳輸安全性協定(例如:SSL3.0 or TLS1.0~1.2) 請修改
SSLProtocol TLSv1.2
No comments:
Post a Comment