証明書作成サイトCertCraft.netを公開しました

CertCraft.netというテスト用x509証明書(いわゆるSSL証明書)と認証局(Certificate Authority)をオンラインで作成するツールを公開しました。

f:id:causeless:20150524174442p:plain

なにこれ?

これはTLS Transport Layer Security (旧称SSL)で使われる証明書、いわゆるオレオレ証明書・オレオレ認証局と呼ばれる、自己署名証明書認証局のモックを作るウェブアプリです。

  • 証明書失効のテストをしたいけど買うのは高いし時間がかかる
  • 設定ファイルの記述がきちんと動作するか確かめたい
  • 鍵管理が面倒ですべて同じ鍵で動作テストしてしまう

そんなかたにお勧めします。

ソフト開発

TLS接続を扱うアプリケーション開発やそのテストを書いている時に、妥当なサーバー・クライアント証明書や、失効された証明書が必要なことは多いと思います。

自己署名証明書を作るのは比較的簡単ですが、実際に利用されている証明書と同じ機能を試そうとすると厄介になります。

例えば、モダンブラウザが受け入れるサーバー証明書の要件を満たすには、最低限次のものを用意する必要があります。

  • 妥当な制約を持つルートCA証明書
  • 妥当な制約を持つサーバー証明書
  • 機能するOCSPレスポンダ(署名サーバー)

また失効をテストする際にはOCSPの応答を変更する必要があり、証明書失効リストCRLの生成も必要です。

certcraft.netではCA証明書を作成すると同時に秘密鍵、CRLとOCSPレスポンダが作成され、 OCSPチェックが必須に設定されているブラウザにも通用する証明書が作成できます。

設定・運用テストや例示用

実際にSSL証明書を購入する前に、設定例を試したりするためにも有効な証明書は必要です。

生成されるCAでは何時でも証明書を失効させる事が出来るため、万一の漏洩時に失効させる手順の確認や、CRLやOCSPからの失効情報がクライアントに正しく反映されるかどうか動作テストしておくこともできます。

実際に動く設定例を書く際など、使い捨ての証明書の作成にも便利かもしれません。

PKIセキュリティの学習用

certcraft.netではほとんどの証明書を作成することができます。これはある意味で非常に危険なことに思われるかもしれませんが、実際に悪用することは出来ません。

たとえばcertcraft.netでは誰でもhttps://www.google.com用に署名されたサーバー証明書を作成する事ができます。しかし、生成した証明書を利用するには、作成元になったルートCA証明書を信頼済み証明書としてブラウザに追加する必要があります。 新しくつくったルートCA証明書は誰も信頼していないため、certcraft.netで作ったサーバー証明書は基本的に無害です。

TLSが依存している公開鍵基盤は、信頼済みルート証明書のうち、一番安全な認証局ではなく、もっとも安全でない認証局によって安全性が制限される(ドベネックの樽という事実を理解するためにも、セキュアでないルートCAがどういったものか試してみていただければと思います

注意

certcraft.netはあくまでテスト用の証明書を作成するサービスです。

生成した証明書は実際にセキュアな通信を確立するために使うことは出来ません。生成された証明書や秘密鍵安全性はまったくありません。保証されていません、ではなくありません秘密鍵は(CAの機能を実現するため)サーバ側に保管されています。

無償で第三者に対して通用するSSL証明書が必要なかたは、let's encryptなどを参照してください。 無償でセキュアな認証局を構築したい方は、opensslなどのツールをよく検証した上でお使いください。

さいごに

TLSをバックエンドとして使っていながら、証明書検証が正しく実装されておらずセキュアでないソフトウェアを排除するためにも、一人でも多くの人に実際に証明書と認証局を触ってみて欲しい。そんな考えで書いてみたアプリです。

Ruby on Railsの学習も兼ねているため見かけはかなり大雑把ですが、一通り機能するCAを簡単に作成出来ます。 証明書検証エラーを起こしてみたことが無い方はぜひ試してみてください。

不具合・ご意見・ご要望は twitterかメールへお寄せください。