【Unity】Curl error 51: Cert verify failed: UNITYTLS_X509VERIFY_FLAG_EXPIREDの正体
2020年5月4日の夜のこと。新型コロナウィルスによる外出自粛でゴールデンウィーク感のないゴールデンウィークの最中にUnityでゲーム開発していたところ、あるエラーメッセージが出力されるようになりました。
Curl error 51: Cert verify failed: UNITYTLS_X509VERIFY_FLAG_EXPIRED
今まで見たことのないエラーだったので、エラー文字列でググるとまさにUnityのフォーラムで「こんなエラー出たんだけど」「俺も俺も!」と意見が飛び交っていました。
日本時間だと金曜日の夜10時だったので日本ユーザーにとってはあまり影響のない時間でしたが、アメリカやヨーロッパならビジネスタイムだったりこれから仕事が始まるくらいの時間です。そのタイミングでUnityにエラーが出続けるというのは結構なピンチです。
まぁそんな中でも「Unityのサーバもコロナにかかったのかな! HAHAHA!」みたいなジョークを飛ばしている人もいて、トラブル時も余裕を持つ大切さを英語ユーザーに教わりました。
このエラーが発生することはそうそうないと思いますが、万が一同じようなことが起きた時に焦らないよう、ブログに書き留めておきます。
事象
突然以下のエラーメッセージがUnityエディタのコンソールに出力されるようになりました。
Curl error 51: Cert verify failed: UNITYTLS_X509VERIFY_FLAG_EXPIRED
数秒おきにこのエラーメッセージが出力されるので、エラーが発生した時にゲームを止める「Error Pause」のボタンがオンになっているとテストプレイがまともにできない状況になります。(エディタがクラッシュしたという報告もありました)
私はいつも「Error Pause」のボタンをオフにしているので影響はありませんでしたが、スクリプトを確認していてコンソールにエラーが溜まっていくのは精神衛生上よくありません。
推察
出力されたエラーメッセージからの推察です。
「Curl」のエラーであると出力されているので、Unityエディタが裏でコマンドラインでやっている何かの処理によるものと推察されます。私が自分で書いたスクリプトに起因するエラーではなさそうでした。
というのも、curl(カール)はコマンドラインツールやスクリプトとURLでデータを転送するためのライブラリです。自分で書いたスクリプトではそのような処理を記載していないことから、「多分エディタ側で何かあったんだろうなー」と考えました。
「Cert verify failed」と認証に失敗したような記述もあるので、ライセンス関係で何か起こっているものと推測されました。
調査
出力されたエラーメッセージで早速ググりました。困ったときはエラーメッセージでググるのが鉄板のトラブルシューティング方法です。
ちょうどUnityのフォーラムで同じメッセージのトピックが表示されていたので、そこを開くとドンピシャでした。
他のユーザーも同じようにこのメッセージが出力されているようだったので、ユーザー側の問題というよりは、Unityのサーバー側で何かあったようでした。
同じ時刻にUnityのWebサイトも繋がらなくなっていたので、何かあったことは間違いないと思います。
確認したフォーラムのトピックは以下のものです。
影響範囲
エラーメッセージが出力されることで、ゲーム実行中に停止する問題があります。これはコンソールで「Error Pause」のボタンがオンになっていると発生する問題です。
また、Unityのサービス関連の機能が使えなくなっていました。
私の場合は影響がありませんでしたが、フォーラムのポストを見ると、Unity Analyticsを使っていたアプリがこのエラーメッセージを吐いたという報告もあったので、もしかしたらビルド後のゲームであってもアカウントに関連した通信を行う場合は影響があったかもしれません。
Unity Adsも実は使えなかったのかな……? と思うと結構ヒヤヒヤします。今まで出したアプリでもUnity Adsを使っているので、たまたまこのタイミングでアプリを遊んでいたらエラーが出ていたかもしれません。
経過
ユーザー側でどうにかできる問題ではないので、Unityの中の人を信じて待っていました。幸い、日本時間では金曜の夜で、特に納期の近い仕事もなかったので寝て待っていましたが(笑)
次の日にフォーラムを確認すると、Unityの中の人が書き込んでいて、問題が解決されたようでした。フォーラムの書き込み時刻を見るに、大体4時間ほどで解決されたみたいですね。
新たに
Curl error 52: Empty reply from server
というエラーメッセージも出力されていましたが、元々の
Curl error 51: Cert verify failed: UNITYTLS_X509VERIFY_FLAG_EXPIRED
は出力されなくなっていました。
「Curl error 52」の方は2つだけ出力されていたので、認証系サーバ復旧の際に応答が正しく返ってこなかったものと推測されます。あとはキャッシュも残っていたでしょうから、そうした影響でしょうかね。
週が空けてからはどちらのエラーメッセージも出力されていないので、問題は解決されたと見て良いと思います。
付録
エラーメッセージが出力されている様子の画面です。何もしていないのにエラーが増えていくのは恐怖でした(笑)
まとめ
エラーメッセージの
Curl error 51: Cert verify failed: UNITYTLS_X509VERIFY_FLAG_EXPIRED
について、ユーザー側で何が起きていたのかを書き留めました。
繰り返しになりますが、このエラーが発生することはそうそうないと思います。ただ、万が一同じエラーメッセージが出力された時に焦らなくて良いようにブログとして残します。
今回の件が発生したのは日本のユーザーにとってはあまり影響が大きくない金曜日の夜でしたので、特に話題にもなっていなかったように思います。ですが日本での営業時間に発生したら焦るかもしれませんので、その時に役に立てばと思います。
とは言っても、ユーザー側でできるのは待つことだけなので、コーヒーでも飲んでいったん落ち着き、別の仕事を終わらせているのが良さそうです。
ゲーム開発の攻略チャートを作りました!
-
前の記事
【お知らせ】Unity デザイナーズ・バイブルが発売されます! 2020.05.05
-
次の記事
【Unity】floatの計算で誤差が出る理由をビット列で見てみよう【C#】 2020.05.15
コメントを書く