Android 如何为通过具有多个SAN的本地主机提供服务的测试站点正确配置自签名证书?

Android 如何为通过具有多个SAN的本地主机提供服务的测试站点正确配置自签名证书?,android,ssl,openssl,certificate,Android,Ssl,Openssl,Certificate,我有一个小的测试网站,我正试图通过https服务于webview上的Android模拟器。我一直在我的机器上生成自签名证书,并将它们导入到模拟器的证书存储中,但当我在webview上加载页面时,我不断收到无效的公共名称错误 因为Android仿真器存在于虚拟防火墙后面,所以它们无法访问开发机器所访问的相同网络接口。我不能只是从模拟器加载localhost,然后将其转到127.0.0.1环回地址。相反,它在emulator上的别名为10.0.2.2 当我创建自签名证书时,在配置文件中(按照问题的指

我有一个小的测试网站,我正试图通过https服务于webview上的Android模拟器。我一直在我的机器上生成自签名证书,并将它们导入到模拟器的证书存储中,但当我在webview上加载页面时,我不断收到无效的公共名称错误

因为Android仿真器存在于虚拟防火墙后面,所以它们无法访问开发机器所访问的相同网络接口。我不能只是从模拟器加载localhost,然后将其转到127.0.0.1环回地址。相反,它在emulator上的别名为10.0.2.2

当我创建自签名证书时,在配置文件中(按照问题的指示),我将域设置为localhost,并将10.0.2.2设置为SAN,但我仍然无法从模拟器正确加载网站的https版本。我可能做错了什么

我的部分cnf文件(主要取自问题的顶部答案):


我最终解决这个问题的方法有点老套。我在我公司的公共DNS中添加了一个新的子域,并将其反向代理为127.0.0.1,并用新域替换了证书中的CN

例如新域名-abc.xyz-corp.com。当我的模拟器尝试访问该域时,它将转到公司的dns,并被发送到127.0.0.1,并解析到托管在那里的webapp

...

[ subject ]
...
commonName              = localhost
emailAddress            = me@home.com

...

[ req_ext ]
subjectKeyIdentifier        = hash
basicConstraints        = CA:FALSE
keyUsage            = digitalSignature, keyEncipherment
subjectAltName          = @alternate_names
nsComment           = "OpenSSL Generated Certificate"

[ alternate_names ]
DNS.1       = 127.0.0.1
DNS.2       = 10.0.2.2