nginx 配置 SSL 证书实现 https 访问

本文介绍了如何使用SSL证书将HTTP升级为HTTPS,包括SSL证书的简介、获取方法(云flare长时证书),以及如何在Nginx中配置SSL文件,设置强制HTTPS访问和验证配置结果。
摘要由CSDN通过智能技术生成


同步发布在个人笔记 nginx 配置 SSL 证书实现 https 访问

配置好 nginx 服务,并且把域名解析到服务器后,我们已经可以通过 http://mydomain.com访问到页面了。但是 http 协议是明文通信,如果我们希望我们的服务器与web应用更安全的话,就应该使用 https 协议。本文就记录一下 nginx 配置 SSL 证书实现 https 协议的过程。SSL 证书采取 cloudflare 颁发的长时间证书。
域名解析:域名获取 · 解析至公网服务器
nginx 部署: DOCKER部署NGINX,PHP环境(步骤+注解)

1. SSL 证书简介与获取

1.1 SSL 证书介绍

如上文所说,http 协议是明文协议,https 协议是加密协议,这个加密过程就是通过 SSL(Secure socket layer) 证书(其中一种方式)实现的。SSL 证书分为两部分

  • xxx.pem 证书文件
  • xxx.key 私钥文件

两个文件将服务器与域名绑定在一起,这样就能通过 https 协议和这个域名,安全的访问服务器上的 web 应用了。

1.2 获取 SSL 证书

SSL 证书可以向 CA 机构通过付费的方式申请(证书都是有有效期的),也可以自己制作。一般企业会去购买证书,个人用户推荐使用免费的证书。
上面已经说明,SSL 证书将域名和服务器绑定。那我们就可以找相关服务商申请证书,比如阿里云、腾讯云、华为云已经经典的 Let’s Encrypt 方式。
由于我的服务器是让 cloudflare 管理的,那就正好使用 cloudflare 的长时期(15年)证书吧。
注意要使用 cloudflare 的 SSL 证书必须要开启 CDN 服务,也就是 DNS 那里的小云朵,详细也可以参考笔记:域名解析:域名获取 · 解析至公网服务器
现在假设我们已经把域名通过 cloudflare 解析到我们的服务器,并且已经开启 CDN 小云朵了。
在这里插入图片描述

进入站点的管理界面,选择左侧栏的SSL/TLS —>概述,并将加密模式改为完全(严格)
在这里插入图片描述

点击源服务器,进入创建界面
在这里插入图片描述

确定包含的域名包含我们的domain.com和所有 CNAME 的域名*.domain.com
在这里插入图片描述

点击创建即可,获得两个文本,建议保存为与域名相关的文件

  • domain_com.pem
  • domain_com.key

文件务必要保存好,尤其是key私钥文件,后面是不能通过网页再次查看的。
这样我们的 SSL 证书就获取好了。

2. nginx 配置 SSL 文件

2.1 SSL 文件放置与配置文件修改

2.1.1 文件配置

nginx 配置 SSL 文件实际上是为一个域名配置 https 服务,所以归根结底是配置一个新域名-服务,所以应该配置在conf.d 文件夹。
/etc/nginx/conf.d/文件夹下新建SSL文件夹,用来存放刚刚获得的domain_com.pem, domain_com.key。然后新建domain_com.conf, 编辑为类似如下的内容:

server {
     listen	443 ssl;		# HTTPS的默认访问端口443。     
     server_name	domain.com;		# 证书绑定的域名
     
     ssl    on;		# 开启 SSL
     ssl_certificate	/etc/nginx/cond.d/SSL/domain_com.pem;		# 绝对路径
     ssl_certificate_key	/etc/nginx/cond.d/SSL/domain_com.key;		# 绝对路径
 
     ssl_session_cache shared:SSL:1m;
     ssl_session_timeout 5m;

     #自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
     #TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
     ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
     #表示优先使用服务端加密套件。默认开启     
     ssl_prefer_server_ciphers on;

	 # log 文件
     access_log /var/log/nginx/nginx.vhost.access.log;
	 error_log /var/log/nginx/nginx.vhost.error.log; 
 
    location / {
           root html;
           index index.html index.htm;
           #其他的配置~~
    }
}

TLS 没开的话把相关部分关掉即可。

2.1.2 强制 https 访问

如果希望所有通过此域名的访问都必须走 https 协议的话,可以在上面的配置语句后面跟上强制跳转的语句:

server {
    listen 80;
    #填写证书绑定的域名
    server_name domain.com;
    #将所有HTTP请求通过rewrite指令重定向到HTTPS。
    rewrite ^(.*)$ https://$host$1;
    location / {
        index index.html index.htm;
    }
}

2.2 验证配置结果

配置好后。通过systemctl restart nginx重启 nginx 服务并加载配置文件。
然后去浏览器输入https://domain.com看看是否能访问吧。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值