Mosquito使用SSL/TLS进行安全通信时的使用方法 ------生成和发布证书openssl
来源:互联网 发布:淘宝干货是什么意思 编辑:程序博客网 时间:2024/04/30 03:12
MQTT作为android客户端的push消息推送协议。android客户端需要通过SSL/TLS连接mqtt代理服务器,实现消息的加密传输。实现这个流程需要提供两个方面的支持,一个是mqtt协议客户端实现,另一个是mqtt代理服务器。 有很多开源的mqtt代理服务器,我选择使用mosquitto broker.
mosquitto 安装到windows 上,我使用windows作为mosquitto代理服务器
2. 安装openssl
3.生成服务器证书
openssl req -new -x509 -days 3650 -keyout m2mqtt_ca.key -out m2mqtt_ca.crt
openssl genrsa -des3 -out m2mqtt_srv.key 1024
openssl req -out m2mqtt_srv.csr -key m2mqtt_srv.key -new
openssl x509 -req -in m2mqtt_srv.csr -CA m2mqtt_ca.crt -CAkey m2mqtt_ca.key -CAcreateserial -out m2mqtt_srv.crt -days 3650
android仅支持BKS格式的证书 ,使用keytool装换CRT成为BKS格式,
4.生成BKS格式证书
先下载bcprov-jdk16-141.jar 放到1.6.0.jdk/Contents/Home/lib/ext目录下
keytool -importcert -keystore test.bks -file m2mqtt_ca.crt -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider
5.配置服务器端
修改 mosquitto_m2mqtt.conf
bind_address : server name (in my case bind_address ppatierno-PC);
port : MQTT port for SSL/TLS is 8883 (port 8883);
cafile : path for CA certificate (cafile C:\OpenSSL-Win64\bin\PEM\m2mqtt_ca.crt);
certfile : path for server certificate (certfile C:\OpenSSL-Win64\bin\PEM\m2mqtt_srv.crt);
keyfile : path server private key (keyfile C:\OpenSSL-Win64\bin\PEM\m2mqtt_srv.key);
tls_version : TLS version (tls_version tlsv1);
启动服务器
mosquitto –c mosquitto_m2mqtt.conf –v
6.android客户端,添加信任证书代码
SSLContext context;
KeyStore ts = KeyStore.getInstance("BKS");
ts.load(getResources().openRawResource(R.raw.test),
"123456".toCharArray());
TrustManagerFactory tmf = TrustManagerFactory
.getInstance("X509");
tmf.init(ts);
TrustManager[] tm = tmf.getTrustManagers();
context = SSLContext.getInstance("TLS");
context.init(null, tm, null);
// SocketFactory factory= SSLSocketFactory.getDefault();
// Socket socket =factory.createSocket("localhost", 10000);
SocketFactory factory = context.getSocketFactory();
conOpt.setSocketFactory(factory);
7.源码下载地址
git clone https://github.com/widercode/AndroidMqttWithSSLSample.git
- Mosquito使用SSL/TLS进行安全通信时的使用方法 ------生成和发布证书openssl
- Mosquito使用SSL/TLS进行安全通信时的使用方法 ------生成和发布证书openssl
- Mosquito使用SSL/TLS进行安全通信时的使用方法
- Mosquito使用SSL/TLS进行安全通信时的使用方法
- linux安全和加密之SSL\TLS协议、CA、openssl的概述和使用
- 基于 openssl 生成用于 SSL 和 TLS 的数字证书
- ASP.NET(C#)使用证书进行SSL安全通信
- 安全通信系统--OpenSSL的安装编译、证书生成
- 安全通信系统--OpenSSL的安装编译、证书生成
- openssl 生成SSL证书
- openssl 生成 SSL证书
- openssl生成ssl证书
- OpenSSl生成 SSL证书
- 用openssl生成SSL使用的私钥和证书,并自己做CA签名
- 用openssl生成SSL使用的私钥和证书,并自己做CA签名
- 使用OpenSSL API 建立SSL安全通信的一般流程
- 使用OpenSSL API 建立SSL安全通信的一般流程
- 对于openssl生成ssl证书的补充!
- SVM(二)
- 数据泵的导入导出(四)
- eclipse中的.project 和 .classpath文件的具体作用
- 浅挖《程序员的自我修养》的小问题
- Cocos2dx学习笔记38 plist的异步加载
- Mosquito使用SSL/TLS进行安全通信时的使用方法 ------生成和发布证书openssl
- ios经验7:简单实现上传图片
- 关于ES、PES、PS以及TS码流
- Android应用开发相关下载资源
- IOS学习 断点续传简单实现-ASIHTTPRequest类库简介和使用说明
- crond服务和crontab命令
- pat 1030
- 关于undo的常用操作
- vc++6里比尔盖茨挖的坑有多少?