Thursday, March 11, 2021

設定 nginx SSL 安全連線

上篇設定好了 Wordpress 可是只能用 http 連線,一直看到瀏覽器提醒很討厭,所以就來研究一下怎麼設定 nginx 網站的SSL連線。參考資料是這篇。以下指令都要用root權限執行。


1. 製作憑證/密鑰。


我不是很確定系統哪裡放密鑰比較好,所以我參考這篇放在 /root 下面:

mkdir /root/certs/

接下來用這個指令製作密鑰:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /root/certs/nginx.key -out /root/certs/nginx.crt

系統會問你一串問題,但最重要的是 Common Name (e.g. server FQDN or YOUR name)要填正確的 domain name

執行完後會得到一組密鑰,其中 nginx.crt 是公開的憑證,nginx.key 是系統的密鑰。


2. 設定 nginx


vim /etc/nginx/sites-available/default

重點如下:

listen 443 ssl default_server;
listen [::]:443 ssl default_server;
ssl_certificate     /root/certs/nginx.crt;
ssl_certificate_key /root/certs/nginx.key;
ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers         HIGH:!aNULL:!MD5;

存檔後重啟 nginx:

nginx -t
service nginx restart

基本上就大功告成了

3. 附記


雖然這樣就結束設定,但是瀏覽器不會喜歡這個憑證。因為這個憑證沒有經過認證。連線是安全的,但是因為每個人都可以設定,現在的瀏覽器喜歡經過認證的憑證。稍微查了一下,十分昂貴呢。所以我也不確定這個小小的個人 project 會不會變成吸金怪獸....


No comments: