【问题标题】:Certificate Authority vs Stored public key证书颁发机构与存储的公钥
【发布时间】:2011-01-10 02:12:27
【问题描述】:
我正在开发一个 J2ME 应用程序,它可以安全地连接到服务器以进行登录。我在设置两者之间的 SSL 时遇到了很多困难,所以我想到了一个更简单的解决方案,希望您能对此发表看法。
J2ME Midlet 附带服务器的公钥,连接时使用该公钥加密消息(用户名、密码哈希和随机数)并发送到服务器。然后服务器解密它并使用它来验证客户端。
证书颁发机构的主要思想是说谁是谁,如果双方已经知道这一点并同意它不会改变(除非通过已经过身份验证的连接),那么我不要绕过需要一个?
谢谢,
弗拉基米尔
【问题讨论】:
标签:
ssl
java-me
client
certificate
public-key
【解决方案1】:
如果双方已经知道这一点并同意它不会改变……那我不是绕过了对它的需求吗?
是的,但我认为你没有抓住重点。该程序附带密钥,但用户无法知道他们正在下载的程序实际上来自您,而不是一些恶意黑客拦截/重写通信;用户所看到的只是从墙上的电线进来的碎片。
通常您要做的就是用您的密钥对 jar 进行签名,然后将密钥与您的程序一起发送。现在我们有一个先有鸡还是先有蛋的问题:他们怎么知道钥匙来自你?
这是证书颁发机构的用武之地; CA 的密钥已经在他们的计算机上,因此他们将其留给 CA 来验证您的身份并签署您的公钥。然后,当用户获得公钥,验证它是否由 CA 签名,并验证 jar 是否由密钥签名时,他们知道密钥是你的,因此 jar 必须来自你,因为你是唯一可以用私钥签名的人。
现在,如果您的密钥提前在他们的计算机上(例如,在公司内部,密钥在设置时实际放置在计算机上),他们是的,您绝对不需要签署密钥。