我使用SSLEngine
通过USB 与SSL客户端通信
握手通过正确,我开始获得加密数据,但当我传输特定数据时,它会向我发送一个";关闭通知";消息(15 03 03..(,我不明白为什么??!!
具体的消息,应该没有问题,我多次确认
我反复检查了证书和私钥,它们是正确的(并且没有泄露或任何东西(
我认为客户端可能试图重新握手,但据我所知,重新握手应该从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个消息被正确加密/解密之后。
Close Notify
只是一个正常的TLS连接关闭。因此,您发送的内容使服务器关闭了连接。这与TLS本身无关。也许您以错误的方式实现了(未知(应用程序协议,未能正确进行身份验证,或者可能明确发出了关闭连接的应用程序命令。