Nginx如何配置HTTPS详解

Nginx如何配置HTTPS详解
Published on 2023-03-07 16:19 in 分类: Nginx with 梨花海棠
分类: Nginx

 

 

    1. 什么是HTTPS?

    HTTPS(全称:Hypertext Transfer Protocol Secure),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS在HTTP的基础下加入SSL,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面 。

    1.1 HTTPS好处

    • 使用 HTTPS 协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;
    • HTTPS 协议是由 SSL+HTTP构建的可进行加密传输、身份认证的网络协议,要比 HTTP安全,可防止数据在传输过程中被窃取、改变,确保数据的完整性。
    • HTTPS 是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本;

    1.2 HTTPS缺点

    • 相同网络环境下,HTTPS 协议会使页面的加载时间延长近 50%,增加10%到20%的耗电。此外,HTTPS 协议还会影响缓存,增加数据开销和功耗
    • HTTPS 协议的安全是有范围的,在黑客攻击、拒绝服务攻击和服务器劫持等方面几乎起不到什么作用,最关键的是,SSL证书的信用链体系并不安全。特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行;
    • 成本增加。部署HTTPS后,因为HTTPS 协议的工作要增加额外的计算资源消耗,例如 SSL 协议加密算法和 SSL交互次数将占用一定的计算资源和服务器成本。在大规模用户访问应用的场景下,服务器需要频繁地做加密和解密操作,几乎每一个字节都需要做加解密,这就产生了服务器成本。随着云计算技术的发展,数据中心部署的服务器使用成本在规模增加后逐步下降,相对于用户访问的安全提升,其投入成本已经下降到可接受程度。

    2. Nginx配置HTTPS

    2.1 申请SSL证书

    可以去申请阿里云免费CA证书 https://www.aliyun.com/product/cas
    腾讯云: https://cloud.tencent.com/product/ssl

    2.2 申请腾讯云免费证书

    这里已经提前申请下来了。直接在腾讯云下载即可。
    image

    image

    2.3 在服务器端解压

    [root@haitang-nginx-test tls]# ls
    nginx.malusspectabilis.top_nginx.zip
    [root@haitang-nginx-test tls]# unzip nginx.malusspectabilis.top_nginx.zip 
    Archive:  nginx.malusspectabilis.top_nginx.zip
       creating: nginx.malusspectabilis.top_nginx/
      inflating: nginx.malusspectabilis.top_nginx/nginx.malusspectabilis.top.csr  
      inflating: nginx.malusspectabilis.top_nginx/nginx.malusspectabilis.top_bundle.crt  
      inflating: nginx.malusspectabilis.top_nginx/nginx.malusspectabilis.top_bundle.pem  
      inflating: nginx.malusspectabilis.top_nginx/nginx.malusspectabilis.top.key  
    

    2.4 配置HTTPS

    具体可参考官方文档;https://nginx.org/en/docs/http/ngx_http_ssl_module.html
    配置https功能基于模块ngx_http_ssl_module,编译安装需安装这个模块开启ssl功能。yum安装的nginx默认是开启这个模块ngx_http_ssl_module。

    [root@haitang-nginx-test conf.d]# cat haitang-https.conf 
    server{
       listen 443 ssl;  是否启用ssl功能
       charset utf-8;   字符集utf-8
       server_name nginx.malusspectabilis.top;   域名
       ssl_session_timeout 5m;  客户端连接可复用ssl 缓存有效时间
       ssl_certificate /apps/nginx/conf.d/tls/nginx-malusspectabilis.top/nginx.malusspectabilis.top_bundle.pem;  当前虚拟主机的CA证书信息,一般是Crt文件
       ssl_certificate_key /apps/nginx/conf.d/tls/nginx-malusspectabilis.top/nginx.malusspectabilis.top.key;  当前虚拟主机的私钥文件,一般为key文件
       ssl_session_cache shared:sslcache:20m;    配置ssl缓存
       ssl_protocols TLSv1.2 TLSv1.3;   支持的ssl协议版本,早期为ssl现在为tls;
       location / {
         root "/data/nginx/html/haitang/";
    }
    }
    语法检查正常。
    [root@haitang-nginx-test conf.d]# nginx -t
    nginx: the configuration file /apps/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /apps/nginx/conf/nginx.conf test is successful
    

    2.5 准备访问页面

    [root@haitang-nginx-test ~]# echo "海棠"  > /data/nginx/html/haitang/index.html 
    

    2.6 加载Nginx并检查端口是否启动

    [root@haitang-nginx-test ~]# nginx -s reload 
    [root@haitang-nginx-test conf.d]# ss -tnlp | grep 443
    LISTEN     0      128          *:443                      *:*                   users:(("nginx",pid=1802,fd=7),("nginx",pid=1801,fd=7),("nginx",pid=1800,fd=7),("nginx",pid=1799,fd=7),("nginx",pid=1798,fd=7),("nginx",pid=1761,fd=7))
    

    2.7 配置本地hosts解析

    sh-3.2# echo "xxxxxxx nginx.malusspectabilis.top" >> /etc/hosts
    

    2.8 测试是否是https访问

    image
    image

    我们一直奔跑在进步的旅途
     
     
     

    posted on 2023-03-07 19:12  漫思  阅读(1864)  评论(0编辑  收藏  举报

    导航