MQTT SSL bcprov-jdk16和bcprov-jdk15on讀取證書的方法

        //===========加載 ca 證書==================================
        TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
        if( null != caCrtFile ){
            // 加載本地指定的 ca 證書
            // bcprov-jdk16 讀取證書的方法
//            PEMReader reader = new PEMReader(new InputStreamReader(new ByteArrayInputStream(Files.readAllBytes(Paths.get(caCrtFile)))));
//            BufferedReader br = new BufferedReader(new FileReader(caCrtFile));
//            X509Certificate caCert = (X509Certificate)reader.readObject();
//            reader.close();

            // bcprov-jdk15on 讀取證書的方法
            InputStream inStream = new FileInputStream(caCrtFile);
            CertificateFactory cf = CertificateFactory.getInstance("X.509");
            X509Certificate caCert = (X509Certificate)cf.generateCertificate(inStream);

            // CA certificate is used to authenticate server
            KeyStore caKs = KeyStore.getInstance(KeyStore.getDefaultType());
            caKs.load(null, null);
            caKs.setCertificateEntry("ca-certificate", caCert);
            // 把ca作爲信任的 ca 列表,來驗證服務器證書
            tmf.init(caKs);

參考:https://docs.oracle.com/javase/7/docs/api/java/security/cert/X509Certificate.html

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章