微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

创建提供 .pem 文件的安全 TCP 客户端

如何解决创建提供 .pem 文件的安全 TCP 客户端

我是 C# 的新手。 我正在尝试使用 TLS over LAN 建立 TCP 通信,但不知道该怎么做。我使用以下代码在 java 中做了同样的事情:

            SSLSocketFactory sslSocketFactory = Util.BuildSslSocketFactoryForLAN(getApplicationContext());
            Socket tcpsocket = sslSocketFactory.createSocket("IP address","port");
           
            is = tcpsocket.getInputStream();
            OutputStream os = tcpsocket.getoutputStream();

            devicePairingReq = Util.hexStringToByteArray("9F" + data);

            os.write(devicePairingReq);
            os.flush();

            while (true) {
                tcpsocket.setSoTimeout(1000 * 90);

                resp = new byte[15];
                test = is.read(resp);
                tcpsocket.close();

     public static SSLSocketFactory BuildSslSocketFactoryForLAN(Context context) {
    try {
        SSLContext sslContext = SSLContext.getInstance("TLS");
        CertificateFactory cf = CertificateFactory.getInstance("X.509");
        InputStream is = context.getResources().getAssets().open("name.pem");
        InputStream caInput = new BufferedInputStream(is);
        Certificate ca;
        try {
            ca = cf.generateCertificate(caInput);
        } finally {
            caInput.close();
        }
        String keyStoreType = KeyStore.getDefaultType();
        KeyStore keyStore = KeyStore.getInstance(keyStoreType);
        keyStore.load(null,null);
        keyStore.setCertificateEntry("ca",ca);

        String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
        TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
        tmf.init(keyStore);

        sslContext.init(null,tmf.getTrustManagers(),null);
        SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
        return sslSocketFactory;
    } catch (CertificateException e) {
        e.printstacktrace();
    } catch (IOException e) {
        e.printstacktrace();
    } catch (KeyStoreException e) {
        e.printstacktrace();
    } catch (NoSuchAlgorithmException e) {
        e.printstacktrace();
    } catch (KeyManagementException e) {
        e.printstacktrace();
    }
    return null;
}

我对 C# 完全陌生,所以对它知之甚少。 我正在尝试通过 LAN 从移动客户端向 tcp 服务器发送消息。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。