Android 12へWiFi証明書をインポートする方法のメモ

ども。こんばんは。

前回ハマった件の個人的なメモです。

参考:■AQUOS R5G(SHG01)の画面を割ってしまう(2022/07/25)

Android 11の2020年12月のアップデートより、802.1xを使う無線LANの設定で、CA証明書を「検証しない」設定ができなくなったようです。(メーカによって例外ありかも。Unihertz Titan Pocketは少なくとも前述のアップデーより新しいものが適用されていますが、「検証しない」が選べます。Chromebookも特にこの操作は不要です。)

以下のブログが大変詳しいので、詳細はこちらをご参照ください。

■環境

・Android
機種:AQUOS R5G(SHG01)
バージョン:Android 12

・NPS
Windows Server 2012 R2 (AD、NPS、RADIUS)

・AP
Cisco WAP150

・その他
PEAPを利用しています。

■ハマったことまとめ

AndroidにWiFiの証明書を入れるには秘密鍵も必要。(証明書だけじゃだめ。)

第1のハマりポイントは、証明書(PKCS#12な.pfx)をOneDrive経由でやり取りしたこと。(Windows Server→macOS→OneDrive→Android)

第2のハマリポイントは、自己署名なのでCA証明書もAndroidにインストールする必要があったこと。

■OneDriveに.pfxをおいてはいけない

詳細は調べてないのですが、どうもOneDriveに置くと、壊れるようです。

AndroidにOneDrive経由で証明書をインストールしようとすると、正しいパスワードを入れろと言われて、抽出できませんでした。

PKCS#12がだめなのかも?と思って、certとpemに変換しようとして、macOS(OneDriveからデスクトップのコピーして)のopensslコマンドで色々しようとしていたときのエラー。
正直どうやってもこれの原因がわからずかなり苦労しましたが、普通にOneDriveに一旦おかずに直接コピーしたらOKでした。

4307043884:error:0DFFF0A8:asn1 encoding routines:CRYPTO_internal:wrong tag:/AppleInternal/Library/BuildRoots/20d6c351-ee94-11ec-bcaf-7247572f23b4/Library/Caches/com.apple.xbs/Sources/libressl/libressl-2.8/crypto/asn1/tasn_dec.c:1144:
4307043884:error:0DFFF03A:asn1 encoding routines:CRYPTO_internal:nested asn1 error:/AppleInternal/Library/BuildRoots/20d6c351-ee94-11ec-bcaf-7247572f23b4/Library/Caches/com.apple.xbs/Sources/libressl/libressl-2.8/crypto/asn1/tasn_dec.c:317:Type=PKCS12

また、Exchange Onlineだとpfxファイルは規定ではメールに添付できないみたい。(設定変更で許可できる)
今回はGmailでAndroidに転送しました。

■AndroidへのWiFi証明書のインストール

NPSのPEAPのプロパティはこんな感じ。
※今回NPSはADと同一サーバです。

いい感じにpfxをエクスポートします。
この辺そんなに詳しくはないんですが、まぁいい感じに証明書ストアから抜きます。
※秘密鍵もセットでエクスポートする必要がある。(これがなぁ、Android意味不よなー。macOSとかはべつに秘密鍵なくてもつながるのに。)

で、これを抜いたやつをすぐにOneDriveにおいたのが良くなかった、というのが第1ハマりポイント。

で、これをインポートします。

なんだかんたんじゃん。OneDriveにさえ置かなければ!!!

だがしかし。まったくWiFiにはつながらねぇ…

正直エラーメッセージも何も出ないので、仕方なくADBログを確認(logcat)。

あ、M2のMacbook Airでも、以前のIntel版で使ってたADB(platform-tools)をファイルでコピーしたらそのままADBは使えました。(というか、iCloudでデスクトップ同期してたので勝手にデスクトップにいた。。)

すると、こんなエラーが。

08-14 00:29:59.545 1642 1663 I EthernetTracker: interfaceLinkStateChanged, iface: wlan0, up: true
08-14 00:29:59.558 3042 3042 I wpa_supplicant: wlan0: Associated with xx:xx:xx:xx:xx:xx
08-14 00:29:59.558 3042 3042 I wpa_supplicant: wlan0: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
08-14 00:29:59.558 3042 3042 I wpa_supplicant: wlan0: CTRL-EVENT-EAP-STARTED EAP authentication started
08-14 00:29:59.568 3042 3042 I wpa_supplicant: wlan0: CTRL-EVENT-EAP-PROPOSED-METHOD vendor=0 method=25
08-14 00:29:59.568 3042 3042 I wpa_supplicant: wlan0: CTRL-EVENT-EAP-METHOD EAP vendor 0 method 25 (PEAP) selected
08-14 00:29:59.582 3042 3042 I wpa_supplicant: wlan0: CTRL-EVENT-EAP-PEER-CERT depth=0 subject=” hash=xxx
08-14 00:29:59.583 3042 3042 I wpa_supplicant: wlan0: CTRL-EVENT-EAP-PEER-ALT depth=0 DNS:hoge.fuga.domain.com
08-14 00:29:59.583 3042 3042 I wpa_supplicant: wlan0: CTRL-EVENT-EAP-PEER-ALT depth=0 DNS:fuga.domain.com
08-14 00:29:59.583 3042 3042 I wpa_supplicant: wlan0: CTRL-EVENT-EAP-PEER-ALT depth=0 DNS:fuga
08-14 00:29:59.583 3042 3042 I wpa_supplicant: wlan0: CTRL-EVENT-EAP-TLS-CERT-ERROR reason=1 depth=0 subject=” err=’unable to get local issuer certificate
08-14 00:29:59.587 3042 3042 I wpa_supplicant: wlan0: CTRL-EVENT-EAP-FAILURE EAP authentication failed

うーん、CA証明書付でエクスポートしたやつをインポートしたのにー…

もうよくわからんので、ADのCA証明書(これは秘密鍵は不要)をAndroidにインストール。

CA証明書を入れた状態で改めてWiFiの接続設定を開いたところ…

なるほど。こういう感じで本当は表示されないとだめだったけど、CAが信頼されていない(オレオレ)が故に、選択肢に出てこなかったということか!(多分)

ということで無事繋がりました。

この仕様どうなんだろう…

ではでは。またの機会に。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください