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