我正在使用不受信任证书的android的https教程。请参阅here。
他们提供了CA不受信任时的方案示例代码。我的服务器上有自签名证书的场景。所以我无法弄清楚我在其示例代码中用以下内容替换以下内容:
InputStream caInput = new BufferedInputStream(new FileInputStream("load-der.crt"));
// I can't figure out where to get my crt from ?
// I don't have access to that path directly from a URL
对于自签名证书,他们说:
You can create your own TrustManager, this time trusting
the server certificate directly.
我是否已单独获取服务器的自签名证书? API会不会以某种方式自动获取该信息?
答案 0 :(得分:1)
我是否已单独获取服务器的自签名证书?
我不知道在这种情况下“单独”是什么意思,但是为了验证,您需要包含自签名证书的密钥库。
API会不会以某种方式自动为我提供?
怎么可能?验证证书背后的一点是确认它确实是正确的,并且您的用户不是中间人攻击的受害者。要为自签名证书执行此操作,我们需要相关详细信息才能进行验证。
FWIW,如果您发现这些内容设置有点复杂,我a TrustManagerBuilder
中的my CWAC-Security library可能会有所帮助。
答案 1 :(得分:0)
如果您有服务器证书,如果该证书是自签名的,那么您应该将公钥证书添加到系统的信任存储区,否则它将不会信任并导致信任相关的异常 你应该提取证书(来自服务器证书的公钥证书),并且需要替换load-der.crt, 然后运行链接中提供的示例。
Mohankumar