🐵
Android Emulator/iOS simulatorからhttpsなローカル環境に接続する
ローカル開発環境の https 化 にインスパイアされました
iOS simulatorは、本物のドメイン(私の場合はlocalhost.tomiyan.net
)を利用し127.0.0.1
をAレコードとしてDNSに登録し、DNS認証で証明書を取得すれば問題ない
Android Emulatorを乗り越える
Android Emulatorのネットワークは127.0.0.1
だとエミュレートしたデバイスのループバック インターフェース
にアクセスしてしまうのでこのままではうまくいかない
ホスト ループバック インターフェースへの特殊エイリアス(開発マシンの 127.0.0.1 など)
のIPアドレスは 10.0.2.2
なのである
- DNSに
localhost.tomiyan.net
のAレコードとして10.0.2.2
を登録する - Let`s EncryptなどでDNS認証で証明書を取得する
- ホストのhosts ファイルに
127.0.0.1 localhost.tomiyan.net
を追記する- Android EmulatorはホストのDNS設定を参照するが、hostsは参照しない
これでAndroid EmulatorでもiOS simulatorでもアクセスすることが可能になる
元記事のhostsをいじらない趣旨に沿って環境をつくる
先程の方法は元記事に反する方法だったので別の方法(未検証)
- DNSに
localhost.tomiyan.net
のAレコードとして127.0.0.1
を登録する - Let`s EncryptなどでDNS認証で証明書を取得する
- ホストにDNSサーバを立て、
localhost.tomiyan.net
のAレコードとして10.0.2.2
を登録する - Android Emulator起動時に
-dns-server <serverList>
オプションをつけて起動する
Let`s EncryptのDNS検証、ワイルドカード証明書のメモ
certbot certonly \
--manual \
-d localhost.example.com \
-d "*.localhost.example.com" \
--preferred-challenges dns-01 \
-m example@example.com \
--config-dir ~/example/ssl/config \
--work-dir ~/example/ssl/work \
--logs-dir ~/example/ssl/logs \
--manual-public-ip-logging-ok
Discussion