[Nginx] NGINX 設定 HTTPS 網頁加密連線,建立自行簽署的 SSL 憑證
#Step: 01 – 安裝與設定 LEMP 網頁伺服器
NGINX 設定 HTTPS 網頁加密連線
NGINX 設定 HTTPS 網頁加密連線
#Step: 02 – 建立自行簽署的 SSL 憑證
NGINX 設定 HTTPS 網頁加密連線
NGINX 設定 HTTPS 網頁加密連線
mkdir /etc/nginx/ssl
#Step: 03 – 產生自行簽署的 SSL 憑證
openssl 產生自行簽署的 SSL 憑證
openssl 產生自行簽署的 SSL 憑證
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt
##############################
以下是這裡使用到的參數與簡略說明:
req:使用 X.509 Certificate Signing Request(CSR) Management 產生憑證。
-x509:建立自行簽署的憑證。
-nodes:不要使用密碼保護,因為這個憑證是 NGINX 伺服器要使用的,如果設定密碼的話,會讓伺服器每次在啟動時書需要輸入密碼。
-days 365:設定憑證的使用期限,單位是天,如果不想時常重新產生憑證,可以設長一點。
-newkey rsa:2048:同時產生新的 RSA 2048 位元的金鑰。
-keyout:設定金鑰儲存的位置。
-out:設定憑證儲存的位置。
這裡我們會同時建立憑證與金鑰,建立的過程中會需要填寫一些基本的資料:
Country Name (2 letter code) [AU]:TW <1>
State or Province Name (full name) [Some-State]:Taiwan <2>
Locality Name (eg, city) []:Taipei <3>
Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Company <4>
Organizational Unit Name (eg, section) []:My Unit <5>
Common Name (e.g. server FQDN or YOUR name) []:myhost.gtwang.org <6>
Email Address []:user@gtwang.org <7>
1 國家代碼,台灣就填 TW。
2 州或省,台灣就填 Taiwan。
3 城市,例如台北就填 Taipei。
4 公司名稱。
5 部門名稱。
6 伺服器的 FQDN,這個一定要填寫正確,如果沒有申請網域名稱的話,也可以用 IP 位址替代。
7 E-mail 信箱。
填寫完成之後,憑證與金鑰的建立就完成了,而存放位置就在 /etc/nginx/ssl 目錄中。
#Step: 04 – 設定 NGINX 伺服器,在原本的設定檔中加上 SSL 的設定
設定 NGINX 伺服器,在原本的設定檔中加上 SSL 的設定
設定 NGINX 伺服器,在原本的設定檔中加上 SSL 的設定
server {
listen 80 default_server;
listen [::]:80 default_server;
# 加入 SSL 設定
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
# 憑證與金鑰的路徑
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
# ...
}
接著重新啟動 NGINX 伺服器:
nginx -t (檢查設定檔語法 是否正確 )
service nginx restart
OR
systemctl restart nginx.service
#Step: 05 – 開啟 HTTPS 的網址
開啟 HTTPS 的網址,正常來說瀏覽器會有憑證授權不可靠的警告
開啟 HTTPS 的網址,正常來說瀏覽器會有憑證授權不可靠的警告
https://xxx.xxx.xxx.xxx
#Step: 05 – 都使用加密的 HTTPS 連線
都使用加密的 HTTPS 連線 設定轉導
都使用加密的 HTTPS 連線 設定轉導
server {
listen 80 default_server;
listen [::]:80 default_server;
# 導向至 HTTPS
rewrite ^(.*) https://$host$1 permanent;
}
server {
# SSL 設定
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
# 憑證與金鑰的路徑
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
# ...
}
只要使用者輸入的是 HTTP ,也會自動導向至對應的 HTTPS 網址,
確保所有的網頁資料都一定會經過 HTTPS 來傳輸,降低資料被竊取的風險。
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言