flat7th

+ OpenSSL

created 2005-01-07 modified 2010-12-03 

自宅サーバに対し、外からSSLで接続する(httpsを利用する)ための設定作業メモ。

用語「サーバ」「クライアント」はホスト(コンピュータ本体)を指す場合と、そのホスト上で動作するプログラムを指す場合がありますが、混同して使うため文脈に応じ解釈願います。

この文書中で作成されるファイルは下記です。

ファイル名パス備考
server.key/root/ssl/server.keyホストの秘密鍵
server.csr/root/ssl/server.csr証明書の発行を依頼するためのもの
server.crt/root/ssl/server.crt証明書

ssl:0.警告
ssl:1.OpenSSLインストール
ssl:2.登場する役者とファイルを理解する
ssl:3.サーバでの作業
ssl:4.クライアントでの作業
ssl:A.その他メモ
ssl:Z.再び警告

0.警告

警告!ここに書いてあるのは「オレオレ証明書」の発行手順です。私がオレオレ証明書を自分で使う目的は、特定のプロクシ(おそらく野良プログラム)のいやらしい挙動を回避することであって、本来の目的とは異なります。セキュリティ目的でオレオレ証明書のインストールを他人に薦めちゃだめですよ。
リンク備考
オレオレ証明書をググるGoogle

1.OpenSSLインストール

yum install openssl

2.登場する役者とファイルを理解する

役者(=ホスト=コンピュータ機)備考
サイトサーバSSL通信上のサービス(https)を提供したいサイトのサーバホスト
認証局(CA)の作業ホストパブリックCAはベリサインなど。今回は自分がプライベートCAになって認証する(=オレオレ認証する)ので、サイトサーバ機と同一
クライアントhttpsを利用したいホスト(WindowsXP機)

サイトサーバホスト上にあるべきもの、作るもの

ファイル備考
秘密鍵ファイルそのホストのIDを示すためのもの。PEM形式ファイル。ここでは拡張子.keyを使用
CSRファイルCAに対し証明書の発行を依頼するためのもの。PKCS#10形式ファイル。ここでは拡張子.csrを使用

CAの作業ホスト上にあるべきもの、作るもの

ファイル備考
秘密鍵ファイルそのホストのIDを示すためのもの
証明書ファイル (PEM形式)CAはCSRを受けて、そのサイトサーバを証明する証明書ファイルを発行する。ここでは拡張子.crtを使用
今回はサイトサーバホスト=プライベートCA作業ホストなので、特にCA用秘密鍵ファイルは分けない。

クライアントホストにインストールするもの

ファイル備考
証明書ファイル (DER形式)Windows機にインストールするため、サイトサーバの証明書をPEM形式からDERに変換したもの。拡張子.derを使用

3.サーバでの作業

Fedora14 用の openssl パッケージに入ってた Makefile を利用した。
下準備:root になって、
mkdir ~/ssl
cd ~/ssl
ln -s /etc/pki/tls/certs/Makefile .

(1)秘密鍵ファイルを作成

make server.key
(実際に実行されるコマンドは下記)
umask 77 ;/usr/bin/openssl genrsa -aes128 2048 > server.key
パスフレーズを聞かれるので入力。

(2)秘密鍵ファイルのパスフレーズを取り除く

パスフレーズがあると安全性は高いが、Apacheの起動時にパスフレーズを聞かれる。
利便性を優先してパスフレーズを取り除いた。
openssl rsa -in server.key -out server.key
(旧)パスフレーズを聞かれるので入力。これでパスフレーズが空になった。

(3)サイトサーバ証明書の発行を依頼するCSRファイルを作成

make server.csr
(実際に実行されるコマンドは下記)
umask 77 ;/usr/bin/openssl req -utf8 -new -key server.key -out server.csr
いろいろ聞かれるが
入力内容備考
JP
州or県Kanagawa
都市Yokohama
会社名flat7th会社じゃないけどまぁよし
admin
ホスト名*.flat7th.orgクライアントが指定するサーバホスト名
管理者メールアドレスroot@flat7th.org
チャレンジパスワード(空リターン)
オプション会社名(空リターン)
と入力した。

ここで入力するホスト名についてメモ:
ホスト名は、クライアントソフト側で指定するサーバホスト名を入力するようだ。
サイトによっては、www.ドメイン名 と mail.ドメイン名 が実は同じホストであったりすると思う。あるいは内側では別でも外からは同じホストに見えるとか。
ひとつのサーバ機にいくつも鍵ファイルと証明書ファイルがあると管理が面倒、という場合、メールサーバでも同じ鍵ファイルを流用することもできるのだけど、その場合メールクライアントソフトで mail.ドメイン名 と指定するとホスト名が違うよ、と警告されてしまう。もちろんメールソフトで www.ドメイン名 と指定すれば回避できるけど、カッコ悪い。
mail.ドメイン名 と指定するためには鍵ファイル&証明書ファイルは別にする...か、
証明書のホスト名をワイルドカード *.flat7th.org にすると、www.ドメイン名 も mail.ドメイン名 も1個でいけます。

(4)サイトサーバ証明書を作成

make server.crt
(実際に実行されるコマンドは下記)
umask 77 ;/usr/bin/openssl req -utf8 -new -key server.key -x509 -days 365 -out server.crt -set_serial 0
CSR作成時と同じ内容を入力する。

(5)各デーモンの設定ファイルで指定

(略)
httpd, postfix, dovecot それぞれで上記ファイルを参照するよう設定する。
apache用には mod_ssl のインストールが必要。
yum install -y mod_ssl

4.クライアントでの作業

httpsでアクセスするときにダイアログが出ないようにする方法。
(略)
(フィンガープリントの内容が正しいことを目で確認する)

A.その他メモ

大変参考にさせていただいたページのメモ。

リンク備考
OpenSSLのインストールとキーペアの生成
はじめての自宅サーバー構築 - 通信内容暗号化(OpenSSL & mod_SSL) ~ Webページ編~ -

ファイル形式について

リンク備考
PEM形式のCSRのサポート終了についてCSRのPEM形式PKCS#10形式について記述されている。今回の作業で普通にCSRを作ったらPKCS#10形式ファイルになっていた。
証明書のファイル形式についてDERはバイナリエンコーディングであって中身はいろいろ、ということがワカリマスタ
デジタル証明書の形式

その他

リンク備考
CA(Certificate Authority)@itのセキュリティ用語事典
素因数分解と暗号の話素数を使った暗号のわかりやすい説明
こんな銀行は嫌だ実運用でオレオレやると高木浩光氏やスラド住民に名指しされて信用ガタオチ、(以下略

Z.再び警告

警告!ここに書いてあるのは「オレオレ証明書」の発行手順です。私がオレオレ証明書を自分で使う目的は、特定のプロクシ(おそらく野良プログラム)のいやらしい挙動を回避することであって、本来の目的とは異なります。オレオレ証明書のインストールを他人に薦めちゃだめですよ。
リンク備考
オレオレ証明書をググるGoogle