目次

OpenSSLで自己認証証明書(おれおれCA)を作成

一般に、公的な証明書発行機関の証明書にはそれなりにお金がかかるわけで、個人で、個人向けにサービスをするなら自己認証証明書で済ましておくのがお金がかからなくて幸せ。

というわけで、自己認証証明書とおれおれCAの作成メモ。

参考URL

注意

準備をする

動作環境はNetBSDとする。opensslを使うので、恐らく他のPlatformでも動くとは思うけど。

NetBSD 5.1 RC1には、defaultでOpenSSLがInstallされている。

今回のCAの構造

今回はRoot CAと、その下にSubsidiary CA(中間認証局)を構築することを目標とし、個人認証用やServer認証用の証明書はすべてSubsidiary CAから発行するものとする。

Root CAは下位のCAに署名することのみ行う

Subsidiary CAは、下位のHostや個人用の証明書に署名することのみ行う。

;#; ;#;

Root CAの作成

Subsidiary CAの作成

サーバー証明書の作成

ここまででRootCA/SubsidiaryCAの作成は出来たので、あとは、各種証明書を作成するだけ。

=== 秘密鍵の作成 ===
# openssl genrsa -des3 -out mailservkey.pem 2048				←とりあえず Mail Serverの証明書を作ってみる
# openssl rsa -in mailservkey.pem -out mailservnopasskey.pem			←サーバーの起動時にpassphrase入力を要求されても対応は難しいから外しておく
=== CSR作成 ===
# openssl req -new -days 365 -key mailservkey.pem -out mailservcsr.pem		←passphrase付きの鍵を使うこと
Country Name (2 letter code)[AU]: JP						←国コード(まぁ、日本だし、JPだよね)
State or Province Name (full name)[Some-State]: Tokyo				←都道府県、州等を入力
Locality Name (eg, city)[]: Suginami-Ku						←市区町村を入力
Organization Name(eg, company)[example.net]: example.net			←会社名などを入力
Organization Unit Name (eg, section)[]:						←部署など
Common Name (eg, your name or your server's hostname)[]:mail.example.net	←サーバー名や個人名などをFQDNで入力
Email Address []:postmaster@example.net						←連絡先を入力

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:							←特に入力しなくても良い
An optional company name []:							←特に入力しなくても良い
=== 署名 ===
Subsidiary CAにloginして、署名処理を行う

注意:重要

いわゆるhttps(HTTP+SSL)を、virtual hostingで利用したい場合、それぞれの仮想ドメイン毎にSSL証明書を発行して、ssl通信をしたくなる。

ということになる。

理由

SSL通信はLayer 4で行われる。これは、要するにTCP層で処理されると言うことである。(だからport番号が違う。httpは80番ポート、httpsは443番ポート)

HTTPはTCP層の上位Layerのプロトコルであり、TCP通信が成立していることが前提となる。

従って、通信は以下の順序で行われる

このような流れである以上、named virtual hostの処理をhttpdが行う前にSSLがEstablishしていなければならない。

個人証明書の作成

証明書のPassPhraseをはずす

LighttpdやDovecot等、Server Applicationで証明書を利用する場合、証明書のpassphraseを外しておきたいことがある。

Dovecotはconfigファイルにpasswordを書けるようだが、記載できないServer Applicationが多いので、しょうがないからPassPhraseをはずす方法を。

# openssl rsa -in server.key -out server.key

注意点

証明書の運用上注意すべき点を挙げる。

  1. 今回作ったCAはあくまでも「おれおれCA」である。従って、公的な証明には全くならないので注意すること
  2. 各証明書が失効すると再度証明書を発行する必要がある。
  3. 暗号アルゴリズムは危殆化するので、あまり長期間の証明書を作成すると更新が大変。
  4. これらの面倒を負えないなら、コストをかけて証明書を購入するべき。

無料の証明書発行サイト