Android应用本地测试的https问题

问题描述 投票:0回答:1

我正在尝试在本地测试我的 Android 应用程序。 该应用程序必须从 192.168.1.16 获取数据。
本地服务器证书是一个自签名证书,所以我做了我在 stackoverflow 和其他网站上找到的东西(特别感谢 https://stackoverflow.com/a/71542188/3872061):
。将证书存储在 res/raw/larragon_certif 中
。创建了一个 res/xml/network_security_config.xml 指向 @raw/larragon_certif
。在manifest.xml中的节点应用程序上添加了属性 android:networkSecurityConfig="@xml/network_security_config"

现在所有以前的错误和异常都更改为以下内容:

javax.net.ssl.SSLPeerUnverifiedException: Hostname 192.168.1.16 not verified:
    certificate: sha1/Gr8h0ea/mhIMIADb7CMK47K8Moo=
    DN: CN=laragon,OU=IT,O=Laragon,L=Singapore,ST=Singapore,C=SG
    subjectAltNames: [localhost, ..., ..., ..., 192.168.1.16]

因此,应用程序似乎正确找到了自签名证书,并且不再拒绝它,但它不认为 192.168.1.16 被该证书覆盖。

android https localhost self-signed
1个回答
0
投票

经过几个小时的搜索,我终于在问了几分钟后让它开始工作......
仍然发布答案而不是删除我的问题,因为我可能不是唯一遇到此问题的人。

  1. 这里的所有步骤都是一个好的开始,这是我问题的一半以上答案:https://stackoverflow.com/a/71542188/3872061

  2. 我需要将我的本地IP添加到证书覆盖的服务器:
    只需在

    IP.1=192.168.1.16
    subjectAltName
     部分添加一个新的 
    openssl.conf

    条目
  3. 然后作为

    key usage
    相关异常的答案,我将stackoverflow证书的关键用法与我的自签名证书的关键用法进行了比较,发现我的证书既没有
    digitalSignature
    也没有
    clientAuth
    。我添加了两者,现在尝试从应用程序内访问本地服务器时不再出现异常。

旁注:本地服务器是 Laragon 驱动的。对于使用它的人来说,一些精度:
Laragon 将自己的自签名证书放入 etc/ssl 中。为了更改证书设置,我必须:
。当然修改etc/ssl/openssl.conf
。将此文件设置为只读,以防止 Laragon 在创建证书时覆盖它
。然后从 Laragon 面板中禁用并重新启用 https。这将触发新的自签名证书创建。

© www.soinside.com 2019 - 2024. All rights reserved.