为 android volley 和 nodejs 创建证书

creating certificate for android volley and nodejs

我正在开发一个可以与多节点服务器连接的 android 应用程序。此连接需要安全,所以我需要证书。但我不能支付证书。在我的研究中,我将为每台服务器创建证书并使用我自己的根证书对其进行签名(我也需要它)。然后我会将根证书固定到我的 android 应用程序中。所以我可以从一个 android 应用程序连接多个服务器。但我不知道如何创建此证书以及如何将其固定到 android 应用程序中。

CA可以生成绑定IP的证书,但不常见。我同意在这种情况下使用自行生成的证书更为合适。你需要

1) 创建CA证书和SSL证书

摘自here 您将需要 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

在第二步中,系统会询问您各种问题(国家/地区、State/Province 等),在 'common name' 中插入您设备的 IP 或名称。匹配真实姓名很重要,因为浏览器或 android 设备会验证它

2) 配置您的 nodejs 服务器以使用 https 我对 node.js 的了解不足,无法为您提供很好的解释或 link,因此请使用官方文档。也许某些 reader 可以编辑它并提供 link

3) 将 public 密钥和证书链添加到 android 应用程序的信任库中。

中提取 here

你需要

1) 获取 CA 证书的 public 部分

2) 创建 BKS 密钥库并导入证书(只需要 root)

3) 在您的应用中使用密钥库。创建使用您的密钥库配置 de SSL 连接的自定义 Apache HTTP 客户端

详细信息在 link,即社区 wiki 中。

为了 Android 排球。 Using Android Volley With Self-Signed SSL Certificate