如何解决创建提供 .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 举报,一经查实,本站将立刻删除。