【问题标题】:How can I open a *.cer file with FileInputStream --Android如何使用 FileInputStream --Android 打开 *.cer 文件
【发布时间】:2016-12-15 14:43:30
【问题描述】:

此时我正在尝试向 Keystore 添加一些证书,因为我需要 Okthpp 接受这些证书。

所以,在开发者 android 中我看到了这个例子:https://developer.android.com/training/articles/security-ssl.html?hl=es#HttpsExample

在示例中他们这样做:

// Load CAs from an InputStream
// (could be from a resource or ByteArrayInputStream or ...)
CertificateFactory cf = CertificateFactory.getInstance("X.509");
// From https://www.washington.edu/itconnect/security/ca/load-der.crt
InputStream caInput = new BufferedInputStream(new FileInputStream("load-der.crt"));
Certificate ca;

我所做的是尝试从我添加到项目结构中的.../res/raw/xxxxx*cerfile 加载证书。

所以我的代码看起来像:

CertificateFactory cf = CertificateFactory.getInstance("X.509");
caInput1 = new BufferedInputStream(new FileInputStream(String.valueOf(ctx.getResources().openRawResourceFd(R.raw.xxxx))));

但是当我尝试它时,它不起作用:

我该如何解决? OR 是不可能的?

【问题讨论】:

    标签: android ssl certificate android-resources


    【解决方案1】:

    openRawResourceFd(R.raw.xxxx) 使用这种文件失败,有提到它:

    此功能仅适用于存储在包中的资源 * 作为未压缩的数据,通常包括诸如 mp3 文件之类的内容 * 和 png 图像。

    不过你也可以改用

    InputStream is = ctx.getResources().openRawResource(R.raw.xxxx);
    

    这个不需要用到FileInputStream,直接得到它的InputStream。

    【讨论】:

    • 它说的一样:/
    • 我更新了答案,我相信它由于 openRawResourceFd 而失败
    • 这段代码可以获取crt文件,但是放到raw文件夹下,hacker就可以获取到了,那么如何从string value文件夹中获取crt文件呢?
    猜你喜欢
    • 1970-01-01
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多