Java-HTTP响应以及HTTPS(下)
HTTP响应详解
200 OK
很常见的状态码,表示访问成功
404 Not Found
没有找到资源
403 forbidden
表示被拒绝访问,有的资源网站是需要一定权限访问的,如需要登陆的网站不登陆就访问容易见到到403
405 Method Not Allowed
服务器不支持(不同意使用)当前的方法
500 Internal Server Error
服务器内部出现错误,一般是服务器遇到了特殊情况会产生这个状态码(服务器异常崩溃)
504 Gateway Timeout
超时,当服务器负载比较大,服务器处理单条请求消耗的时间就会比较长,这时候就容易出现超时问题。
302 Move temporarily
临时重定向 :告知客户端资源临时迁移到新地址,下次请求仍应使用原 URL。重定向是暂时的,服务器未来可能将资源迁回原 URL,客户端需保留原请求地址
301 Moved Permanently
永久重定向 :当浏览器受到这种响应的时候,后续的请求都会被自动更新成新的地址
HTTPS是什么
HTTPS就是在HTTP的基础上进行了加密的一个应用层协议
这是因为HTTP协议是按照文本的方式进行明文传输的,这就会导致信息在传输过程中容易发生被篡改的现象。 所以明文传输是一种比较危险的方式,容易泄露自己的账号密码,隐私等等
加密是什么
加密就是把明文进行一些列的变换来生成密文
解密是什么
解密就是把密文经过一些列变换还原成明文
对称加密
对称加密就是通过一个“密钥”,把明文加密成密文,同时也可以把密文还原成明文
通过对明文进行加密,哪怕信息在传输过程中被截获,只要没有 密钥 那么就无法破解密文。
理想状况下 肯定是服务器和客户端都知道密钥的,但是由于客户端数量多,如果维护密钥,每个客户端肯定是都要有各自的密钥的,毕竟如果密钥相同,那么对信息进行加密也就失去了意义。但是这种方法肯定是不现实的,如果通过信息传输来顺带传输密钥的话,密钥也会被截获,这样密钥也就失去了作用。所以此时我们也就需要对密钥的传输来进行加密,即非对称加密。
非对称加密:
非对称加密拥有两个密钥,一个是公钥一个是私钥
公钥和私钥是配对的,缺点就是运算速度非常慢,比对称加密要慢很多
通过公钥进行明文加密可以变成密文,此时可以通过私钥来还原密文
同理:通过私钥进行加密变成密文,通过公钥来进行解密,变成明文
通过非对称加密:
客户端通过 公钥1 对 公钥2 进行加密,此时就算被截获,没有私钥的话,也无法对密文进行解密,而服务器因为有私钥,所以可以进行解密,此时之后的通信就可以通过 公钥2 来进行信息的通信。
但是问题又来了:
我们怎么知道我们获取的数据没有被接获篡改过呢? 比如说,客户端通过公钥发送公钥2,被截获了并且把公钥2改成了公钥3,那么服务器肯定接收到的是 公钥3 ,这种情况服务器肯定会以公钥3 来对数据进行加密,这样我们的数据就又被截获了。而 公钥3 黑客是知道的,这就又导致了隐私的泄露。
证书:
服务器在使用HTTPS前,需要向CA机构申领一份数字证书,数字证书里含有证书申请者信息,公钥信息等等。服务器把证书传输给浏览器,浏览器从证书里面获取公钥。
为了防止证书被伪造,客服端获取到当前证书之后,会对证书进行校验:
1.判断证书的有效期是否过期
2.判断证书的发布机构是否被信任
3.通过该证书发布机构的公钥来对签名进行解密,得到一个hash值(此处称为hash1),然后系统计算整个整数的hahs值(称为hash2)判断hash1是否等于hash2,如果相等就证明证书没有被篡改。
中间人是否可能篡改证书:
由于中间人没有CA机构的私钥,所以无法用私钥加密形成签名,也就没有办法对篡改后的证书形成匹配的签名。如果强行篡改:客户端接收证书之后会发现明文和签名解密后的hash值不一样,证明证书被篡改
中间人是否可能掉包整个证书:
如果想要掉包整个证书,中间人首先要申请一个CA证书,但是由于证书中包含了域名等服务器认证信息,如果整体掉包,如果整体掉包,客户端依旧可以辨认。
如果黑客改了数据后,也计算了hash怎么办
当黑客篡改了你的数据和hash值,他是没有私钥来进行加密并且生成签名的。
如果hash值计算的与原hash值一样,这个概率基本为0,原则上不可行
