DNS 解析与 DIG 工具

Photo by Caleb Kastein on Unsplash

当我们输入域名请求服务器真实 IP 或者用 DIG 工具排查域名相关时, 具体的解析过程以及 DNS 服务器解析原理 ,我想通过本文做个简单的阐述。

DNS 解析过程

我们可以通过在线 DIG 工具可以查看域名解析的结果甚至追踪域名解析的过程。假如我想查询某个 baidu.com 对应的 IP 地址,可以这样发出查询。

然后可以从服务器得到这样的响应。其中 ANSWER SECTION 返回两个 IP 地址,这就是 baidu.com 对应的 IP 地址。

继续阅读DNS 解析与 DIG 工具

公钥可以用来做什么

Photo by Mo on Unsplash

数据加密是为了确保传输信道上的信息不被泄露。数据认证是为了确保传输信道上的数据不被篡改。非对称加密算法中的公钥既可以用来进行数据加密也可以用来进行数据认证。它们都是用到了私钥加密公钥解密和公钥加密私钥解密这一非对称加密性质。

数据加密——公钥加密

传递公钥用于数据加密。在 HTTPS 中双方交换公钥,双方分别使用对方的公钥对某个对称密钥进行加密,对端再用自己的私钥进行解密。

为了防止中间人攻击权威证书机构 (Certificate Authority,简称 CA) 对合法的服务器公钥信息利用自身的私钥生成数字签名,交由服务端一并发送给客户端。客户端在收到证书信息之后,利用浏览器中内置的、由 CA 派发的公钥对数字签名进行解密。若解密的数字签名与证书中的信息的摘要相吻合,那么就可以认为服务器端公钥未被篡改,客户端可以通过这个公钥来加密信息。

继续阅读公钥可以用来做什么

JSON Web Token 认证原理

Photo by Andrew Ly on Unsplash

JSON Web Token(下面简称 JWT )常被用来作为认证凭据存储在浏览器本地。通过本文,我想阐述清楚 JWT 认证的实现过程和背后的原理。

JWT 中 header(头部信息)和 payload(载荷信息)使用 Base64URL 进行编码。和 Base64 编码一样,Base64URL 本身是一种编码算法,而不是加密算法,因此头部信息和载荷信息仍不能携带密码等敏感信息。

为此,我们可以在服务器端根据头部信息和载荷信息生成一个数字签名,放在 JWT 中发回给客户端进行储存。下次请求时,客户端携带这个 JWT 来与服务器进行交互。由于数字签名的引入,服务端可以检测这个 JWT 是否被篡改。若无篡改,则可直接取出 JWT 中用户名、账号等信息进行下一步判断。

继续阅读JSON Web Token 认证原理