お疲れ様です!Redmine、Trac、Jenkins、Mattermost、GitBucket などなど色々サーバーを運用してますが、イントラネットだからといって SSL 接続にしてなかったんですよね。でも平文で内容が飛び交うのはどうかと思いSSL接続にすることにしました。イントラネットなのでオレオレな感じで証明書を発行管理したいと思います。
目次
準備
XCA のダウンロード
OpenSSLを使ってコマンドで管理する方が多いようですがGUIで管理できるXCAを使います。XCAは内部ではOpenSSLライブラリを使っています。
下記サイトからWindows版をダウンロードします。
X – Certificate and Key management 投稿時:2.1.1
インストール
インストールはダウンロードしたファイルをダブルクリックしてウィザードはデフォルトのまま実行するだけです。
証明書管理データベースの作成
発行した証明書を管理するデータベースを作成します。
MySQL や PostgreSQL でもいいのですが XCA データベースを使っておきます。
ちなみに接続確認したところ MySQL(5.7.14)、MariaDB(10.1.32)、PostgreSQL(9.6.2) は接続できました。
「File」メニューの「New DataBase」を実行します。
保存先、ファイル名を指定します。
データベースのパスワードを指定します。
証明書を作成する準備ができました。
ルート証明書の作成
「Certificates」タブで「New Certificates」をクリックします。
「Source」タブで「Template for the new certificate」を「[default] CA」にし「Apply all」ボタンをクリックします。
「Subject」タブを選択し、各項目を入力し「Private key」の「Generate a new key」ボタンをクリックします。
新しく秘密鍵の生成をします。
作成した秘密鍵が選択されていることを確認します。
「Extensions」タブを選択し、有効期限を指定します。更新が面倒なので50年として「Apply」ボタンをクリックします。
「OK」ボタンをクリックして証明書を作成します。
サーバー証明書用のテンプレート作成
複数の証明書を作る場合、何度も同じ入力をするのはなんなので、決まった項目を入力したテンプレートを作成します。
「Templates」タブで「New Template」をクリックします。
サーバー証明書(SSL)のテンプレートを作成します。
「Subject」タブで「commonName」以外を入力します。
「Extensions」タブで有効期限を指定します。ここではCAと同じ50年にしました。
「OK」ボタンをクリックしてテンプレートを作成します。
サーバー証明書の作成
各サーバー毎に証明書を作成します。
「Certificates」タブで先ほど作成したルート証明書を選択し、「New Certificates」をクリックします。
「Source」タブで「Template for the new certificate」を先ほど作成したテンプレートの「HTTPS_server_miyabis」にし「Apply all」ボタンをクリックします。
「Subject」タブで「Internal Name」と「commonName」を入力します。
新しく秘密鍵の生成をします。
作成した秘密鍵が選択されていることを確認し「OK」ボタンをクリックして証明書を作成します。
テンプレートで指定した有効期限がルート証明書の期限より大きいと確認画面が表示されます。
「Edit dates」で手動で編集するか「Adjust date and continue」で自動で訂正します。
「Adjust date and continue」を使います。
証明書のエクスポート
作成した証明書をそれぞれエクスポートしてサーバーとクライアントに配布します。
ルート証明書のエクスポート
サーバー証明書のルートとなるルート証明書ファイルを出力します。
「Certificates」タブで先ほど作成したルート証明書を選択し、「Export」をクリックします。
出力先を指定して「OK」ボタンをクリックします。
このファイルを各クライアントで登録してもらいます。
登録していないとエラーが発生してサイトが表示されません。
サーバー証明書と秘密鍵ファイルのエクスポート
各サービスで利用するファイルを出力します。
サーバー証明書ファイル出力
「Certificates」タブで先ほど作成したサーバー証明書を選択し、「Export」をクリックします。
出力先を指定して「OK」ボタンをクリックします。
秘密鍵ファイル出力
「Private Keys」タブで先ほど作成したサーバー証明書に指定した秘密鍵を選択し、「Export」をクリックします。
出力先を指定して「OK」ボタンをクリックします。
この二つのファイルを各サービスで指定します。
ルート証明書のインポート
先ほどエクスポートしたルート証明書ファイル(crtファイル)をクライアントPCでインポートします。
crtファイルをダブルクリックし、「全般」タブの「証明書のインストール」をクリックします。
保存場所はローカルコンピューターを選択し、「次へ」をクリックします。
「証明書をすべて次のストアに配置する」を選択し、「参照」をクリックして「信頼されたルート証明機関」を指定し「次へ」をクリックします。
「完了」をクリックしてインポート完了です。