现在我的方式是,服务器有一个X509证书,使用Username方式对客户端认证,基本功能也实现了,但是心中一直有疑惑
下面这段话是网上看的资料
在跨Windows域分布的系统中,用户名密码认证还是比较常用的,要实现用户名密码认证,就必须需要X509证书,为什么呢?因为我们需要X509证书这种非对称密钥技术来实现WCF在Message传递过程中的加密和解密,要不然用户名和密码就得在网络上明文传递!详细说明就是客户端把用户名和密码用公钥加密后传递给服务器端,服务器端再用自己的私钥来解密,然后传递给相应的验证程序来实现身份验证。
这里说的很直白,我基本也是这么理解的,但是问题是,客户端使用公钥加密后发往服务器使用私钥解密,可是服务器执行完毕后,返回给客户端的数据呢,这些数据又是通过什么做的加密解密?客户端并没有证书,私钥应该只存在于服务器上吧?
客户端和服务端先协商一个 KEY,客户端和服务端各保存一份,之后的消息都通过这个 KEY 加解密。而服务器的 X509 证书则是用来在协商阶段保证 KEY 在传输阶段不被泄露。
明白了!