【发布时间】:2015-09-05 10:21:33
【问题描述】:
这些是事实:
我有一个 client(android)-server(java - Ubuntu 14.04)-program,通过它我每 5 分钟从我的智能手机传输我的 gps-data 到服务器将其保存到 mysql 数据库中。
我的问题是我不想直接传输我的 GPS 数据。所以我想使用 SSL 来验证客户端(我的智能手机)到服务器(使其他人无法连接到服务器 - 没有握手),当然还有加密。 我的主要问题是关于理解密钥库、信任库过程。
有
keytool.exe -genkey -keyalg RSA -keysize 2048 -alias -serverKey -keystore serverKeystore.jks -validity 1095
我正在创建一个名为 serverKeystore.jks 的新密钥库(如果不存在)。此密钥库包括证书包装的私钥和公钥。 我可以用
导出证书-keytool.exe -export -alias serverKey -keystore serverKeystore.jks -file server.cer
因此,他现在根据this 教程创建了一个客户端密钥库:
keytool -genkey -keyalg RSA -alias clientKey -keystore clientkeystore.jks -validity 999 -keysize 2048
我导出 client.cer 的方式与之前导出服务器的方式相同。
现在他将 server.cer 添加到 clients-keystore 并将 clients.cer 添加到 servers-keystore。但是现在 serverKeystore 和 clientKeystore 已经创建了不同的私钥/公钥对。服务器现在知道客户端公钥,客户端现在知道服务器公钥。 这样,客户端可以用服务器的公钥加密明文,然后服务器可以用他的私钥解密。这是正确的吗? 如果是这样,信任库在哪里?信任库是存储 client.cer 的服务器密钥库,并且以这种方式信任此客户端,反之亦然?
【问题讨论】:
标签: java android ssl encryption