我正在开发一个可以与多个节点服务器连接的 android 应用程序。此连接需要安全,因此我需要证书。但我不能支付证书。作为我的研究,我将为每台服务器创建证书并使用我自己的根证书对其进行签名(我也需要它)。然后我将根证书固定到我的 android 应用程序中。所以我可以从一个安卓应用程序连接多个服务器。但我不知道如何创建此证书以及如何将其固定到 android 应用程序中。
问问题
407 次
1 回答
1
CA 可以生成绑定到 IP 的证书,但这并不常见。我同意在这种情况下使用自生成证书更合适。你需要
1)创建CA证书和SSL证书
从这里提取您将需要 openssl
创建 CA 证书
openssl genrsa -out rootCA.key 2048
openssl genrsa -des3 -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem
这将启动一个交互式脚本,它将询问您各种信息。你会得到rootCA.pem
为每台设备创建一个证书
openssl genrsa -out device.key 2048
openssl req -new -key device.key -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 500 -sha256
在第二步中,您将被问到各种问题(国家、州/省等),在“通用名称”中插入您设备的 IP 或名称。匹配真实姓名很重要,因为浏览器或安卓设备会验证它
2)配置你的nodejs服务器使用https 我对node.js的了解不够,给你一个很好的解释或链接,所以使用官方文档。也许一些读者可以编辑这个并提供一个链接
3)将证书的公钥和链添加到android应用程序的信任库中。
摘自这里_
你会需要
1) 获取您的 CA 证书的公共部分
2) 创建 BKS 密钥库并导入证书(只需要 root)
3)在您的应用程序中使用密钥库。创建一个自定义 Apache HTTP 客户端,它使用您的密钥库来配置 de SSL 连接
详细信息在链接中,即在社区 wiki 中。
对于 Android Volley。使用带有自签名 SSL 证书的 Android Volley
于 2016-06-21T21:01:34.773 回答