• SSL


    认证就是发消息的客户端和服务端之间相互认证确认的过程,又分为单向和双向认证:大概是下面这样的过程

    一、单向认证:

    1、客户端向服务器发送消息,服务器接到消息后,用服务器端的密钥库中的私钥对数据进行加密,然后把加密后的数据和服务器端的公钥一起发送到客户端;

    2、客户端用服务器发送来的公钥对数据进行解密,然后在客户端使用服务器发送过来的公钥对数据加密传给服务器端,服务器用私钥对数据进行解密,这就完成了客户端和服务器之间通信的安全问题,但是单向认证没有验证客户端的合法性。

    二、双向认证:

    1、客户端向服务器发送消息,首先把消息用客户端证书加密然后连同时把客户端证书一起发送到服务器端

    2、服务器接到消息后用首先用客户端证书把消息解密,然后用服务器私钥把消息加密,把服务器证书和消息一起发送到客户端

    3、客户端用发来的服务器证书对消息进行解密,然后用服务器的证书对消息加密,然后在用客户端的证书对消息在进行一次加密,连同加密消息和客户端证书一起发送到服务器端,

    4、服务器端首先用客户端传来的证书对消息进行解密,确保消息是这个客户发来的,然后用服务器端的私钥对消息在进行解密这个便得到了明文数据。

    如果iOS通过https访问的站点(服务器)证书是ca机构颁发的话,不需要多余的代码,请求以前http的时候怎么写现在还怎么写,只是把请求url的http改成https,但是如果站点的证书是自签证书(如通过java

    keytool自生成),ios默认是验证不通过的,请求会失败,那么需要在http请求回调里面做两步多余的处理,回调如下:

    //证书验证处理- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge;//信任自签证书站点- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace;

    双向认证SSL原理: http://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html

    单向认证(http): http://www.2cto.com/kf/201604/502612.html

                              http://blog.csdn.net/super_haifeng/article/details/53464802
    
    ssl:

    如果您在工作中遇到带有后缀扩展名的证书文件,可以简单用如下方法区分:

    .DER .CER : 这样的证书文件是二进制格式,只含有证书信息,不包含私钥。

    **.CRT : **这样的文件可以是二进制格式,也可以是文本格式,一般均为文本格式,功能与.DER/.CER相同。

    **.PEM : **一般是文本格式,可以放证书或私钥,或者两者都包含。 *.PEM如果只包含私钥,那一般用 *.KEY代替。

    **.PFX .P12 **是二进制格式,同时含证书和私钥,一般有密码保护。

    成功的三大原则: 1、坚持 2、不要脸 3、坚持不要脸
  • 相关阅读:
    工作流 —— AWS
    ant design —— form 生成 嵌套json数据
    react 获取子组件的 state (转发)
    React 调用子组件的函数(函数)
    react js 组件传参(转发)
    链接脚本文件(.ld .lds)详解
    gcc ------ -ffunction-sections -fdata-sections -gc-sections 参数详解
    GNU ARM 汇编伪指令
    STM32 CM3/CM4 ------ startup.s 文件分析 ------ GCC RT-Thread Studio 版本
    __attribute__之section详解 ------ 把函数指定到具体某个section 之 RT-thread 实例详解
  • 原文地址:https://www.cnblogs.com/xulinmei/p/7442660.html
Copyright © 2020-2023  润新知