Nginx部署SSL证书
下载证书
下载Nginx版本证书。下载到本地的压缩文件包解压后包含:
.crt
文件:是证书文件,crt
是pem
文件的扩展名。.key
文件:证书的私钥文件(申请证书时如果没有选择自动创建CSR,则没有该文件)。
说明: .pem
扩展名的证书文件采用Base64-encoded
的PEM
格式文本文件,可根据需要修改扩展名。
以Nginx标准配置为例,假如证书文件名是a.pem
,私钥文件是a.key
。
安装证书
在Nginx的安装目录下创建cert
目录(yum安装的目录在/etc/nginx),并且将下载的全部文件拷贝到cert
目录中。如果申请证书时是自己创建的CSR文件,请将对应的私钥文件放到cert
目录下并且命名为a.key
;
更新nginx配置文件如下:
server {
listen 443;
server_name www.domain.com; #填写绑定证书的域名
ssl on;
root html;
index index.html index.htm;
ssl_certificate cert/a.pem;
ssl_certificate_key cert/a.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
ssl_prefer_server_ciphers on;
location / {
root html; #站点目录
index index.html index.htm;
}
}
配置文件的主要参数说明如下:
listen 443
:SSL
访问端口号为443
ssl on
:启用SSL
功能ssl_certificate
:证书文件ssl_certificate_key
:私钥文件ssl_protocols
:使用的协议ssl_ciphers
:配置加密套件,写法遵循openssl
标准
执行以下命令,检验配置是否有误。
nginx -t
- 是,请重新配置。
- 否,重启 Nginx。即可使用https进行访问。
HTTP 自动跳转 HTTPS(可选)
对于用户不知道网站可以通过HTTPS方式访问的情况,我们可以通过配置服务器,让其自动将HTTP的请求重定向到HTTPS。
您可以在页面中添加JS脚本,也可以在后端程序中添加重定向,还可以通过Web服务器实现跳转。
若您在编译时没有去掉pcre
,Nginx 支持rewrite
功能。您可在HTTP的server
中增加rewrite ^(.*) https://$host$1 permanent;
,即可将80
端口的请求重定向为HTTPS。
server {
listen 80;
server_name deepwinter.com;
# redirect http tp https
rewrite ^(.*) https://$host$1 permanent;
}