Android技术Android开发经验谈Android进阶之路

android本地搭建Https本地服务器

2016-07-24  本文已影响984人  Lazy1

在本地搭建服务器有什么用呢?

 这个我只能说我现在用着了,需要加密HLS视频,具体的应用场景可以很多。

搭建普通的一个http服务器好搞,https怎么做呢

首先我们知道https需要证书,怎么生成呢,

需要注意的地方:执行命令之后第一个问题让你输入名字的地方最好设置成域名,比如这样baidu.com或者这样localhost,反正匹配你要调式的域名就对了,当然,如果你在安卓上调试,那么本地地址可能用不了。

上面生成了服务端使用的密钥对,现在可以通过它生成证书给客户端使用

keytool -export -alias server -storepass 123456 -keystore server.jks -file server.cer

这个证书是服务端使用的我们客户端使用的kbs

  keytool -genkey -alias android -keyalg RSA -keystore android.jks

运行之后就会出来UI界面,用它打开android.jks然后选菜单 Tools –> Change Keystore Type –> BKS 在弹出框输入密码进行转换,最后别忘记选菜单 File –> Save Keystore As 将它另存为android.kbs(名字随意)

生成之后怎么做呢

 try {
            AssetManager am = getAssets();
            //InputStream ins1 = am.open("server.cer");
            InputStream ins2 = am.open("android.kbs");
            MyHttpd myHttpd = new MyHttpd();

            KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
            keyStore.load(ins2, null);

            //读取证书,注意这里的密码必须设置
            KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
            keyManagerFactory.init(keyStore, "android".toCharArray());

            myHttpd.makeSecure(NanoHTTPD.makeSSLSocketFactory(keyStore, keyManagerFactory), null);
            myHttpd.start(NanoHTTPD.SOCKET_READ_TIMEOUT, false);


        } catch (IOException e) {
            Log.e("IOException", "Couldn't start server:\n" + e.getMessage());
        } catch (NumberFormatException e) {
            Log.e("NumberFormatException", e.getMessage());
        } catch (KeyStoreException | NoSuchAlgorithmException e) {
            Log.e("HTTPSException", "HTTPS certificate error:\n " + e.getMessage());
        } catch (UnrecoverableKeyException e) {
            Log.e("UnrecoverableKeyException", "UnrecoverableKeyException" + e.getMessage());
        }   catch (CertificateException e) {
            e.printStackTrace();
        }

这样我们就可以在本地使用https访问了,注意这证书是自己生成的所以需要同意加载才行,默认认为是不安全的

上一篇 下一篇

猜你喜欢

热点阅读