OSの設定時刻を未来の日付にしてアプリ起動するとSSLのエラーがでた

1914 ワード

アプリのある動作テストをするために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証明書の役割を改めて確認する

SSL証明書の発行者は、認証局(CA)と呼ばれる第三者機関

この認証局が、申請者の情報をもとに証明書を発行している
そして、証明書をサーバに設定することで以下2つの目的を果たすことができる

① クライアントからの通信相手が本物かどうかを証明すること
② 通信データを暗号化すること

①については、
リクエスト先のサーバーが証明書を持っている = 認証局に本物であると証明された状態

②については、
暗号化通信をするための事前手続きとして、以下のことが行われる

  1. クライアントからサーバにリクエスト
  2. サーバはクライアントに証明書を返す
  3. 証明書に書かれた鍵(公開鍵)を使って、クライアントは自身で作成した共通鍵を暗号化する
  4. クライアントが暗号化した共通鍵をサーバに返す
  5. サーバは、自身で保持している秘密鍵を使って、暗号化された共通鍵を復号する

以上の手続きを経て、クライアントとサーバの両方が共通鍵を持つことになる。つまり、それぞれが共通鍵を使ってデータの暗号化/復号化を行える状態になったということである。データを送信するときは共通鍵をつかってデータを暗号化し、データを受信したときは共通鍵を使ってデータを復号化する

参考