关于HTTPS以及使用Nginx来部署一个HTTPS的服务

HTTPS

  • HTTPS = HTTP + Security
  • HTTP是不安全的,因为它是明文传输的,在互联网的每一层都可能会被获取和篡改
    • 如果使用HTTP,不能传输重要的数据
  • HTTPS的安全性
    • 公钥:互联网上人人都可以拿到的一串加密字符串,用于加密传输信息
    • 私钥:只存在于服务端用于解密的一串加密字符串
    • 客户端通过公钥加密传输到服务器上,服务端只有通过私钥才能把加密后的内容解密

HTTPS握手的过程


  • 客户端发起一个ClientHello
    • 先生成一个随机字符串
    • 再带上客户端支持的加密套件Cipher Suite(里面有很多不同的加密方法),以供服务端选择
    • 将两者传输到服务端
  • 服务端也发送一个Serve Hello
    • 在拿到随机字符串后先存着
    • 自己也生成一个随机字符串,并且自己选择一个合适的Cipher Suite加密套件
    • 之后把这个随机字符串,服务端证书(公钥)等内容传输给客户端
  • 客户端拿到了服务端随机数和公钥
    • 并用它们生成了一个加密的预主密钥(新的随机字符串)
    • 到这个阶段,随机字符串的数量已经是3个了
    • 客户端将这个加密后的预主密钥发送给服务端
  • 服务端用私钥进行解密得到预主密钥,拿到了这个随机字符串
  • 客户端和服务端同时对这三个随机字符串进行一个算法的操作,生成一个主密钥
    • 这个过程中涉及到一个加密套件进行算法的操作
  • 中间任何人都无法获取和破解这个主密钥,后期传输的数据全是由这个主密钥来加密和解密
  • 所以HTTPS传输是一个安全的传输协议,可以自己使用Wireshark等抓包软件看这个过程

使用Nginx来部署一个HTTPS的服务

  • 要部署HTTPS服务,首先要生成HTTPS的公钥(public key)和私钥(private key)
    • Windows下一般需要在nginx安装目录/certs 目录中生成
    • Mac下要在一个目录下生成,并使用绝对路径来引用
    • 证书生成命令: $ openssl req -x509 -newkey rsa:2048 -nodes -sha256 -keyout localhost-privkey.pem -out localhost-cert.pem
    • 一路回车下去即可,不需要特别配置
    • 在这里会生成两个文件:localhost-cert.pem,localhost-privkey.pem
  • 生成好之后,需要在nginx中来配置
    proxy_cache_path cache levels=1:2 keys_zone=my_cache:10m
    
    server {
        listen                  443;
        server_name             test.com;
        ssl                     on;
        ssl_certificate         ../certs/localhost-cert.pem
        ssl_certificate_key     ../certs/localhost-privkey.pem
    
        location / {
            proxy_cache      my_cache
            proxy_pass       http://127.0.0.1:8000;
            proxy_set_header Host $host;
        }
    }
    
  • 特别注意,针对我们的server_name,本机也要进行一些host的配置,此处不再赘述
  • HTTPS默认使用端口443
  • ssl_certificate对应的是公钥
  • ssl_certificate_key对应的是私钥
  • 上述配置是Windows下的配置,配置好之后,这个nginx就支持了HTTPS,重启nginx
  • 启动对应的nodejs的服务,使用浏览器访问:https://test.com
  • 这时候有个红色的提示:您的连接不是私密连接,这个时候就证明了https可以访问了
    • 提示红色的原因是,目前主流浏览器在验证https安全证书的时候,都要权威机构来签发
    • 权威机构签发时要先验证域名是合法的,安全的
    • 一般个人会使用certbot来签发, 此处不再赘述
    • 这时候,因为我们是测试,直接点击高级,选择继续前往test.com(不安全)
  • 能够正常访问,说明我们的https的服务部署成功了
  • 如果我们要在访问http的时候,自动跳转到https,可以如下配置
    proxy_cache_path cache levels=1:2 keys_zone=my_cache:10m
    
    server {
        listen                  80 default_server;
        listen                  [::]:80 default_server;
        server_name             test.com
        return 302 https://$server_name$request_uri;
    }
    
    server {
        listen                  443;
        server_name             test.com;
        ssl                     on;
        ssl_certificate         ../certs/localhost-cert.pem
        ssl_certificate_key     ../certs/localhost-privkey.pem
    
        location / {
            proxy_cache      my_cache
            proxy_pass       http://127.0.0.1:8000;
            proxy_set_header Host $host;
        }
    }
    
  • 重启nginx, 重新访问http页面,即可立即跳转到https网页
### 回答1: Active Directory服务是种由微软公司开发的网络服务,它提供了种集中管理和控制网络资源的方式。它可以在中集中管理用户、计算机、应用程序和其他网络资源,从而提高了网络的安全性和可管理性。Active Directory服务还提供了些高级功能,如单点登录、组策略管理和名系统(DNS)集成等,使得网络管理员可以更加轻松地管理和维护网络。 ### 回答2: Active Directory服务(Active Directory Domain Services,简称AD DS)是微软公司的项用于管理和组织网络资源的目录服务。它是种基于LDAP(轻量级目录访问协议)的目录服务,可以让用户和管理员方便地管理和访问网络中的资源。 AD DS的主要功能包括用户身份认证、访问控制、组管理和资源管理等。通过AD DS,管理员可以集中管理和配置用户和计算机的访问权限,确保系统安全。同时,AD DS还提供了的集中管理功能,管理员可以通过控制器管理中的所有对象,并在中实施策略。 AD DS还支持单点登录功能,用户只需在登录到之后,即可自动访问到所属中的资源,而无需再次输入用户名和密码。这大大提高了用户的工作效率。 此外,AD DS还支持多架构,可以通过建立信任关系实现跨资源的访问和管理。管理员可以维护多个之间的信任关系,实现用户和资源的统管理。 总而言之,AD DS是种强大的目录服务,可以实现用户和资源的集中管理和访问控制,提高网络系统的稳定性和安全性。它是企业网络管理的重要组成部分,为企业提供了高效的身份认证和资源管理功能,增强了企业的生产力和安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值