以下會記錄在 RHEL 及 CentOS 7 下安裝及設定 Nginx SSL 的方法, 並會示範安裝自簽憑證及 CA 發行感證的步驟。
1. 安裝 Nginx:
Nginx 沒有包含在 CentOS 預設 Repository 內,要用 yum 安裝需要先啟用 EPEL Repository:
$ sudo yum install epel-release
安裝好 EPEL Repository 後,可以用 yum 很簡單地安裝 Nginx:
$ sudo yum install nginx
安裝好 Nginx 後,執行以下指令啟動 Nginx 及設定開機自動啟動 Nginx:
$ sudo systemctl start nginx
$ sudo systemctl enable nginx
$ sudo systemctl enable nginx
現在需要設定防火牆,開啟 port 80 及 443 的對外連線,如果用預設的 firewalld,可以執行以下指令:
$ sudo firewall-cmd –add-service=http
$ sudo firewall-cmd –add-service=https
$ sudo firewall-cmd –runtime-to-permanent
$ sudo firewall-cmd –add-service=https
$ sudo firewall-cmd –runtime-to-permanent
如果防火牆改成 iptables, 便要執行以下指令:
$ sudo iptables -I INPUT -p tcp -m tcp –dport 80 -j ACCEPT
$ sudo iptables -I INPUT -p tcp -m tcp –dport 443 -j ACCEPT
$ sudo iptables -I INPUT -p tcp -m tcp –dport 443 -j ACCEPT
現在用瀏覽器應該可以存取 Nginx 伺服器。
2. 設定 SSL Cert:
現在設定自簽憑證,以下會將憑證儲存在 /etc/ssl/private 下面:
$ sudo mkdir /etc/ssl/private
$ sudo chmod 700 /etc/ssl/private
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-ssl.key -out /etc/ssl/certs/nginx-ssl.crt
$ sudo chmod 700 /etc/ssl/private
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-ssl.key -out /etc/ssl/certs/nginx-ssl.crt
然後按照畫面回答一些關於網站的問題便完成。
現在建立 .pem 檔:
$ sudo openssl dhparam -out /etc/ssl/certs/nginx.pem 2048
3. 設定 Nginx 使用 SSL
現在可以設定 Nginx,建立 Nginx SSL 的設定檔 /etc/nginx/conf.d/ssl.conf:
$ sudo vi /etc/nginx/conf.d/ssl.conf
加入以下內容, 並將 server-name 及 server-ip 改成你的設定:
|
1 2 3 4 5 6 7 8 9 10 11 |
/etc/nginx/conf.d/ssl.conf server { listen 443 http2 ssl; listen [::]:443 http2 ssl; server-name server-ip; ssl_certificate /etc/ssl/certs/nginx-ssl.crt; ssl_certificate_key /etc/ssl/private/nginx-ssl.key ssl_dhparam /etc/ssl/certs/nginx.pem; } |
儲存檔案後,重新啟動 Nginx:
$ sudo systemctl restart nginx
然後應該可以開啟 Nginx 的 SSL 畫面。