android studio(kotlinを使用)を介して自己署名証明書を持つhttps:// localhost:5000 /にアクセスしようとすると、次のエラーが発生し続けます:java.security.cert.CertPathValidatorException:証明書パスのトラストアンカーが見つかりません。
方法2を使用してここで見つけたガイドを通じてopensslを使用して証明書を作成しました
次のようなnetwork_security_config.xmlファイルを追加してみました。
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config>
<domain includeSubdomains="true">https://10.0.2.2:5000/</domain>
<trust-anchors>
<certificates src="@raw/my_ca"/>
<certificates src="user"/>
<certificates src="system"/>
</trust-anchors>
</domain-config>
</network-security-config>
そして、resの内部にrawというフォルダーを作成し、その中にmy_ca.pemを配置しました(これを使用してcrtから変換しopenssl x509 -in server.crt -out server.pem -outform PEM
、my_ca.pemに名前を変更しました)
また、Android Studioの設定でその証明書を追加するか、信頼できないすべてのサイトを許可してみました。htmlリクエストのコードは私が見つけたのと同じくらい簡単です。
URL("https://10.0.2.2:5000/").readText()
、AsyncTaskクラス内にありますが、クラスが行うのはこのリクエストだけです
私が理解したことから、エミュレータを介してローカルマシンにアクセスする方法であり、erverコードは単純な文字列を返す非常に単純なpython-flaskコードであるため、127.0.0.1ではなく10.0.2.2にアクセスしています。
だから私はそれを理解しました、私はアンドロイドスタジオで自己署名証明書を有効にしましたが、私はそれらをコトリンで有効にしませんでした、それでエラーはアンドロイドスタジオではなくコトリンから来ました、この答えからの簡単なコピー&ペースト
私はそれから何かを理解していませんが、誰かが私にある種の外植またはそれのためのチュートリアルへの参照を送ってくれるなら、それは素晴らしいでしょう。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加