以下会记录在 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 画面。