13-STM32+CH395Q(以太网)基本控制篇(自建物联网平台)-Android以SSL单向认证方式连接MQTT服务器(验证服务器证书)
2021/7/15 23:17:36
本文主要是介绍13-STM32+CH395Q(以太网)基本控制篇(自建物联网平台)-Android以SSL单向认证方式连接MQTT服务器(验证服务器证书),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ZLIOTB/CH395Q/my.html" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>
<iframe frameborder="0" height="1500" name="ifd" scrolling="auto" src="https://mnifdv.cn/resource/cnblogs/ZLIOTB/CH395Q/my.html" width="100%"></iframe>
说明
这节说明一下设备使用SSL单向认证连接服务器以后检验一下服务器的证书.
这节就在下面的章节程序上进行修改
把这节里面的MyX509TrustManager.java 文件放到工程里面
在工程上点击鼠标右键,新建一个assets
导入证书
1.把mqtt服务器上面的cert.pem 证书下载到本地(该证书用于解开服务器证书)
2.复制证书
3.粘贴证书
使用证书
1.新建一个变量,用来选择验不验证证书
2.增加下面的函数
//拿到自己的证书 X509Certificate getX509Certificate(ClassLoader classLoader) throws IOException, CertificateException { InputStream in = classLoader.getResourceAsStream("assets/cert.pem"); // InputStream in = context.getAssets().open("cert.pem"); CertificateFactory instance = CertificateFactory.getInstance("X.509"); X509Certificate certificate = (X509Certificate) instance.generateCertificate(in); return certificate; }
下面这个地方要对应哈
3.把原先的程序改一下
4.把下面的程序放到else里面
try{ //SSLContext 初始化 SSLContext tls = SSLContext.getInstance("TLS"); String defaultType = KeyStore.getDefaultType(); KeyStore instance = KeyStore.getInstance(defaultType); instance.load(null); instance.setCertificateEntry("cert",getX509Certificate(MyMqttClient.class.getClassLoader())); String defaultAlgorithm = TrustManagerFactory.getDefaultAlgorithm();//得到默认算法 TrustManagerFactory trustMF = TrustManagerFactory.getInstance(defaultAlgorithm); trustMF.init(instance); TrustManager[] trustManagers = trustMF.getTrustManagers(); tls.init(null,trustManagers,new SecureRandom()); //ssl工厂 SSLSocketFactory socketFactory = tls.getSocketFactory(); mqttConnectOptions.setSocketFactory(socketFactory); Log.e(TAG, "InitMqttOptions: useSSLCheck Init"); }catch (Exception e){ Log.e(TAG, "InitMqttOptions: "+e ); }
5.下载安装到手机测试
这篇关于13-STM32+CH395Q(以太网)基本控制篇(自建物联网平台)-Android以SSL单向认证方式连接MQTT服务器(验证服务器证书)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15PingCAP 黄东旭参与 CCF 秀湖会议,共探开源教育未来
- 2024-05-13PingCAP 戴涛:构建面向未来的金融核心系统
- 2024-05-09flutter3.x_macos桌面os实战
- 2024-05-09Rust中的并发性:Sync 和 Send Traits
- 2024-05-08使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B
- 2024-05-08完工标准(DoD)与验收条件(AC)究竟有什么不同?
- 2024-05-084万 star 的 NocoDB 在 sealos 上一键起,轻松把数据库编程智能表格
- 2024-05-08Mac 版Stable Diffusion WebUI的安装
- 2024-05-08解锁CodeGeeX智能问答中3项独有的隐藏技能
- 2024-05-08RAG算法优化+新增代码仓库支持,CodeGeeX的@repo功能效果提升