# iot-regproxy **Repository Path**: gisplus/iot-regproxy ## Basic Information - **Project Name**: iot-regproxy - **Description**: 云平台密钥分发/自动注册代理 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 11 - **Created**: 2021-12-07 - **Last Updated**: 2021-12-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Iot平台注册代理 ## 使用环境 * 开发语言: Java 8+ * 数据库: 无 * 磁盘空间要求: 几乎没有 * 内存要求: 128mb ## 支持的功能 * 阿里云密钥分发(已完成) *中移动OneNet(已完成) * 腾讯云密钥分发(计划中) * 百度密钥分发(计划中) * 华为云密钥分发(计划中) ## 部署说明 默认监听的端口是 8384 ### 阿里云分配子用户权限 * 访问 "RAM 访问控制" * 点击"用户",点击"创建用户", 选定一个名称作为登录名,访问方式选中"编程访问". 记录AccessKey信息 * 在用户列表中, 选中该新增用户的"添加权限" * 输入过滤关键字"iot", 出现"管理物联网平台(IoT)的权限", 选中并添加完成. ### 从源码编译 * 下载源码 `git clone https://gitee.com/openLuat/iot-regproxy.git` * 修改src/main/resources/application.properties的密钥信息 * 打包成jar `mvn clean package nutzboot:shade` * 启动程序 `java -jar target/xxxx.jar` ### 从附件下载 * 下载压缩包,解压到一个目录, 不能带中文路径,不能带特殊字符(包括空格) * 修改application.properties的密钥信息 * 启动程序 `java -jar target/xxxx.jar` ### Docker镜像 docker路径为 `registry-vpc.cn-beijing.aliyuncs.com/wendal/iot-regproxy` 当前已上传到版本号为1.0.0 ```bash docker run --rm -it --name iot-regproxy -p 8384:8384 registry-vpc.cn-beijing.aliyuncs.com/wendal/iot-regproxy:1.0.0 ``` 通过设置环境变量即可修改配置项(参考application.properties) 推荐使用docker-compose方式启动 ```yml version: "3.2" services: regproxy: image: registry-vpc.cn-beijing.aliyuncs.com/wendal/iot-regproxy:1.0.0 container_name: "regproxy" ports: - 8384:8384 environment: - "luatos.regproxy.aliyuniot.a1UTvQkICk9.endpoint": "cn-shanghai" - "luatos.regproxy.aliyuniot.a1UTvQkICk9.accessKey": "LTAI4GK9WRyGwfgygQYUayWb" - "luatos.regproxy.aliyuniot.a1UTvQkICk9.accessSecret": "gDEzQ8VR3nVk3a1edCLoP8Kp4XQT6h" - "luatos.regproxy.aliyuniot.a1UTvQkICk9.signKey": "123" ``` ## API说明 ### 阿里云密钥分发 /reg/aliyun URI参数 ``` dev : "abc...def" # 设备识别号,通常是IMEI或者MacAddr key : "abc...kef" # 阿里云iot的产品ProductKey,与application.properties的key对应 sign : "asd...kkk" # 签名密钥,这里的签名与阿里云iot无关 ranstr : "aabc" # 随机字符串,用于加强加密效果 ``` 响应值为JSON ``` { "secret" : "1a67f7eca85b5555a762zzzz1dc6be03", // 如果参数正确,返回secret "msg" : "not ok" // 其他任何错误,返回msg显示报错原因 } ``` 示例请求 ``` http://regproxy.vue2.cn:8384/reg/aliyun?dev=868956049946571&key=a1UTvQkICk9&sign=2c4e6e43b7f83c2e9809e8af118125bd ``` ### 阿里云密钥分发 /reg/onenet URI参数 ``` dev : "abc...def" # 设备识别号,通常是IMEI或者MacAddr key : "abc...kef" # onenet的产品id,与application.properties的key对应 ``` 响应值为JSON ``` { "secret" : "1a67f7eca85b5555a762zzzz1dc6be03", // 如果参数正确,返回secret "msg" : "not ok" // 其他任何错误,返回msg显示报错原因 } ``` 示例请求 ``` http://regproxy.vue2.cn:8384/reg/onenet?dev=868956049946571&key=123456 ``` ## 签名算法,部分平台需要, 可禁用检查 * 签名算法为MD5, * 算法表达式 md5(deviceName+productKey+signKey+(ranstr?)) * 如果ranstr不传,默认为空字符串. ## 配置信息详解 ``` # 服务器端口号,记得配好防火墙和安全组 server.port=8384 # 服务器上需要绑定的ip server.host=0.0.0.0 # 阿里云物联网平台的信息, 可以配置多组 # 规则为 luatos.regproxy.aliyuniot.产品key(productKey).配置项 # 例如 产品Key为a1UTvQkICk9, 配置信息如下 luatos.regproxy.aliyuniot.a1UTvQkICk9.endpoint=cn-shanghai luatos.regproxy.aliyuniot.a1UTvQkICk9.accessKey=LTAI4GK9WRyGwfgygQYUayWb luatos.regproxy.aliyuniot.a1UTvQkICk9.accessSecret=gDEzQ8VR3nVk3a1edCLoP8Kp4XQT6h luatos.regproxy.aliyuniot.a1UTvQkICk9.signKey=123 # accessKey和accessSecret请使用RAM管理,分配iot完全权限 # 中移动OneNet luatos.regproxy.onenet.123321.accessKey=LTAI4GK9WRyGwfgygQYUayWbVzx ``` ## 常见故障 * 提示RAM无权限 -- 为子账号分配IOT平台的完全权限 * 提示ProductKey找不到 -- 检查application.properties的配置项