自己署名のサーバー証明書とクライアント証明書を作成および設定をしました。
設定した理由は、特定のパソコンからしかWebシステムを利用できないようにしたいという要望があったためです。
証明書作成前のスキル
以前、JavaAppletにコードサイニング証明書を使った署名をしたことはあります。このときも手順がわからず苦労した記憶があります。
自己署名のサーバー証明書とクライアント証明書を作成するのは今回が初めてです。
初めてのため、本当に想定していたどおりの動作をするのかと半信半疑でした。
最初に参考にしたサイト
最初に参考にしたのはこちらの手順です。やむを得ない場合の自己証明書と自己認証局によるSSLサイト構築 - dosandbox
CentOS 7.4、Apache 2.4の環境では、書かれていることが合わない部分がありました。
不安になってたので、最後まで設定作業を行わず、設定作業前の状態を復元しました。
2番目に参考にしたサイト
2番目に参考にしたのはこちらの手順です。www.qoosky.io
「認証局 (CA) を構築」から順番に設定作業をしましたが、途中認証局を構築しない場合も書かれていて、わかりにくいと感じました。
クライアント証明書の作成中に
Certificate is to be certified until Oct 14 08:51:10 2027 GMT (3650 days)
Sign the certificate? [y/n]:y
failed to update database
TXT_DB error number 2
Signed certificate is in newcert.pem
とメッセージが表示され、0バイトのファイルが作成されました。
この時点ではメッセージが表示された理由がわかりませんでした。
一旦作成した証明書を失効すればエラーは回避されるらしいということは検索してわかりましたが、必要分しか証明書は作成していません。
失効しては目的の動作をさせることができないので、また設定作業前の状態を復元しました。
photo credit: Nguyen Vu Hung (vuhung) CentOS 7 64bit 07 via photopin (license)
3番目に参考にしたサイト
プライベート認証局の証明書、サーバー証明書、クライアント証明書の作成方法について | レンタルサーバー・自宅サーバー設定・構築のヒントこちらの記事はディストリビューション毎の違いも書かれているので、ディストリビューション違いによる読み替えがなくて安心感があります。
コマンドの実行結果も書かれているので、作業結果と比較できるのもありがたいです。
2番目に実施した手順と同じく、クライアント証明書の作成中に同じメッセージが表示されました。
表示されて、なぜ同じメッセージが表示されるのかと改めて考えました。
考えた結果、与えるコマンドラインからの値を変えなければいけないところを、同じ値にしていたためと気づきました。
パラメータを変えて、改めてクライアント証明書の作成をしたところ、作成できました。
3番目に参考にした記事を参考にして、サーバー証明書/クライアント証明書を作成できました。
Windowsのパソコンにクライアント証明書を設定して、目的の動作をすることも確認できました。
コマンドラインからの値で10年有効にする指定が書かれていますが、作成した結果は1年になりました。
10年にするためには、CAスクリプトを編集する際に、年数の定義をコメントアウトではなく、3650日への変更が必要でした。
最初から3番目のサイトを参考にしえ作業していれば一番早く終わっていたのかもしれません。
他のサイトも読んだおかげで、知識をつけることはできるました。