为android volley和nodejs创建证书

时间:2016-05-28 17:19:52

标签: android node.js ssl certificate pinning

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

1 个答案:

答案 0 :(得分:1)

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

在第二步中,您将被问到各种问题(国家,州/省等),在“通用名称”中插入设备的IP或名称。匹配真实姓名很重要,因为浏览器或Android设备将对其进行验证

2)配置您的nodejs服务器以使用https 我没有足够的node.js知识来为您提供一个很好的解释或链接,所以使用官方文档。也许有些读者可以编辑这个并提供链接

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

中提取here

你需要

1)获取CA证书的公开部分

2)创建BKS密钥库并导入证书(仅需要根目录)

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

详细信息位于社区维基中的链接中。

对于Android排球。 Using Android Volley With Self-Signed SSL Certificate