2015-01-20 107 views
1

我有用C#编写的客户端服务器应用程序。 实际上,tcp连接被rsa和rijandel(如穷人ssl)加密。我经常读到,我应该使用SSL之类的东西,而不是自己的实现。我知道这个原因。 但是如果我使用SSL,我需要两个证书,一个用于客户端,一个用于服务器,对吧? (因为服务器也发送一些数据给客户端和其他方式)我如何与客户端做到这一点?或者我应该使用这种通讯还有其他的加密通道吗?SSL或自己的实现?

+0

只有服务器需要证书。查看启用SSL的网站。服务器将页面发回给您(已加密),您仍然可以解密该页面而无需您自己的证书。 – itsme86 2015-01-20 20:38:46

+0

好的,我不明白ssl。我需要两个私钥和两个公钥。客户端有一个私钥,服务器有一个私钥。如果你说,只有服务器需要证书,那么客户端的私钥是什么?客户的私钥也在证书中,因为我没有意义。 – 2015-01-20 20:45:35

+0

关键是使用超出我的技能集的一些数学推导出来的。我的理解是,关键有一定的数学属性,可以让某些棘手的事情发生。 – itsme86 2015-01-20 20:52:36

回答

2

SSL(或TLS)使用public key cryptography有两个目的。一种是加密通信通道(实际上只是为了交换对称密钥),另一种是为了识别服务器。公钥私钥对的公钥在由授权机构进行数字签名的证书中进行交换。

如果您不需要客户端进行身份验证(与登录的用户不同),则不需要客户端证书。服务器证书足以识别服务器并加密通信通道。

客户端证书通常用于后台服务或守护进程需要用Web服务标识自己的场景。在这种情况下,没有用户的身份可以用来授权请求​​。