nginx配置https

什么是HTTPS?

​ 在网上冲浪时,大家可能已经注意到链接(URL)通常以HTTP或HTTPS开头。这次我们不会讲解HTTP到底是什么或它如何工作,但是足以说明最后的的“ S”代表“安全”(Secure)。基本上,当大家使用HTTP时,浏览器发送或接收的所有内容都是纯文本格式。HTTP使某些人(黑客)很容易在Internet上查看您所做的事情。HTTPS添加了加密和其他保护,所以可以确定只有两个人可以看到数据:浏览器和链接另一端的Web服务器。

如何使用?

​ HTTPS核心的一个部分是数据传输之前的握手,握手过程中确定了数据加密的密码。在握手过程中,网站会向浏览器发送SSL证书,SSL证书和我们日常用的身份证类似,是一个支持HTTPS网站的身份证明。接触过运维的伙伴们都知道,国内几个大平台:阿里云,百度云,腾讯云,华为云等都有提供SSL证书申请服务,但是这些服务大多是都是收费的,虽说也有单域名免费申请,但是其流程比较麻烦,今天就给大家推荐一个免费证书颁发机构:Let's Encrypt

申请证书

​ 接下来教大家如何为Linux下nginx服务器申请SSL证书(其他操作系统和服务器均可参考Let's Encrypt文档)。

  • Let's Encrypt 的官方网站为:https://letsencrypt.org/zh-cn/# ,现在支持简体中文,非常贴心。
    HIB28uAYKhUkOV1

  • 点击快速入门,选择Cerbot
    LWUXSKbnDe5OI6g

  • 选择服务器操作系统
    pKUzc6aq2swJty5

  • ssh登录到服务器(为了方便演示,小编直接root登录了,推荐普通用户登录)

    ibRjuWK1VGlwBQm

  • 按照文档提示刷新snap(Ubuntu 18.04自带snap)

    sudo snap install core; sudo snap refresh core

    nlmrb5kIE8fBuJN

  • 安装Certbot

    sudo snap install --classic certbot

    G5PjweJx24yf8Xk

  • 命令行上执行以下指令,以确保可以运行certbot命令

    sudo ln -s /snap/bin/certbot /usr/bin/certbot

  • 获取证书

    sudo certbot certonly --nginx

    执行命令后按照提示完成即可

    9Te6NURsdp8vFaO

  • 到此免费的SSL证书就颁发给你啦

nginx配置HTTPS

编辑 Nginx 根目录下的 conf/nginx.conf 文件。修改内容如下:

  • 监听443端口并配置证书和私钥
     server {
          #SSL 访问端口号为 443
          listen 443;
          ssl on;
          #填写绑定证书的域名
          server_name cloud.tencent.com;
          #证书文件名称,fullchain.pem替换为证书路径
          ssl_certificate fullchain.pem;
          #私钥文件名称,privkey.pem替换为私钥路径
          ssl_certificate_key privkey.pem;
          ssl_session_timeout 5m;
          #请按照以下协议配置
          ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
          #请按照以下配置加密套件,写法遵循 openssl 标准。
          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;
          }
 	}
  • 监听80端口重定向443
	server {
  	    	# 访问端80端口重定向到443
          listen 80;
          server_name 你的域名;
          rewrite ^(.*)$ https://${server_name}$1 permanent; 
      }
  • 使用命令重启nginx

    nginx -s reload

一切完成后就可以愉快地进行https安全访问啦

VQYBv3UimTNMK2t