美文网首页
在Nginx中配置SSL证书

在Nginx中配置SSL证书

作者: 康小曹 | 来源:发表于2021-11-09 20:27 被阅读0次

配置证书之前需要以下前置工作:

  1. 部署Nginx:centOS7中使用Nginx部署静态网页

  2. 申请 SSL 证书:按照阿里云 SSL 模块的文档正常申请证书;

  3. 下载证书:

下载证书

最终得到一个 .key 文件和 一个 .pem 文件:

key+pem

这两个文件的具体意义是啥?证书好说,key 呢?

接下来正式开始在 Nginx 上配置 SSL 证书:

1. 查看配置文件路径;

# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

2. 创建证书相关文件夹

mkdir /etc/nginx/cert // 最好放在nginx文件夹里面

3. 上传证书到服务器

可以使用 ssl 命令行来上传证书,但是这里使用 ftp 软件来进行上传,交互体验更好,直接拖进去就可以了:

上传证书

4. 添加 SSL 配置

此时可以通过 vim 指令修改上一步中的 nginx.conf 文件,但是这样体验不好,可以下载文件之后本地使用 ide 或者文本编辑器进行修改,这里使用的是 VSCode:

server {
    listen 443 ssl; // 这里是新的写法
    server_name your-domain.com; // 你的域名
    # ssl on; // 这种已经不使用了,这么写会报警告,可以直接去掉采用第一行的写法
    root /xxx/xxx/html; // 前台文件存放文件夹,一般使用 Nginx 初始化的文件夹,当然也可以自己修改
    index index.html;// 上面配置的文件夹里面的index.html
    ssl_certificate  /xxx/cert/214292799730473.pem;// 改成你的证书的名字
    ssl_certificate_key /xxx/cert/214292799730473.key;// 你的证书的名字
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    location / {
        index index.html index.htm;
    }
}
server {
    listen 80;
    server_name your-domain.com;// 你的域名
    rewrite ^(.*)$ https://$host:443$1 permanent;// 把http的域名请求转成https且转发到443端口
}

注意,一般而言,Ngnix 服务会有默认的 80 端口来接收 http 请求,所以上述的 80 端口配置中的 rewrite 需要直接添加到原配置上,否则前面的配置优先级更高,后面的 80 配置就无法生效了:

原配置中添加rewrite

结果:

重定向http到https

5. 上传配置文件

上传配置文件

6. 验证配置文件

上述的代码不能直接复制,会报错,因为无法识别双引号 //,conf 里面的注释是要用 # 来写的;

仍然使用第一步中的指令验证 conf:

nginx -t

6. 重新加载配置文件

nginx -s reload

结果:

SSL配置成功

补充:

  1. 为域名添加 SSL 证书时会需要在 DNS 解析记录中添加对应的值以完成验证:
image.png image.png image.png

多个证书就会有多个值,这个值感觉在验证完成之后(证书申请成功)就可以删除了

  1. 如果正确设置 Nginx 之后仍然无法访问 HTTPS,最好先检查下服务器实例的 443 端口有没有打开(安全策略组中有没有添加);

相关文章

网友评论

      本文标题:在Nginx中配置SSL证书

      本文链接:https://www.haomeiwen.com/subject/rvkvzltx.html