我正在开发一个Android应用,该应用需要通过我没有经验的SSL来使用.Net Web服务。现在,我正在寻找有关SSL握手和证书的一些指导和说明。

注意:服务器正在使用IP地址而不是域名。它是一个Intranet应用程序。

到目前为止,我已经从IIS 7在Web服务器中创建了一个证书(称为自签名?)。
为了从Android应用程序中使用它,我发现了两种实现方法:

1)。将证书嵌入到应用程序中(哪个证书?如何获取?)

2)。信任所有证书(ppl说这种方法存在安全性问题,您能否详细说明?它仍在进行握手吗?)

证书:

握手中有几种类型的证书,它们是什么?

自签名证书是否具有根证书?如果是,我如何获得它们?

是否可以将自签名证书从一台服务器移动/复制到另一台服务器?

握手:

首先,这个过程正确吗?

SSL握手过程(从网站复制)描述如下:


客户端通过发送URL来启动SSL握手过程
从以下内容开始:https://到服务器。
客户端最初向Web服务器发送每种加密的列表
它支持的算法。 SSL支持的算法包括RC4
和数据加密标准(DES)。客户端也发送服务器
它的随机质询字符串,稍后将在
处理。

嵌入式证书会在这里发送吗?
Web服务器接下来执行以下任务:

从加密列表中选择一种加密算法
客户端支持并从客户端接收的算法。

向客户端发送其服务器证书的副本。

向客户发送其随机质询字符串
客户端利用从服务器收到的服务器证书的副本
服务器验证服务器的身份。
客户端从服务器获取服务器的公钥
证书。
客户端接下来生成一个premaster机密。这是不同的
随机字符串,该字符串随后将用于生成会话
SSL会话的密钥。客户端然后加密一个不同的值
使用服务器的公钥将其称为premaster机密,并且
将此加密值返回给服务器。这是伴随着
握手消息的带密钥哈希和一个主密钥。哈希
用于保护握手过程中交换的消息。
散列是从传输的前两个随机字符串生成的
在服务器和客户端之间。

什么是万能钥匙?
服务器向客户端发送所有握手的密钥哈希
到目前为止,双方之间交换的消息。

这个带键的散列是做什么的?
然后,服务器和客户端将根据
不同的随机值和键,并通过应用数学
计算。
会话密钥用作共享密钥来加密和
解密服务器和客户端之间交换的数据。


当SSL会话超时或终止时,会话密钥将被丢弃。

最佳答案

在这里,我将尽我所能回答


将证书嵌入到应用程序中(哪个证书?如何获取?)
该证书标识客户端/应用程序的身份。您可以通过CA或自签名获得它。服务器将使用此证书来验证客户端/应用程序的身份
信任所有证书(ppl说这种方法存在安全性问题,您能否详细说明?它仍在进行握手吗?)
它仍然进行握手,但不进行证书验证,除非您在内部进行连接(这似乎是事实),否则这很危险。信任所有证书意味着实体可以声称自己不是某人,从而可以从用户那里获得机密信息。
握手中有几种类型的证书,它们是什么?在握手中,您具有服务器的证书和可选的客户机证书(用于两个因素的身份验证)
自签名证书是否具有根证书?如果是,我如何获得它们?据我所知,根证书是指由CA本身标识的证书,因此没有其他签名。由于您的身份仍然可以验证并且需要由CA签名,因此您的身份不会被归类为根证书
是否可以将自签名证书从一台服务器移动/复制到另一台服务器?简短的答案是肯定的,尽管从一个平台到另一个平台的过程是不同的。检查[此链接](http://www.sslshopper.com/how-to-move-or-copy-an-ssl-certificate-from-one-server-to-another.html),其中包含复制说明少数平台证书
嵌入式证书会在这里发送吗?否,在完成服务器身份验证之后,将发送嵌入式(客户端)证书
什么是万能钥匙?主密钥是用于派生会话密钥以供以后通信的密钥。在下一组阶段中,它还用于散列消息并验证消息的真实性
这个带键的散列是做什么的?它是由客户端发送的主密钥制成的。为了验证所有消息,服务器发送了所有已传递的消息,并使用主密钥对其进行了哈希处理。客户端也将使用相同的密钥对消息进行哈希处理,然后与服务器发送的数据进行比较。只有当散列匹配时,我们才能确定我们仍在与同一服务器通信

10-07 19:53
查看更多