• [大咖交流] idou老师教你学Istio 09: 如何用Istio实现K8S Ingress流量管理
    前言在Istio的世界里,如果想把外部的请求流量引入网格,你需要认识并会学会配置Istio Ingress Gateway什么是Ingress Gateway由于Kubernetes  Ingress API只能支持最基本的HTTP路由,使用Kubernetes Ingress资源来配置外部流量的方式不能满足需求。因此Istio v1alpha3 routing API引入新的Istio Ingress Gateway取代Kubernetes  Ingress。Gateway为HTTP/TCP流量配置了一个负载均衡,用于承载网格边缘的进入和发出连接。在同一个网格中可以有多个不同的gateway存在。这一规范中描述了一系列开放端口,以及这些端口所使用的协议、负载均衡的 SNI 配置等内容。用户可以利用标准的Istio 路由规则控制HTTP和TCP请求进入网格。从下图可以看到Istio gateway在整个网格中的使用情况:如何配置Gateway控制Ingress流量如果你已经安装好了bookinfo的应用,为了能在外部访问bookinfo中的productpage服务,只需要配置Gateway和相关的VirtualService。用一个简单的gateway配置一个负载均衡使访问bookinfo.com的外部http流量能够进入网格:apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata:   name: bookinfo-gateway spec:   selector:     istio: ingressgateway   servers:     - hosts:     - bookinfo.com         port:       number: 80             name: http             protocol: HTTP为了配置相应的路由,需要为相同的host定义一个VirtualService 并且用配置中gateways的字段绑定到刚才创建的Gateway:apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata:   name: bookinfo spec:   hosts:     - bookinfo.com     gateways:     - bookinfo-gateway # <---- 绑定gateway     - mesh # <----对内部通信进行流量控制     http:     - match:    - uri:       exact: /productpage     route:         - destination:        host: productpage                 port:                   number: 9080这样就达到了在外网开放productpage服务的目的。如何用HTTPS加密Gateway?我们也可以为服务启用TLS保护,以HTTPS的形式对网格外提供服务。首先需要使用工具生成客户端和服务器端的证书和密钥。然后使用密钥和证书作为输入,创建一个Secret。$ kubectl create -n istio-system secret tls istio -ingressgateway-certs --key key.pem --cert cert.p em接下来修改Gateway对象,为Ingress gateway开放一个443端口,用于提供HTTPS服务:apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata:  name: bookinfo-gateway spec:     selector:     istio: ingressgateway     servers:     - hosts:         - bookinfo.com         port:             number: 80             name: http             protocol: HTTP        - hosts:          - "*"           port:               number: 443               name: https               protocol: HTTPS           tls:               mode: SIMPLE               serverCertificate: /etc/istio/ingressgateway-certs/tls.crt               privateKey: /etc/istio/ingressgateway-certs/tls.key这样简单的配置就可以通过HTTPS协议访问bookinfo.com了。
  • [专题汇总] 【每天五分钟,精通全联接】Agent与平台对接原理【转】
    之前在就介绍过,Agent所在的网关就是一台微型计算机,所以Agent跟平台对接也是通过互联网的一些协议啦。Agent与UDS平台通过HTTPS通道进行交互。Agent与IoT联接管理平台通过HTTPS、MQTTS通道进行交互。
  • [技术干货] tomcat+restful 接收https推送消息【转】
    (转自https://developer.huawei.com/ict/forum/forum.php?mod=viewthread&tid=47157  )有小伙伴问我怎么接收https推送我这边写了个简单的restful接口的webapp,部署到tomcat服务器上,大家可以测试一下1.首先先按下面的帖子配置好tomcat服务器https://bbs.huaweicloud.com/forum/thread-13220-1-1.html 2.将附件中的RESTfulWS.rar解压后放入tomcat的webapps目录下3.将服务器映射到公网上(公网ip及port会在下面的callbackurl中用到)4.运行脚本./startup.sh 启动tomcat服务器5.进入log目录输入tail -f catalina.out可以看到服务器日志6.用postman 调用post接口(也就是callbackurl)https://ip:port/RESTfulWS/rest/UserInfoService/subscriber1PS:这里postman证书配置按下面帖子操作:https://bbs.huaweicloud.com/forum/thread-13234-1-1.html  返回200 ok即为成功7.此时会在tomcat的log界面看到调用接口推过来的数据8.调用北向的app订阅数据接口(callbackurl:https://ip:port/RESTfulWS/rest/UserInfoService/subscriber1)9.触发推送操作即可。注意:1.可以自己安装openssl验证一下之前配置的证书是否匹配A.单项认证服务器配置:验证证书:标黄的地方改成自己服务器的IP端口和根证书文件若证书没问题执行之后会返回B.双向认证服务器配置:验证证书:标黄的部分分别替换成:接受推送服务器的IP端口、华为outgoing.CertwithKey.pkcs12转换后的pem证书、接受推送服务器的根证书。若证书没问题执行之后会返回2.上传证书后,可以找华为支持人员查看后台证书是否已经更新成功。RESTfulWS.rar
  • [技术干货] Config update from https://cse.cn-north-1.myhuaweicloud.com failed
    这个问题,谁遇到过呀?
  • [技术干货] IOT平台北向接口HTTPS调用演示 : Auth(鉴权)接口调用演示
    接口功能:实现第三方系统在访问开发API之前的认证。应用访问IoT平台对外开放接口之前须携带应用Id和密码进行鉴权登录,登录成功后获取访问令牌accessToken。关于接口的说明,请参考:https://support.huaweicloud.com/api-IoT/iot_06_0002.html注意事项:应用在调用除当前接口的以下接口时,必须在HTTP消息头中携带参数app_key和Authorization:Bearer,app_key的值为应用Id,Authorization:Bearer的值即为获取到的accessToken。在调用本接口前,请确认已从华为支撑人员获取到appId和secret。appId是IoT平台给每一个应用分配的身份标识。调用接口工具:restclient-ui-3.4.2.jar(可网上搜索直接下载)1:设置请求URL,请求方式:POST2:设置请求Header, key:Content-Type value:application/x-www-form-urlencoded3:设置请求Body: appId=*****&secret=******,请求参数appId与secret由华为方提供4:配置SSL,其中Truststore/Keystore文件及密码由华为IoT平台方提供5点击调用按钮,观察响应参数
  • [技术干货] HTTPS单向认证和双向认证
    北向订阅是OceanConnect合作伙伴开发过程中常遇到的一个问题。本次主要介绍单向认证和双向认证,并实际给出例子。我们先来看一下单向认证和双向认证的业务流程。SSL单向认证1.客户端的浏览器向服务器传送客户端SSL协议的版本号,加密算法的种类,产生的随机数,以及其它服务器和客户端之间的通讯所需要的各种信息。2.服务器向客户端传送SSL协议的版本号,加密算法的种类,随机数以及其它相关信息,同时服务器还将向客户端传送自己的证书。3.客户利用服务器传过来的信息验证服务器的合法性,服务器的合法性包括:证书是否过期,发送服务器证书的CA是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配。如果合法性验证没有通过,通讯将断开;如果合法性验证通过,将继续进行第四步。4.用户端随机产生一个用于后面通讯的“对称密码”,然后用服务器的公钥(服务器的公钥从步骤2中的服务器的证书中获得)对其加密,然后将加密后的“预主密码”传给服务器。5.服务器将用自己的私钥解开加密的“预主密码”,然后执行一系列步骤来产生主通讯密码(客户端也将通过同样的方法产生相同的主通讯密码)。6.服务器和客户端用相同的主密码即“通话密码”,一个对称密钥用于 SSL 协议的安全数据通讯的加解密通讯。同时在 SSL 通讯过程中还要完成数据通讯的完整性,防止数据通讯中的任何变化。7.客户端向服务器端发出信息,指明后面的数据通讯将使用的步骤6中的主密码为对称密钥,同时通知服务器客户端的握手过程结束。8.服务器向客户端发出信息,指明后面的数据通讯将使用的步骤6中的主密码为对称密钥,同时通知客户端服务器端的握手过程结束。9.SSL 的握手部分结束,SSL 安全通道的数据通讯开始,客户和服务器开始使用相同的对称密钥进行数据通讯,同时进行通讯完整性的检验。SSL双向认证1.浏览器发送一个连接请求给安全服务器。2.服务器将自己的证书,以及同证书相关的信息发送给客户浏览器。3.客户浏览器检查服务器送过来的证书是否是由自己信赖的 CA 中心所签发的。如果是,就继续执行协议;如果不是,客户浏览器就给客户一个警告消息:警告客户这个证书不是可以信赖的,询问客户是否需要继续。4.接着客户浏览器比较证书里的消息,例如域名和公钥,与服务器刚刚发送的相关消息是否一致,如果是一致的,客户浏览器认可这个服务器的合法身份。5.服务器要求客户发送客户自己的证书。收到后,服务器验证客户的证书,如果没有通过验证,拒绝连接;如果通过验证,服务器获得用户的公钥。6.客户浏览器告诉服务器自己所能够支持的通讯对称密码方案。7.服务器从客户发送过来的密码方案中,选择一种加密程度最高的密码方案,用客户的公钥加过密后通知浏览器。8.浏览器针对这个密码方案,选择一个通话密钥,接着用服务器的公钥加过密后发送给服务器。9.服务器接收到浏览器送过来的消息,用自己的私钥解密,获得通话密钥。10.服务器、浏览器接下来的通讯都是用对称密码方案,对称密钥是加过密的。相对于单向认证,双向认证就是除了客户端需要验证连接的服务器是否是正确的之外,服务器也需要验证想要接入的客户端是否是正确的客户端。在此过程中,不仅客户端会对服务器的证书进行校验,服务器也会对客户端的证书进行校验。一般Web应用都是采用单向认证的,原因很简单,用户数目广泛,且无需在通讯层对用户身份进行验证。一般由业务应用层来保证用户的合法登入。但如果在企业应用对接,情况就不一样,可能会要求对客户端做身份验证。这就需要做SSL双向认证。动手测试获得安全证书的方式有两种,一种是向权威机构购买,另一种是创建自我签名的证书。在这里我们使用第二种方式。单向认证1.创建服务端证书(KeyStore是服务器的密钥存储库,存放服务器的公钥、私钥、证书)keytool -genkeypair -v -alias tomcat -keyalg RSA -keystore tomcat.keystore -keypass 1qaz@WSX -validity 365002.配置Tomcat<Connector           protocol="org.apache.coyote.http11.Http11NioProtocol"           port="8443" maxThreads="200"           scheme="https" secure="true" SSLEnabled="true"           keystoreFile="D:\Program Files\Apache Software Foundation\Tomcat 9.0\tomcat.keystore" keystorePass="1qaz@WSX"           clientAuth="false" sslProtocol="TLS"/>3.启动Tomcat(其中tomcat执行的应用可以从这篇帖子获取:http://developer.huawei.com/ict/forum/forum.php?mod=viewthread&tid=47157&highlight=)4.导出自签名的公钥证书keytool -exportcert -alias tomcat -file tomcat.cer -keystore tomcat.keystore5.把公钥证书导入到truststore中(TrustStore是服务器的信任密钥存储库)keytool -importcert -v -trustcacerts -alias tomcat -file tomcat.cer -keystore truststore.ks如果是对接OceanConnect,需要将证书导成PEM格式(需要安装openssl)openssl x509 -inform der -in tomcat.cer -out tomcat.pem6.使用RESTClient来进行测试PS:KeyStore可以看成一个放key的库,key就是公钥,私钥,数字签名等组成的一个信息。truststore是放信任的证书的一个store。truststore和keystore的性质是一样的,都是存放key的一个仓库,区别在于,truststore里存放的是只包含公钥的数字证书,代表了可以信任的证书,而keystore是包含私钥的。双向认证1.生成服务器证书keytool -genkeypair -v -alias tomcat -keyalg RSA -keystore tomcat.keystore -keypass 1qaz@WSX -validity365002.生成客户端证书keytool -genkeypair -v -alias client -keyalg RSA -keystore client.keystore -keypass 1qaz@WSX -validity 365003.提取服务器/客户端证书公钥keytool -exportcert -alias tomcat -file tomcat.cer -keystore tomcat.keystorekeytool -exportcert -alias client -file client.cer -keystore client.keystore4.让服务器信任客户端证书keytool -importcert -v -file client.cer -keystore tomcat.truststore -storepass 1qaz@WSX执行完成后,生成tomcat.truststore5.让客户端信任服务端证书keytool -importcert -v -file tomcat.cer -keystore client.truststore -storepass 1qaz@WSX执行完成后,生成client.truststore6.配置Tomcat<Connector           protocol="org.apache.coyote.http11.Http11NioProtocol"           port="8443" maxThreads="200"           scheme="https" secure="true" SSLEnabled="true"           keystoreFile="/usr/local/tomcat/apache-tomcat-9.0.2/tomcat.keystore" keystorePass="1qaz@WSX"           truststoreFile="/usr/local/tomcat/apache-tomcat-9.0.2/tomcat.truststore" truststorePass="1qaz@WSX"           clientAuth="true" sslProtocol="TLS"/>7.使用RESTClient来进行测试,其中配置如下图。下面的大家才是大家关心的吧!双向认证(以对接OceanConnect为例)现在我们来配置和OceanConnect进行双向认证1.生成服务器证书keytool -genkeypair -v -alias hwcloud -keyalg RSA -keystore hwcloud.keystore -keypass 1qaz@WSX -validity 365002.提取服务器证书公钥keytool -exportcert -alias hwcloud -file hwcloud.cer -keystore hwcloud.keystore执行完成后,导出hwcloud.cer3.让服务器信任客户端证书a)将ca.jks转换成ca.p12证书(上面的两个输入密码的地方可自行设置, 源密钥库口令为:Huawei@123)keytool -importkeystore -srckeystore ca.jks -destkeystore ca.p12 -srcstoretype jks -deststoretype pkcs12b)将ca.p12转换成ca.pem证书openssl pkcs12 -in ca.p12 -out ca.pemc)把ca.pem导入tomcat的信任证书链,让服务器信任客户端证书keytool -import -v -file ca.pem -alias huawei_ca -keystore hwcloud.truststore执行完成后,生成hwcloud.truststore4.把服务器证书导出到一个单独的pem文件上传到OceanConnectopenssl x509 -inform der -in hwcloud.cer -out hwcloud.pem5.配置Tomcat<Connector           protocol="org.apache.coyote.http11.Http11NioProtocol"           port="8443" maxThreads="200"           scheme="https" secure="true" SSLEnabled="true"           keystoreFile="/usr/local/tomcat/apache-tomcat-9.0.2/hwcloud.keystore" keystorePass="1qaz@WSX"           truststoreFile="/usr/local/tomcat/apache-tomcat-9.0.2/hwcloud.truststore" truststorePass="1qaz@WSX"           clientAuth="true" sslProtocol="TLS"/>6.通过OC北向接口进行订阅(最简单订阅设备增加的通知)
  • [技术干货] 【分享】使用postman来调测接口的方法(https)
    【分享】使用postman来调测接口的方法(https) 一、            如何安装postman?Postman下载地址https://www.getpostman.com/我下载的版本是Postman-win64-5.0.0-Setup.exe这是免安装的,可以直接运行。 二、            如何使用postman?跳过注册,直接使用:  三、            如何配置HTTPS证书?点击扳手图标,再点击Settings:关闭SSL校验:切到Certificates页签:添加客户端校验:添加Host信息(平台的https的IP和端口请走mar电子索要)、导入.crt文件和.key文件(见本帖附件):  四、            HTTPS调用平台的鉴权接口 HTTPS证书.rar 
  • [技术干货] 在本地配置https服务器详细流程【转】
    (转自https://developer.huawei.com/ict/forum/thread-25457.html)一:为服务器生成证书1. 找到jdk安装目录,运行控制台,切换到该目录:2. 使用keytool为tomcat生成证书:tomcat.keystore;keytool -genkey -v -alias tomcat -keyalg RSA -keystore tomcat.keystore -validity 36500二:为客户端生成证书1. 生成客户端证书:client.p12keytool -genkey -v -alias client -keyalg RSA -storetype PKCS12 -keystore client.p12 -validity 36500三:让服务器信任客户端证书1. 将client.p12转换成client.cer;keytool -export -alias client -keystore client.p12 -storetype PKCS12 -rfc -file client.cer2. 将client.cer导入到tomcat的信任证书链中keytool -import -alias client-v -file client.cer -keystore tomcat.keystore四:让客户端信任服务器证书1. 把tomcat证书导出为tomcat.cer文件(导出根证书)keytool -export -v -alias tomcat -file tomcat.cer -keystore tomcat.keystore2. 把tomcat.cer文件转换成tomcat.pem文件,并上传到IoT平台的应用(需要安装openssl)openssl x509 -inform der -in tomcat.cer -out tomcat.pem五:将华为提供的证书导入tomcat的信任证书链中1. 先将化为提供的outgoing.CertwithKey.pkcs12转换成outgoing.CertwithKey.pem证书  openssl pkcs12 -in outgoing.CertwithKey.pkcs12 -out outgoing.CertwithKey.pem      EnterImport Password为:IoM@1234,下面两个输入密码的地方可自行设置  再把outgoing.CertwithKey.pem导入tomcat的信任证书链  keytool -import -v -file outgoing.CertwithKey.pem -alias huawei_out -keystore tomcat.keystore2.先将ca.jks转换成ca.p12证书  keytool -importkeystore -srckeystore ca.jks -destkeystore ca.p12 -srcstoretype jks -deststoretype pkcs12     上面的两个输入密码的地方可自行设置, 源密钥库口令为:Huawei@123  再把ca.p12转换成ca.pem证书  openssl pkcs12 -in ca.p12 -out ca.pem      密码为上面自己设置的目标密钥库口令 最后把ca.pem导入tomcat的信任证书链  keytool -import -v -file ca.pem -alias huawei_ca -keystore tomcat.keystore    密码为生成服务器证书时设置的密码。六:配置Tomcat服务器属性说明:clientAuth:设置是否双向验证,默认为false,设置为true代表双向验证keystoreFile:服务器证书文件路径keystorePass:服务器证书密码truststoreFile:用来验证客户端证书的根证书,此例中就是服务器证书truststorePass:根证书密码七:测试1. 启动tomcat服务器找到tomcat安装目录,运行控制台,切换到该目录的bin文件夹下执行shutdown.bat和startup.bat命令开启tomcat服务器。2.在浏览器输入https://localhost:8443没有安装证书的时候页面显示如下:3.将outgoing.CertwithKey.pkcs12证书导入到个人4.将tomcat.cer证书导入到受信任的根证书颁发机构5.重启浏览器再次输入https://localhost:8443显示如下则证书配置成功
  • [技术干货] IOT平台北向接口HTTPS调用演示(使用Restclient调用接口)
    演示接口功能:给定设备唯一标识deviceId查询设备的激活状态,激活状态可分为激活态和非激活态,也可理解设备是否可用。例如只进行北向注册设备,而南向未进行绑定那么设备就不能用,只有设备可用才能谈设备的ONLINE/OFFLINE,南向设备上报过数据,与北向开户的设备进行绑定设备才能处于激活态。关于接口的说明,请参考《华为IoT联接管理平台北向接口文档(for NB-IoT).doc》 调用接口工具:restclient-ui-3.4.2.jar(可网上搜索直接下载)1:设置请求URL,请求方式:GET2:设置请求Header, key:Content-Type, value:application/x-www-form-urlencoded;key:app_key,value:*****;key: Authorization,value: Bearer ***3:配置SSL,其中Truststore/Keystore文件及密码由华为IoT平台方提供4:点击调用按钮,观察响应参数,由于没有进行南向绑定所以响应的激活态activated:false.
  • [技术干货] Configure Postman with HTTPs Certificates - 使用Postman调用Https接口
    1. Download and install postmanhttps://www.getpostman.com/Version:the version I download is Postman-win32-5.0.0-Setup.exe.Note:Some versions of postman does not support https.Install postman, and skip the "sign up" step.2.Configure certificatesOpen "Settings" panelClose the SSL certificate verification:Add Certificate:Set host ip and port (i.e. OceanConnect platform address you are connecting to), and import CRT file and KEY file (See the attachment at the end of this post. Note that the certificate in the attachment can be used only in platform 1.3 and 1.5)3. Test the Authentication APISet http command and https URL, and set headers:  Set body and send the message:Note: the url and parameters should be the same as that defined in the API document.4.Test other APIs (e.g. register a new device)Set http command and https URL, and set headers: Set body and send the message:Default client certificate:certificate.rar
  • [大咖交流] idou老师教你学Istio 09: 如何用Istio实现K8S Ingress流量管理
    在Istio的世界里,如果想把外部的请求流量引入网格,你需要认识并会学会配置Istio Ingress Gateway什么是Ingress Gateway由于Kubernetes  Ingress API只能支持最基本的HTTP路由,使用Kubernetes Ingress资源来配置外部流量的方式不能满足需求。因此Istio v1alpha3 routing API引入新的Istio Ingress Gateway取代Kubernetes  Ingress。Gateway为HTTP/TCP流量配置了一个负载均衡,用于承载网格边缘的进入和发出连接。在同一个网格中可以有多个不同的gateway存在。这一规范中描述了一系列开放端口,以及这些端口所使用的协议、负载均衡的 SNI 配置等内容。用户可以利用标准的Istio 路由规则控制HTTP和TCP请求进入网格。从下图可以看到Istio gateway在整个网格中的使用情况:如何配置Gateway控制Ingress流量如果你已经安装好了bookinfo的应用,为了能在外部访问bookinfo中的productpage服务,只需要配置Gateway和相关的VirtualService。用一个简单的gateway配置一个负载均衡使访问bookinfo.com的外部http流量能够进入网格:apiVersion: networking.istio.io/v1alpha3kind: Gatewaymetadata:  name: bookinfo-gatewayspec:  selector:    istio: ingressgateway  servers:  - hosts:    - bookinfo.com    port:      number: 80      name: http      protocol: HTTP为了配置相应的路由,需要为相同的host定义一个VirtualService 并且用配置中gateways的字段绑定到刚才创建的Gateway:apiVersion: networking.istio.io/v1alpha3kind: VirtualServicemetadata:  name: bookinfospec:  hosts:  - bookinfo.com  gateways:  - bookinfo-gateway # <---- 绑定gateway  - mesh # <----对内部通信进行流量控制  http:  - match:    - uri:        exact: /productpage    route:    - destination:        host: productpage        port:          number: 9080这样就达到了在外网开放productpage服务的目的。如何用HTTPS加密Gateway?我们也可以为服务启用TLS保护,以HTTPS的形式对网格外提供服务。首先需要使用工具生成客户端和服务器端的证书和密钥。然后使用密钥和证书作为输入,创建一个Secret。$ kubectl create -n istio-system secret tls istio-ingressgateway-certs --key key.pem --cert cert.pem接下来修改Gateway对象,为Ingress gateway开放一个443端口,用于提供HTTPS服务:apiVersion: networking.istio.io/v1alpha3kind: Gatewaymetadata:  name: bookinfo-gatewayspec:  selector:    istio: ingressgateway  servers:  - hosts:    - bookinfo.com    port:      number: 80      name: http      protocol: HTTP   - hosts:    - "*"    port:      number: 443      name: https      protocol: HTTPS    tls:      mode: SIMPLE      serverCertificate: /etc/istio/ingressgateway-certs/tls.crt      privateKey: /etc/istio/ingressgateway-certs/tls.key这样简单的配置就可以通过HTTPS协议访问bookinfo.com了。
  • [技术干货] 在本地配置https服务器详细流程
    一:为服务器生成证书1. 找到jdk安装目录,运行控制台,切换到该目录:2. 使用keytool为tomcat生成证书:tomcat.keystore;keytool -genkey -v -alias tomcat -keyalg RSA -keystore tomcat.keystore -validity 36500二:为客户端生成证书1. 生成客户端证书:client.p12keytool -genkey -v -alias client -keyalg RSA -storetype PKCS12 -keystore client.p12 -validity 36500三:让服务器信任客户端证书1. 将client.p12转换成client.cer;keytool -export -alias client -keystore client.p12 -storetype PKCS12 -rfc -file client.cer2. 将client.cer导入到tomcat的信任证书链中keytool -import -alias client-v -file client.cer -keystore tomcat.keystore四:让客户端信任服务器证书1. 把tomcat证书导出为tomcat.cer文件(导出根证书)keytool -export -v -alias tomcat -file tomcat.cer -keystore tomcat.keystore2. 把tomcat.cer文件转换成tomcat.pem文件,并上传到IoT平台的应用(需要安装openssl)openssl x509 -inform der -in tomcat.cer -out tomcat.pem五:将华为提供的证书导入tomcat的信任证书链中1. 先将化为提供的outgoing.CertwithKey.pkcs12转换成outgoing.CertwithKey.pem证书  openssl pkcs12 -in outgoing.CertwithKey.pkcs12 -out outgoing.CertwithKey.pem      EnterImport Password为:IoM@1234,下面两个输入密码的地方可自行设置  再把outgoing.CertwithKey.pem导入tomcat的信任证书链  keytool -import -v -file outgoing.CertwithKey.pem -alias huawei_out -keystore tomcat.keystore2.先将ca.jks转换成ca.p12证书  keytool -importkeystore -srckeystore ca.jks -destkeystore ca.p12 -srcstoretype jks -deststoretype pkcs12     上面的两个输入密码的地方可自行设置, 源密钥库口令为:Huawei@123  再把ca.p12转换成ca.pem证书  openssl pkcs12 -in ca.p12 -out ca.pem      密码为上面自己设置的目标密钥库口令 最后把ca.pem导入tomcat的信任证书链  keytool -import -v -file ca.pem -alias huawei_ca -keystore tomcat.keystore    密码为生成服务器证书时设置的密码。六:配置Tomcat服务器属性说明:clientAuth:设置是否双向验证,默认为false,设置为true代表双向验证keystoreFile:服务器证书文件路径keystorePass:服务器证书密码truststoreFile:用来验证客户端证书的根证书,此例中就是服务器证书truststorePass:根证书密码七:测试1. 启动tomcat服务器找到tomcat安装目录,运行控制台,切换到该目录的bin文件夹下执行shutdown.bat和startup.bat命令开启tomcat服务器。2.在浏览器输入https://localhost:8443没有安装证书的时候页面显示如下:3.将outgoing.CertwithKey.pkcs12证书导入到个人4.将tomcat.cer证书导入到受信任的根证书颁发机构5.重启浏览器再次输入https://localhost:8443显示如下则证书配置成功
  • [行业资讯] 【寻找IoT达人】第一期·对接云平台——NB-IoT独立烟感报警器(最具潜力奖)
    原文转载至:郑冬冬分享一、背景和介绍==============1、公司/团队介绍----------------(1)厦门四信通信科技有限公司,福建省著名商标,福建省科技创新小巨人领先企业,智慧电力、智慧城市、智慧水利、智慧地灾等行业解决方案提供商。专注于LoRa、NB-IoT、ZigBee、2.5G、3G、LTE等无线通讯模组和终端产品,物联网测控终端及系统解决方案的研发、生产、销售及服务,为行业用户,系统集成商,运营商提供有竞争力的产品、技术、方案和服务。聚焦于IoT,围绕着行业客户,提供开放的合作理念,并致力于让万物更加智慧的愿景。(2)本次参赛团队是由四信通信研发三部的小伙伴自发组成。(原本报名的时候,我们是叫IoT小分队。最近其他同事跟我吐槽说咱整个公司都是IoT,你不能把好名字给占了。好吧,所以我们现在只好叫研发三部了,一个很淡淡的名字。)我们主要负责 NB-IoT、LoRa、ZigBee 等无线模组和终端产品解决方案。作为阿里IoT智慧城市合作伙伴,ICA联盟重要成员,我们希望通过此次比赛为下一步智慧城市消防方案做产品铺垫。同时希望借此机会熟悉国产优秀的操作系统 LiteOS,了解后续项目与 LiteOS 的合作可能。 2、项目介绍-----------**项目简介:** (1)行业现状传统的独立式火灾报警设备/系统,只能够起到在火灾发生时警示现场人员疏散的作用。 消防及行政监管及消防系统运行服务商无法第一时间掌握消防系统的真实运营率和设施完好率(Eg. 故障、电池电量低、违规拆除)。并且当发生火情的时候,完全靠现场人员进行报警,无法让消防部门及其他相关救援力量(物业、微型消防站、社区警务室等)在第一时间内获取告警通知和准确火灾位置, 大大延误了出警和初起火灾扑救的宝贵时间,给火灾的扑救带来极大的阻力。  所以基于无线通讯技术的独立式智能火灾报警系统在综合了多年来企业,机关,消防部门的各种不利,各种弊端应运而生。 (2)应用场景此前四信已经和霍尼韦尔等多家企业合作过 LoRa 感烟报警器,并取得公安部认证,在厦门等地的多个项目中成功应用。随着 NB-IoT 网络的逐步覆盖,我们希望同时提供 NB-IoT 的消防产品以满足客户多样性的需求。此次参赛作品是 四信 NB-IoT 独立感烟火灾报警器(对接阿里云)的产品原型,为后续其他消防类产品做技术预研铺垫。 (3)项目特点 项目代码兼容资源受限设备,便于原型往实际产品的转化 原型代码开发上避免采用 lwip 协议栈,为后续往资源受限设备上迁移做好了准备。这个决定让我们的工作量成倍地加大,但作为开源项目,我们觉得就应该给其他开发者提供一些不同的思路。通常的做法是把串口操作封装到lwip的链路层ppp协议里,在CPU一侧来实现TCP/IP协议栈。但我们坚持采用模块AT指令来实现数据操作,把协议栈的工作继续留在了模组那一侧。原本已经实现了CoAP的数据传输。但阿里云传输协议需要使用 DTLS 加密方式,这个嵌入式加密库只有 socket 接口的实现方式。虽然在已有的DTU产品已经研究过此种方式,但 socket 接口不够标准,适配工作量比较大。后来有幸找到了AliOS的SAL(Socket抽象层)相关代码,socket 实现方式基本和标准接口接近。我们移植了SAL模块,并解决了UDP等部分的疑似BUG(我们还会和AliOS的朋友再沟通确认),顺利地完成了非lwip的实现方案。 采用 NB-IoT + CoAP协议 通讯方式 由于采用 BC95 这款模块,它的功能不像以太网等硬件那么方便,模块域名解析功能受限、仅支持UDP协议等,因此我们在 SNTP 协议等一些场景做了相应处理,或许能给后面其他使用这类模块的朋友一些参考。 阿里云物联网套件高级版首批接入 阿里云物联网套件高级版,在18年4月刚刚发布,在原本基础版提供的通道能力上扩展了设备全生命周期管理能力,包括设备模型定义、在线调试、原始数据存储、设备数据查询、设备数据推送等能力,让使用者无需考虑设备的数据格式和存储等问题。在目前平台调试手段有限的情况,花了较多精力与阿里伙伴调试确认,最终搞定了物模型转化为Alink的一些易错点。本产品原型的Alink格式可给后续其他朋友提供一些参考。 (4)项目可行性分析 产品原型实现了一款烟感产品必要的 烟雾报警、防拆报警、电池电量采集、心跳上报周期可设 等功能,并且实现了阿里云IoT平台高级版的协议接入,可便利地集成到阿里云智慧城市项目中。 四信自研的 NB-IoT 烟感产品 F-SDM200 已完成内部硬件设计,基于目前原型已实现的功能,接下去主要在低功耗CPU上再调试下休眠业务,就可以完成实际产品功能。二、项目内容============1、方案说明-----------(1)功能说明。1.烟雾报警时可发出声光警报信号,并在平台上报警。2.支持被拆卸时报警。3.电池电压不足时有声光提示功能。4.心跳上报周期可设,便于终端用户结合实际场景做定制调整。(2)阿里云物联网平台对接说明。- 设备端NB-IoT模块中集成阿里云 IoT SDK,厂商在IoT套件控制台申请设备证书(ProductKey/DeviceName/DeviceSecret)并烧录到设备中;- NB-IoT设备通过运营商的蜂窝网络进行入网,可能需要联系当地运营商,确保设备所属地区已经覆盖NB网络,并已具备NB-IoT入网能力;- 设备入网成功后,NB设备产生的流量数据及产生的费用数据,将由运营商的M2M平台管理,此部分平台能力由运营商提供;- 设备开发者可通过 CoAP/UDP 协议,将设备采集的实时数据上报到阿里云IoT套件,借助IoT套件实现海量亿级设备的安全连接和数据管理能力,并可通过规则引擎,与阿里云的各类大数据产品、云数据库和报表系统打通,快速实现从连接到智能的跨越;- IoT套件提供相关的数据开放接口和消息推送服务,可将数据转发到业务服务器中,实现设备资产与实际应用的快速集成。(3)阿里云物联网平台的简介阿里云物联网平台目前包括:物联网开发套件基础版、高级版、边缘计算版。一站式开发平台,包括LinkDevelop、飞凤、飞燕平台。此外也提供了AliOS Things嵌入式操作系统。其Alink协议,可以对各种设备进行建模,网关和子设备灵活配置。并且阿里可以横向打通市场平台,可以让开发客户做横向扩展,比如买相关的模块和技术,或者出售相关的软件模块或产品。2、硬件方案-----------硬件构成方案为:感烟探测传感器 + STM32F429开发板 + NB-IoT模块。3、软件方案-----------软件包括如下几部分:LiteOS核心、开发板驱动、STM32F4底层库、CoAP库和Alink相关实现代码。三、作品展示============1. 实物照片2. 烟感触发测试如下图所示,按住火警报警测试按键,烟感会发出报警鸣叫,此时则认为是有火灾发生。若释放火警报警测试按键,则代表火警消除,此时蜂鸣器停止报警鸣叫。火警状态发送变化(火警报警——>火警消除 或者 火警消除——>火警报警),会立即上报当前变化状态。3. 防拆开关测试如下图所示,防拆开关按住则代表正常状态,设备没有被拆下。若防拆开关弹开,则代表设备被拆除。正常情况下,防拆开关处于按住状态。防拆开关状态发生变化,会立即上报当前变化状态。四、视频展示============ 1.项目编译视频 los_game_aliyun_sdm200_build.mp4 (1.54 MB, 下载次数: 14) 2.设备属性常规30秒上报 los_game_aliyun_sdm200_report.mp4 (1.53 MB, 下载次数: 12) 3.烟感报警立即上报 los_game_aliyun_sdm200_alarm.mp4 (1.48 MB, 下载次数: 10)  五、项目源码请参见github工程:https://github.com/LiteOS/LiteOS_Connect_to_3rd_Cloud/tree/master/liteos_to_alicloud
  • [介绍/入门] AOS编排语言系列教程(八):创建容器集群Cluster
    【摘要】 华为云的云容器引擎(Cloud Container Engine,简称CCE)可以提供高可靠高性能的企业级容器应用管理服务,CCE.Cluster、CCE.NodePool用于部署华为云PaaS层的kubernetes集群资源。我们在已创建虚拟私有云和子网的模板中,加入创建一个容器集群(包含一个节点)。目前容器是非常热门的一项技术,是Cloud2.0时代的技术标准。华为云的云容器引擎(Cloud Container Engine,简称CCE)可以提供高可靠高性能的企业级容器应用管理服务,CCE.Cluster、CCE.NodePool用于部署华为云PaaS层的kubernetes集群资源。通过CCE.Cluster资源可以为用户提供编排用户应用功能。通过创建CCE.NodePool资源,方便用户将华为云上资源编排在节点上,提供更加强大优质的功能。我们在已创建虚拟私有云和子网的模板中,加入创建一个容器集群(包含一个节点):tosca_definitions_version: huaweicloud_tosca_version_1_0node_templates:  mysubnet:    type: HuaweiCloud.VPC.Subnet    properties:      cidr: '192.168.1.0/24'      dhcpEnable: true      gateway: 192.168.1.1      name: my-subnet      vpcId:        get_reference: myvpc    requirements:      - vpcId:          node: myvpc  myvpc:    type: HuaweiCloud.VPC.VPC    properties:      cidr: '192.168.0.0/16'      name: my-vpc  mycluster:    type: HuaweiCloud.CCE.Cluster    properties:      subnetId:        get_reference: mysubnet      flavor: cce.s1.small      vpcId:        get_reference: myvpc    requirements:      - subnetId:          node: mysubnet      - vpcId:          node: myvpc  mynode:    type: HuaweiCloud.CCE.NodePool    properties:      dataVolumes:        - volumeType: SATA          size: 100      instances: 1      rootVolume:        volumeType: SATA        size: 40      sshKeyName: KeyPair-ac70      flavor: s3.small.1      clusterId:        get_reference: mycluster    requirements:      - clusterId:          node: myclustermy-cluster是一个容器集群对象,用于部署华为云PaaS层的kubernetes集群资源。其中参数flavor表示集群规格,可在CCE创建集群页面查询可使用的集群规格名称。my-node是CCE.NodePool对象,用于部署华为云PaaS层kubernetes节点资源。my-node有如下几个参数:    1.         dataVolumes:创建节点的数据盘模型。    2.         instances:创建节点的数量。    3.         rootVolume:创建节点的系统盘模型。    4.         sshKeyName:创建节点登录时使用的密钥对,需要在ECS服务界面提前创建。    5.         flavor:容器节点的规格。    6.         clusterId:资源所属的集群ID,模板中设置为刚创建的集群my-cluster。容器集群创建成功:
  • 分布式数据库中间件使用心得
            关键字:高可用、分布式、多可用区       最近公司新项目使用了华为云的DDM分布式数据库中间件服务,通过一段的时间的使用感觉还不错。近段时间发现有许多小伙伴也准备去使用这个服务,所以为大家分享一下使用 创建DDM服务的经验,帮助小伙伴们少走弯路。       首先在使用创建DDM实例的时候小伙伴们会遇到的第一个问题应该是如何选择DDM实例的规格,选小了满足不了业务量,选大了浪费多余的性能。 那么应该如何解决呢?DDM服务公布了不同规格DDM实例的性能压测数据,如下图,我们可以参考DDM的性能压测数据,再通过对公司业务发展规模的评估,选择相对应的DDM实例规格。混合读写OLTP场景sql类型DDM规格并发数QPS混合sql8C16G2564947416C32G2568730232C64G25615267164C128G512317431 简单查询场景sql类型DDM规格并发数QPS单select8C16G25610800316C32G25620522832C64G25642558564C128G512796614         选择规格之后,在创建DDM实例的界面,我们会看到有可用分区这个选项。可能有部分小伙伴不理解可用分区是什么意思,在这里也一起解释一下。      不同的可用分区在物理上分布在不同的地点,可以简单地理解为:在同一区下,电力、网络隔离的物理区域,可用区之间内网互通,不同可用区之间物理隔离(如下图所示)。针对可用区的选择上,主要从两个方面考虑:   (1)如果您需要提高应用的高可用性,建议您将云服务器创建在不同的可用区内。这样我们使用的DDM实例虚拟机的物理资源,就分布在了多个可用分区上,当其中有可用分区的物理资源出现故障时,只要有一个可用分区还正常运行我们的DDM实例就依然可以使用。   (2)如果您需要较低的网络延迟,建议您将云服务器创建在相同的可用区内。             还有一点需要注意的是,在创建DDM实例时选择的VPC与安全组必须要与你的ECS服务器使用的一致,否则会导致网络不通如下图所示(华为云出于安全上的考虑,VPC之间默认网络不互通,安全组不一致有可能导致网络访问被拦截),在华为云创建了多个VPC和安全组的同学需要注意一下。            DDM实例的使用需要关联RDS实例,因此在创建完DDM实例之后,还需要创建RDS实例才能够使用DDM实例。下面我们继续介绍RDS实例创建的注意事项。         首先需要注意的是,存储类型一定要选择超高IO类型,如下图所示,超高IO类型的最大吞吐量达到350MB/S,性能大大提高,并且价格只比普通IO贵20多块钱超值。数据库版本,优先选择最高MySQL5.7+,新版本会修复旧版本存在的漏洞,并且性能上会有所提高。           实例类型(如下图所示)如果仅仅是学生小伙伴自己玩玩,或者用于开发测试环境,则可选择单机实例即可,省点钱。但是如果是使用于公司的业务,则建议选择主备实例,预防万一,保证业务的稳定运行,提高可靠性,就相当于买个保险了,多花点钱图个安心,完全值得。            RDS实例规格可以适当选择小点,以便创建多个RDS,比如:如果需要一个2核8GB的RDS,可以换成创建两个1核4GB的RDS。这样的好处是,在使用DDM实例时,可以挂载多个RDS,提高使用DDM实例的性能。需要注意的是,创建RDS实例时,选择的VPC与安全组,也与创建DDM实例时选择的一样,必须与你的ECS服务器使用的一致。         最后在创建完RDS实例之后,如果对性能有更高要求的小伙伴,可以在RDS实例管理界面,创建只读实例,如下图所示,创建的只读实例的规格与主RDS实例的规格一致即可。创建了只读实例后,可以在DDM服务中,设置访问主RDS实例与只读RDS实例的负载均衡策略,进一步提升DDM实例的性能。                  好了,今天的分享就先到这里,后面还会继续分享DDM实例创建逻辑库、逻辑表、负载均衡策略等相关经验,小伙伴们如果有什么疑问可以随时与我交流分享吗,谢谢大家!欢迎扫码查看更多精彩: