OSの設定時刻を未来の日付にしてアプリ起動するとSSLのエラーがでた
アプリのある動作テストをするためにOSの時刻を未来に設定した上で、アプリを起動すると以下のエラーが出た。未来の時刻にするだけで、なぜエラーになるのか分からなかったため、調べてわかったことを残しておく。
エラーの内容
- SSLエラーが発生し、サーバーへの安全な接続ができない
Error Domain=NSURLErrorDomain Code=-1200
An SSL error has occurred and a secure connection to the server cannot be made
原因
SSL証明書には有効期限があり、OSを有効期限外の時刻に設定したことでエラーになっているようだった。SSL証明書の有効期限をブラウザで調べてみると、確かにOSで設定した時刻が有効期限外だった。
SSL証明書の役割を改めて確認する
SSL証明書の発行者は、認証局(CA)と呼ばれる第三者機関
この認証局が、申請者の情報をもとに証明書を発行している
そして、証明書をサーバに設定することで以下2つの目的を果たすことができる
① クライアントからの通信相手が本物かどうかを証明すること
② 通信データを暗号化すること
①については、
リクエスト先のサーバーが証明書を持っている = 認証局に本物であると証明された状態
②については、
暗号化通信をするための事前手続きとして、以下のことが行われる
- クライアントからサーバにリクエスト
- サーバはクライアントに証明書を返す
- 証明書に書かれた鍵(公開鍵)を使って、クライアントは自身で作成した共通鍵を暗号化する
- クライアントが暗号化した共通鍵をサーバに返す
- サーバは、自身で保持している秘密鍵を使って、暗号化された共通鍵を復号する
以上の手続きを経て、クライアントとサーバの両方が共通鍵を持つことになる。つまり、それぞれが共通鍵を使ってデータの暗号化/復号化を行える状態になったということである。データを送信するときは共通鍵をつかってデータを暗号化し、データを受信したときは共通鍵を使ってデータを復号化する
参考
Author And Source
この問題について(OSの設定時刻を未来の日付にしてアプリ起動するとSSLのエラーがでた), 我々は、より多くの情報をここで見つけました https://zenn.dev/murakamiiii/articles/ssl-error-and-certificate著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol