为什么客户端在握手成功后发送 Close Notify?

Why client sending Close Notify after successful handshaking?

我正在使用 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);

此外,我使用下一个 link 创建了 pfx 文件。我知道客户端固定了根证书,所以我不需要制作链,但我两种方法都试过了

enter link description here

制作pfx的代码或命令有问题吗?否则,什么会导致 Close Notify?

再次提醒握手通过,并且 Notify Close 在至少 20 条消息后 encrypted/decrypted 正确。

Close Notify 只是正常的 TLS 连接关闭。因此,您发送的内容使服务器关闭了连接。这与 TLS 本身无关。也许您以错误的方式实施了(未知的)应用程序协议,未能正确验证或者可能明确发出了关闭连接的应用程序命令。