Ubuntu Nginx 設定HTTPS建立網頁加密連線 (Godaddy SSL憑證)

1.先確認Nginx是否有安裝以及確認Nginx設定檔的路徑

- sudo nginx -t




2.建立一個放置憑證的目錄,目錄的路徑可以自由選擇,放在哪裡都可以,而考量到這個憑證是 NGINX 專用的,所以跟 NGINX 的設定檔放在一起可能會比較好管理。

- sudo mkdir /etc/nginx/ssl


3.使用 openssl 產生自行簽署的 SSL 憑證,會產生 yourdomain.csr & yourdomain.key 兩個檔案,並且將憑證的存放路徑設成剛剛步驟2建立的目錄:

# 產生自行簽署的 SSL 憑證
- sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt

# 已有線上購買 SSL 憑證 (將csr檔的內容貼至godaddy驗證)
- sudo openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr

  • 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]:TW1
State or Province Name (full name) [Some-State]:Taiwan2
Locality Name (eg, city) []:Taipei3
Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Company4
Organizational Unit Name (eg, section) []:My Unit5
Common Name (e.g. server FQDN or YOUR name) []:myhost.gtwang.org6
Email Address []:user@gtwang.org7
1 國家代碼,台灣就填 TW
2 州或省,台灣就填 Taiwan
3 城市,例如台北就填 Taipei
4 公司名稱。
5 部門名稱。
6 伺服器的 FQDN,這個一定要填寫正確,如果沒有申請網域名稱的話,也可以用 IP 位址替代。
7 E-mail 信箱。
填寫完成之後,憑證與金鑰的建立就完成了,而存放位置就在 /etc/nginx/ssl目錄中。
4.設定 NGINX 伺服器,在原本的設定檔中加上 SSL 的設定,並且設定憑證與金鑰的路徑:

- sudo vim  /etc/nginx/sites-available/default



設定完成後重新啟動 Nginx

- sudo service nginx restart

5.讓所有的 HTTP 的網址自動導向至 HTTPS 的網址:



這樣就算使用者輸入的是 HTTP 這種未加密的網址,也會自動導向至對應的 HTTPS 網址,確保所有的網頁資料都一定會經過 HTTPS 來傳輸,降低資料被竊取的風險。

留言