我正在使用SSLEngine
通过 USB 与 SSL 客户端通信
握手正确通过,我开始获取加密数据,但是当我传输特定数据时,它会向我发送“关闭通知”消息(15 03 03 ..),我不知道为什么??!!
具体消息,应该没有问题,我多次确认
我对证书和私钥进行了三次检查,它们是正确的(并且没有被泄露或任何东西)
我想也许客户试图 ReHandshake 但据我了解,ReHandshaking 应该以 a 开头Client Hello
而不是Close Notify
(正确?)
这是当前设置
TrustManager[] dummyTrustManager = new TrustManager[] { new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(X509Certificate[] certs, String authType) {
}
} };
KeyStore keyStore = KeyStore.getInstance("PKCS12");
InputStream kstore = activity.getAssets().open("my_file.pfx");
keyStore.load(kstore, "my_pass".toCharArray());
KeyManagerFactory kmf = KeyManagerFactory
.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmf.init(keyStore, "my_pass".toCharArray());
SSLContext ctx = SSLContext.getInstance("TLS");
ctx.init(kmf.getKeyManagers(), dummyTrustManager,
SecureRandom.getInstanceStrong());
sslEngine = ctx.createSSLEngine();
sslEngine.setUseClientMode(false);
sslEngine.setNeedClientAuth(true);
另外,我使用下一个链接创建了 pfx 文件。我知道客户端已固定根证书,因此我不需要制作链,但我尝试了两种方式
制作 pfx 的代码或命令有什么问题吗?否则,什么会导致Close Notify
?
再次提醒握手已通过并且Notify Close
至少 20 条消息已正确加密/解密。