Nginx服务器SSL证书安装部署
SSL
证书也称为服务器证书,是遵守全球统一的严格身份认证的SSL
协议的一种数字证书,由全球信任的证书颁发机构(CA)验证服务器身份后颁发。将SSL
证书安装在网站服务器上,可实现网站身份验证和数据加密传输双重功能。用户通过
http
协议访问网站时,浏览器和服务器之间是明文传输,这就意味着用户填写的密码、帐号、交易记录等机密信息都是明文,随时可能被泄露、窃取、篡改,被黑客加以利用。安装SSL
证书后,使用https
协议加密访问网站,可激活客户端浏览器到网站服务器之间的SSL加密通道
(SSL协议
),实现高强度双向加密传输,防止传输数据被泄露或篡改钓鱼欺诈网站泛滥。同时,网站部署全球信任的
SSL
证书后,浏览器内置安全机制,实时查验证书状态,通过浏览器向用户展示网站认证信息,让用户轻松识别网站真实身份,防止钓鱼网站仿冒。
操作场景
-
Nginx
版本为nginx/1.18.0
-
服务器的操作系统为
CentOS 7
,由于操作系统的版本不同,详细操作步骤略有区别 -
安装
SSL
证书前,需要服务器安全组放行443
端口,如果用了运维工具如宝塔面板的话,在运维工具防火墙里也要放行443
端口,以避免证书安装后无法启用HTTPS
-
本教程所使用服务器为腾讯云服务器,证书是在腾讯云控制台
SSL证书
里申请的
操作步骤
证书安装
-
下载证书并解压
解压缩后,可获得相关类型的证书文件:
www.test.com_bundle.crt
证书文件www.test.com_bundle.pem
证书文件www.test.com.key
私钥文件www.test.com.csr
CSR 文件 -
登录远程服务器并将
www.test.com_bundle.crt
证书文件和www.test.com.key
私钥文件从本地上传到Nginx
服务器的/usr/local/nginx/conf
目录下注意:此路径为
Nginx
默认安装目录,根据自己实际情况操作 -
编辑
Nginx
根目录下的conf/nginx.conf
文件vim /usr/local/nginx/conf/nginx.conf
由于版本问题,配置文件可能存在不同的写法
例如:
Nginx
版本为nginx/1.15.0
以上用listen 443 ssl
代替listen 443
和ssl on
server { #SSL 访问端口号为 443 listen 443 ssl; #填写绑定证书的域名 server_name www.test.com; #证书文件名称 ssl_certificate www.test.com_bundle.crt; #私钥文件名称 ssl_certificate_key www.test.com.key; ssl_session_timeout 5m; #按照以下协议配置 ssl_protocols TLSv1.2 TLSv1.3; #按照以下套件配置,配置加密套件,写法遵循 openssl 标准。 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; location / { #网站主页路径。此路径仅供参考,具体按照实际目录操作。 #例如,网站运行目录在/etc/www下,则填写/etc/www。 root html; index index.html index.htm; } }
-
在
Nginx
根目录下验证配置文件./sbin/nginx -t
若存在问题,就重新配置或者根据提示修改存在问题
-
重启
Nginx
重启之后就可以使用
https://www.test.com
进行访问
HTTP自动跳转HTTPS
-
如果需要将
HTTP
请求自动重定向到HTTPS
的话,可以通过以下操作设置server { #SSL 访问端口号为 443 listen 443 ssl; #填写绑定证书的域名 server_name www.test.com; #证书文件名称 ssl_certificate www.test.com_bundle.crt; #私钥文件名称 ssl_certificate_key www.test.com.key; ssl_session_timeout 5m; #按照以下协议配置 ssl_protocols TLSv1.2 TLSv1.3; #按照以下套件配置,配置加密套件,写法遵循 openssl 标准。 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; location / { #网站主页路径。此路径仅供参考,具体按照实际目录操作。 #例如,网站运行目录在/etc/www下,则填写/etc/www。 root html; index index.html index.htm; } } server { listen 80; #填写绑定证书的域名 server_name www.test.com; #把http的域名请求转成https return 301 https://$host$request_uri; }
-
修改完成后重启
Nginx
当在浏览器输入
http://www.test.com
进行访问时:会自动跳转为
https://www.test.com
评论区