簡體   English   中英

如何使Android上的NanoHTTPD接受具有專用客戶端證書的客戶端連接

[英]How to make NanoHTTPD on Android accept connection from client with dedicated client certificate

我使用NanoHTTPD在Android設備上制作了Web服務。 但是它將信任所有證書並接受來自所有客戶端的SSL連接。 我只想限制來自特定客戶端的訪問。

更新:我嘗試像這樣工作:

        String KEYSTOREPASS = "test";
        char[]ctpass = KEYSTOREPASS.toCharArray();
        KeyStore ks = KeyStore.getInstance("PKCS12");

        //Directly load cert from Resources
        //ks.load(ctx.getResources().openRawResource(R.raw.cayan_cert),kspass);

        //Or dynamically generate a cert and use it
        ipAddressInCN = MainApplication.getIPAddress();

        //Use the current IP Address to generate a cert that signed by hard coded CA, and add to keystore
        String CN = "CN=" + ipAddressInCN;
        ks.load(null, null);
        GenerateCSR.AddCertToKeyStore(ks, ctpass, CN);

        KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
        kmf.init(ks, ctpass);

        SSLContext sc = SSLContext.getInstance("TLS");

        TrustManager[] tm = new TrustManager[]{new X509TrustManager() {

            public java.security.cert.X509Certificate[] getAcceptedIssuers() {

                return new java.security.cert.X509Certificate[0];
            }

            public void checkClientTrusted(java.security.cert.X509Certificate[] certs,
                                           String authType) {
                System.out.println("abc");
                return;
            }

            public void checkServerTrusted(java.security.cert.X509Certificate[] certs,
                                           String authType) {

                return;
            }

        }};

        sc.init(kmf.getKeyManagers(), tm, null);
        server.makeSecure(sc.getServerSocketFactory(), null);

我嘗試為我的自定義信任管理器功能設置斷點,但從未調用過它們。

但是它將信任所有證書並接受來自所有客戶端的SSL連接。

不對。 除非您安裝了一些令人討厭的信任所有證書的垃圾,否則它將只接受帶有受信任證書的客戶端的SSL連接,在這種情況下,您應該刪除它們。

我只想限制來自特定客戶端的訪問。

您應該通過授權來實現,您必須在NanoHTTPD中實現自己。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM