网络通信的加密协议TSL

网络(HTTP)通信的安全协议HTTPS

HTTPS(超文本传输安全协议)

        通过在HTTP基础上加入了SSL/TLS协议来确保数据传输的加密。

        HTTPS使用的加密协议是TLS(传输层安全协议,1.2或1.3版本),它的前身是SSL(已弃用)。这两个协议确保了数据传输的安全性。包括:

        数据加密(对称加密技术)、数据完整性(哈希算法)、身份验证(通过数据证书验证通信双方的身份,确保通信方是可信的)。

工作原理:

        1.客户端请求服务器:客户端(如浏览器)向服务器发起HTTPS请求。

        2.服务器返回证书:服务器会返回一个数字证书(包含公钥),用于加密通信。

        3.客户端验证证书:客户端验证服务器的证书是否合法,如果证书有效,就会生成一个会话密钥。

        4.建立加密通道:客户端使用服务器的公钥加密会话,并传给服务器,服务器使用私钥解密后,双方就可以使用该会话密钥进行加密通信了。

常见场景:

        登陆页面、网络购物和银行网站、社交媒体和电子邮件等

证书:

        1.概念:

                数字证书是用来证明身份的电子文档,它通常包含网站(或服务器)的公钥及其他信息(如所有者信息,证书机构信息等)。通过证书,客户端可以验证服务器的身份,并确保通信过程中数据的加密安全

        2.组成:

                公钥:证书中包含服务器的公钥,用于加密通信。

                私钥:服务器自己保管的密钥,用于解密客户端发送的加密信息。私钥不会出现在证书中。

                证书颁发机构(CA):可信任的第三方组织,颁发和验证证书,确保其真实性

                证书的有效期:过期后需要重新申请

                证书序列号:每个证书都有唯一的序列号,用于区分不同的证书

                指纹(Thumbprint):证书的哈希值,用于快速验证证书的完整性。

        3.分类:

                a.  根据验证级别分类

                        域名验证证书(DV):小型网站适用

                        组织验证证书(OV):公司适用

                        扩展验证证书(EV):电商银行等安全要求高的网站

                b. 根据用途分类

                        单域名证书:仅用于单个域名,如:example.com

                       通配符证书:保护一个域名及其子域名,如www.example.com和mail.example.com等所有*.example.com

                        多域名证书:保护多个域名或子域名

        4.证书的使用场景

                HTTPS加密通信、身份验证、代码签名、邮件加密

        5.证书的获取

                从CA机构购买、自签名证书(通过工具或IIS生成)。

        6.生命周期

                签发-安装-续期-吊销

        7.信任链

                证书不是独立存在的,而是有一个信任链

                        ·服务器证书:用于加密通信

                        中间证书:用于桥接服务器证书和根证书

                        根证书:信任链的基础。

本地测试:

        1. 建立本地证书

                通过以管理员权限运行powerShell,新建一个本地证书

 New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"

其中DnsName指定了该证书绑定的域名,在本地环境中可以使用 localhost或127.0.0.1

CertStoreLocation 参数指定证书的存储位置。LocalMachine\My 表示将证书存储在本地计算机的个人证书存储中。

  2. IIS里配置HTTPS

        在IIS管理器,网站右键选中自己的部署网址,添加绑定,类型选择HTTPS,SSL证书选择刚刚新建的证书 localhost

      3.在服务器代码里添加强制使用HTTPS(可选)。
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");
        app.UseHsts();
    }
    
    // 强制重定向到 HTTPS
    app.UseHttpsRedirection();
    app.UseStaticFiles();
    app.UseRouting();
    app.UseAuthorization();
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
}

双向身份验证

功能需求

        实现只有某些受信任的客户端能够访问服务器,使用的是双向身份认证(mTLS),一种强化的身份验证方式

概念

        通常,客户端通过HTTPS(单向TLS)来保证服务器的身份(服务器使用证书进行验证)。——过程如下:

        1.客户端连接到服务器:客户端发起与服务器的HTTPS连接,并请求服务器的证书

        2.服务器出示证书:服务器将数字证书发送给客户端

        3.客户端验证服务器的身份:验证证书的有效性,

                        证书是否由可信机构CA等签发

                        证书是否与服务器的域名匹配

                        证书是否在有效期内

         4.建立加密通道:如果证书通过验证,客户端与服务器之间的TLS握手完成,之后的通信会在加密的通道内进行,确保数据的保密性和完整性。——

如果要进行双向验证身份,即服务器也要求客户端出示证书,服务器会对证书进行验证,确保客户端的身份可信。

实现步骤

1.生成和分发客户端证书:服务器为每个受信任的客户端生成唯一的客户端证书,或者要求客户端提供他们的证书

2.在服务器配置mTLS:服务器需要配置成要求客户端证书来验证客户端身份。服务器会检测客户端的证书信息

3.拒绝未经授权的客户端:只有通过验证的客户端(具有受信任证书的客户端),才能与服务器进行通信。任何没有通过验证的客户端都会被服务器拒绝。

本地测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值