如何给网站配置SSL证书
配置SSL使得Nginx支持HTTPS协议(开发环境)
很多情况下,项目的前端页面可能已经上线(已发布),并且通过HTTPS协议来访问页面(一般情况下公司不会在项目中混合使用HTTP和HTTPS协议,即当页面是基于HTTPS协议进行请求的,那么对应页面中的静态资源也必须通过HTTPS协议来请求)。此时前面的Nginx配置已经不能满足当前的代理需求(直接加HTTPS方式请求本地静态资源直接报404),因此我们需要让本地的Nginx也支持HTTPS协议。下面我们一步一步的来完成Nginx的SSL配置。
一、生成私钥(server.key)及crt证书(server.crt)
首先需要创建一个目录来存放SSL证书相关文件
$ cd /etc/nginx$ sudo mkdir ssl$ cd ssl
1. 生成server.key
$ openssl genrsa -des3 -out server.key 2048
以上命令是基于des3算法生成的rsa私钥,在生成私钥时必须输入至少4位的密码。
2. 生成无密码的server.key
$ openssl rsa -in server.key -out server.key
3. 生成CA的crt
$ openssl req -new -x509 -key server.key -out ca.crt -days 3650
4. 基于ca.crt生成csr
$ openssl req -new -key server.key -out server.csr
命令的执行过程中依次输入国家、省份、城市、公司、部门及邮箱等信息。
5. 生成crt(已认证)
$ openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt
二、 更改配置文件
1. 更改虚拟主机配置文件
vi /usr/local/nginx/conf/vhost/www.abc.com.conf
更改成如下面所示
server
{
listen 80;
listen 443 ssl;
ssl on;
ssl_certificate /root/ssl.crt;
ssl_certificate_key /root/ssl.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
server_name www.abc.com;
add_header Strict-Transport-Security "max-age=31536000";
}
保持文件,退出
二、 更改配置文件
重启nginx
$ sudo nginx -s reload
或者 lnmp nginx restart