1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

UnityWebRequestはちゃんとSSL証明書エラーを吐いてくれるか

Last updated at Posted at 2021-06-10

ふと、「中間者攻撃なりBCGハイジャックなり、なんらかの理由で意図したところにアクセス出来てなかった場合、unityちゃん(正確にはUnityWebRequest)はちゃんとエラー吐いてくれるか」が猛烈に気になったため確認した。
なお、特別に証明書のインストール等はしておらず、Windows10環境です。

とりあえず結論

当該記事での検証手順であれば、ちゃんとエラーになった。

手順(簡易)

適当なドメインを取る

当該記事では example.dev で説明します。勿論、こんな買ったら高そうなドメインは自分は持ち合わせておりません。

サブドメ2つ振る

test1.example.dev
test2.example.dev
とします。

nginxサーバを2台立ててlet's encryptでSSL対応

手順は割愛します。ぐぐればすぐ出てくるのでそんなに難しくないです。

立てたサーバにさっきとったサブドメでAレコード設定

ここまでやったらブラウザで
https://test1.example.dev
https://test2.example.dev
アクセスして正常を確認します。

俺(私)たち入れ替わってるー

入れ替える必要まではないんですが
test1.example.devの向き先IPをtest2サーバのIPに書き換えます。
反映されたあたりでブラウザアクセスして
NET::ERR_CERT_COMMON_NAME_INVALID
あたりが出ることを確認します。

unity

HTTPメソッドは何でも良いので UnityWebRequest 使って SendWebRequest します。
Curl error 51: Cert verify failed: UNITYTLS_X509VERIFY_FLAG_CN_MISMATCH
こんなエラーが出ます。
isNetworkErrorのほうがtrue返すようになりますが、中身吐いてもUnknown Errorです。

結論(2回目)

ちゃんとエラーになる。

余談

なんとなく勘付く方もいるかと思いますが、基本的にOSにインストールされている証明書を使うようです。
軽く調べた限りだと、Win/Mac/iOSあたりだとOSにインストールしさえすれば自己署名でもいけるらしいのですが、
androidはアカンようで、その場合検証用の実装を自前で書く必要があるようです。
もしSSL関係でブラウザではいけるのにunityでは証明書の検証エラーが出るような場合この辺りを踏んでるかもしれませんね。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?