『入る学科間違えた高専生』の日記

プログラミングのコードを書いたりする予定です。あとは日記等。あといつまで高専生やねん

サーバ証明書の内容を確認できる iOS アプリをリリースした

はじめに

みなさんはサーバ証明書使っているでしょうか?
使ってない人はこのサイトを見ることはないでしょう。

iOS アプリでサーバ証明書を見る方法が無いような気がするので作りました。

CertsCheck

CertsCheck

  • Yuya Oka
  • 開発ツール
  • 無料

アプリの紹介

できるだけシンプルな作りにしました。
サーバ証明書を確認したサイトのホスト名を入力、もしくは URL のペーストをします。
ナビバーの虫眼鏡ボタンをタップすることでサーバ証明書を取得し、完了したら遷移されます。
階層ごとに項目が表示され、タップすると証明書ごとの情報が表示されます。

現状パース処理に対応しているものが少ないですが、他の項目にも対応できればと思ってます。

また、入力するのは面倒だし、ブラウザからすぐに確認したいので数タップで確認ができるようにしたいです。

ShareExtension を実装しました。 Safari 等 URL を共有できるアプリから共有シートを表示し CertsCheck を見つけてください。
タップするとアプリが開き、ホスト名が入力された状態になります。あとは同じように虫眼鏡ボタンをタップすることで同様に確認をすることができます。
本当は Safari Extensions とかでできたら面白いんだろうなと思ったんですが Web がわからなくて一旦諦めました。

モチベーション

以前は、 Google Chromeサーバ証明書の内容を確認できていましたが、現在はできなくなっています。なぜでしょうか...

Google Chrome - ウェブブラウザ

Google Chrome - ウェブブラウザ

  • Google LLC
  • ユーティリティ
  • 無料

ちょっと前に以下のような話が話題になったので

security.srad.jp

ソースコード

github.com

例のごとく、ソースコードオープンソースになっています。
Star ください!

5日で作ったので手荒な部分があるかと思いますがよろしくお願いいたします(なにに)

大変だったこと

Apple の Security フレームワークiOS で提供している API が少なすぎて取得したい情報が取得できないなどで OpenSSL を使うことになりました。
macOS では SecCertificateCopyValues(_:_:_:) *1 という関数が用意されており、基本的な情報はこれから取得することができるようです。

最後に

今現在、 App Store の 6.5 インチ 5.5 インチのデバイスの表示ではスクリーンショットの順番が反転してしまっていて「なんでこうなったんや...」とちょっと悔しい思いをしているのですが次回のアップデートではちゃんと確認します。
今後は iPad 対応もします。使ってくれる人がいるか知らんけど。

個人的に DER ファイルは単体で SecTrustCreateWithCertificates(_:_:_:) *2 に渡してもだめで階層すべてを取得しないと SecTrust は生成されないということを発見できて面白かったです。*3