一般に、公的な証明書発行機関の証明書にはそれなりにお金がかかるわけで、個人で、個人向けにサービスをするなら自己認証証明書で済ましておくのがお金がかからなくて幸せ。
というわけで、自己認証証明書とおれおれCAの作成メモ。
参考URL
動作環境はNetBSDとする。opensslを使うので、恐らく他のPlatformでも動くとは思うけど。
NetBSD 5.1 RC1には、defaultでOpenSSLがInstallされている。
今回はRoot CAと、その下にSubsidiary CA(中間認証局)を構築することを目標とし、個人認証用やServer認証用の証明書はすべてSubsidiary CAから発行するものとする。
Root CAは下位のCAに署名することのみ行う
Subsidiary CAは、下位のHostや個人用の証明書に署名することのみ行う。
ここまでで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していなければならない。
LighttpdやDovecot等、Server Applicationで証明書を利用する場合、証明書のpassphraseを外しておきたいことがある。
Dovecotはconfigファイルにpasswordを書けるようだが、記載できないServer Applicationが多いので、しょうがないからPassPhraseをはずす方法を。
# openssl rsa -in server.key -out server.key
証明書の運用上注意すべき点を挙げる。
無料の証明書発行サイト