使用NanoHttpd在Android设备创建https/wss服务端
NanoHttpd提供创建轻量级Http服务端,具体介绍文档见项目的地址:https://github.com/NanoHttpd/nanohttpd
如何创建服务端https/wss,在这里不做介绍,详细见文章下面提供的Demo。
生成kbs证书
证书分官方颁发的证书和自签名的证书,如果使用自签名证书,在用浏览器访问时会提示网站不收信任或者直接不可访问,需要将网址加入到受信任的网站才可以访问。
由于android只支持kbs证书,所以需要将证书转换格式,这里推荐使用portecle。当然也可以使用openssl+keytool工具进行转换,这里不做介绍。进入portecle下载地址,下载完成后,右键打开即可。导入待转换的证书,选择转换为KBS-V1后保存。
NanoHttpd中加入证书
在Android项目路径下新建raw文件夹,将转换好的kbs文件复制粘贴到raw目录下。
InputStream keystoreStream = MainApplication.getContext().getResources().openRawResource(id);
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(keystoreStream, password.toCharArray());
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
keyManagerFactory.init(keyStore, password.toCharArray());
mNanoHttpService.makeSecure(NanoHTTPD.makeSSLSocketFactory(keyStore, keyManagerFactory), null);