ども。こんばんは。
前回ハマった件の個人的なメモです。
参考:■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が信頼されていない(オレオレ)が故に、選択肢に出てこなかったということか!(多分)
ということで無事繋がりました。
この仕様どうなんだろう…
ではでは。またの機会に。