LoginSignup
6
13

More than 5 years have passed since last update.

XCAでローカルCAを立てて、ハッピーSSLライフ

Posted at

開発サーバでソフトを動かすときにサーバ証明書が必要になるときってありますよね。
今話題のHTTP/2を試すにはSSL通信が必須だったりしますし。

もちろんOSやソフトについてくるサンプル用の証明書でもSSL通信はできるけど、証明書が検証エラーになるわけでブラウザの警告画面が鬱陶しいし、検証エラーを無視するための設定変更をする必要がある場合もあります。
かといって、わざわざ開発サーバのためにSSL証明書は買えないし…。

そんなときの救世主がLet's Encryptで、無料で正規のSSL証明書を発行してくれるありがたい存在です。
しかし、Let's EncryptでSSL証明書発行するためにはドメインがDNS登録されている必要がありますので、社内(組織、自宅)内の内部で使ってる"abc.localdomain"みたいなドメインには対応してません。

結局、自前でLocal CAを運営する必要があるわけですが、opensslでやろうとすると結構大変です。
それを簡単に行うためのGUIツールとしてXCAがありますので、使ってみました。

インストール

Sourceforgeから各OSごとのバイナリがダウンロードできます。
brewなら一発でインストールできます。

$ brew cask install xca

管理用データベースの作成

File → New Database で管理用データベースを作成してください。
これが無いと証明書が作成できません。

次回以降、起動時にこの管理用データベースをopenします。

CA自己署名証明書

最初にCA自己署名証明書を発行する必要があります。
Certificate の "New Certificate" ボタンをクリックして、ダイアログボックスを出します。
スクリーンショット 2017-01-16 10.46.56.png

SubjectにはCAの名前などを入力して、右下の"Generate New Key"ボタンをクリックして、秘密鍵を生成します。
スクリーンショット 2017-01-16 10.49.41.png

スクリーンショット 2017-01-16 10.49.41.png

スクリーンショット 2017-01-16 10.49.06.png

次に Extension の 上の方のTypeに"Certificate Authority"を選択して、Timer Rangeで証明書の有効期限を設定してください。
デフォルトの1年だと短いので、10年くらいにしておくと良いと想います。

スクリーンショット 2017-01-16 10.50.20.png

これで右下の"OK"ボタンを押すと、証明書が発行されます。
CAの欄にチェックマークが付いていることを確認してください。
これでCAの自己署名証明書が作成できました。

スクリーンショット 2017-01-16 10.50.33.png

この証明書をExportボタンからエクスポートして、OSの証明書ストアに登録してください。
(そうしないと、証明書の検証でエラーになります)

サーバ証明書

あとは、このCAから各ドメインのサーバ証明書を発行します。
基本的な手順は同じです。

"New Certificate" ボタンをクリックして、ダイアログボックスを出します。
Signingは先程作成したCAを指定して、Templateには"HTTP_servers"を選択します。

スクリーンショット 2017-01-16 11.08.06.png

Subjectには証明書のDNを設定します。
サーバ証明書なのでcommonNameにドメイン名を指定します。
同じように秘密鍵を生成してください。

スクリーンショット 2017-01-16 13.34.01.png

Extensions の Type には "End Entity"を選択して、Timer Rangeで証明書の有効期限を設定してください。
(CAの証明書の有効期限を超える日付は設定できません。)

スクリーンショット 2017-01-16 13.34.26.png

これでサーバ証明書が生成されます。
スクリーンショット 2017-01-16 11.12.44.png

証明書のエクスポート

生成されたサーバ証明書はCertificatesの該当行を選択して、Exportボタンからエクスポートできます。
右クリック → Export メニューからだと、クリップボードにコピーすることもできるので、いちいちファイルを扱うのが面倒な場合に便利です。

秘密鍵をエクスポートしたい場合は、"Private Kyes"タブからエクスポートできます。

スクリーンショット 2017-01-16 13.43.00.png

CRLは一番右のRevocation listsから右クリック → Newで発行できます。
生成されたCRLは"Export"ボタンでエクスポートできますので、webサーバかLDAPなど配置してください。
(その場合は、証明書生成時にCRL Destribution Pointの指定が必要になります。)

スクリーンショット 2017-01-16 13.43.26.png

今回は最低限必要な項目だけを入力しましたが、様々な属性が指定できますので、
そこそこ本格的なLocal CAが運用できるかと思います。

それではハッピーSSLライフを。

6
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
13