OpenSSL(Fedora Core1)
created 2005-01-07 modified 2010-12-03
自宅サーバに対し、外からSSLで接続する(httpsを利用する)ための設定作業メモ。
用語「サーバ」「クライアント」はホスト(コンピュータ本体)を指す場合と、そのホスト上で動作するプログラムを指す場合がありますが、混同して使うため文脈に応じ解釈願います。
この文書中で作成されるファイルは下記です。
ファイル名 | パス | 備考 |
---|---|---|
server.key | /etc/httpd/conf/ssl.key/ | ホストの秘密鍵 |
server.csr | /etc/httpd/conf/ssl.csr/ | 証明書の発行を依頼するためのもの |
server.crt | /etc/httpd/conf/ssl.crt/ | 証明書 |
server.der | /var/www/html/ | 証明書(クライアントへのインストール用) |
ssl.FC1:0.警告
ssl.FC1:1.OpenSSLインストール
ssl.FC1:2.登場する役者とファイルを理解する
ssl.FC1:3.サーバでの作業
ssl.FC1:4.クライアントでの作業
ssl.FC1:A.その他メモ
ssl.FC1:Z.再び警告
0.警告
警告!ここに書いてあるのは「オレオレ証明書」の発行手順です。私がオレオレ証明書を自分で使う目的は、特定のプロクシ(おそらく野良プログラム)のいやらしい挙動を回避することであって、本来の目的とは異なります。セキュリティ目的でオレオレ証明書のインストールを他人に薦めちゃだめですよ。
リンク | 備考 |
---|---|
オレオレ証明書をググる |
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を使用 |
クライアントホストにインストールするもの
ファイル | 備考 |
---|---|
証明書ファイル (DER形式) | Windows機にインストールするため、サイトサーバの証明書をPEM形式からDERに変換したもの。拡張子.derを使用 |
3.サーバでの作業
FedoraCore1用のopensslパッケージに入ってたMakefileを利用した。
下準備:rootになって、
利便性を優先してパスフレーズを取り除いた。
なお他のWebページを見ると、CSRファイル作成を先にやっているところが多いみたい。
と入力した。
ここで入力するホスト名についてメモ:
ホスト名は、クライアントソフト側で指定するサーバホスト名を入力するようだ。
サイトによっては、www.ドメイン名 と mail.ドメイン名 が実は同じホストであったりすると思う。あるいは内側では別でも外からは同じホストに見えるとか。
ひとつのサーバ機にいくつも鍵ファイルと証明書ファイルがあると管理が面倒、という場合、メールサーバでも同じ鍵ファイルを流用することもできるのだけど、その場合メールクライアントソフトで mail.ドメイン名 と指定するとホスト名が違うよ、と警告されてしまう。もちろん www.ドメイン名 と指定すれば回避できるけど、カッコ悪い。
mail.ドメイン名 と指定するためには鍵ファイル&証明書ファイルは別にするしかなさそうだ...。
2008/8/31: ワイルドカード *.flat7th.org にすると1個でいけます
下準備:rootになって、
mkdir ~/sslwork cd ~/sslwork ln -s /usr/share/ssl/certs/Makefile .
(1)秘密鍵ファイルを作成
make server.key(実際に実行されるコマンドは下記)
umask 77; /usr/bin/openssl genrsa -des3 1024 > server.keyパスフレーズを聞かれるので入力。
(2)秘密鍵ファイルのパスフレーズを取り除く
パスフレーズがあると安全性は高いが、Apacheの起動時にパスフレーズを聞かれる。利便性を優先してパスフレーズを取り除いた。
openssl rsa -in server.key -out server.key(旧)パスフレーズを聞かれるので入力。これでパスフレーズが空になった。
なお他のWebページを見ると、CSRファイル作成を先にやっているところが多いみたい。
(3)サイトサーバ証明書の発行を依頼するCSRファイルを作成
make server.csr(実際に実行されるコマンドは下記)
umask 77; /usr/bin/openssl req -new -key server.key -out server.csrいろいろ聞かれるが
欄 | 入力内容 | 備考 |
---|---|---|
国 | JP | |
州or県 | Kanagawa | |
都市 | Kawasaki | |
会社名 | flat7th | 会社じゃないけどまぁよし |
課 | admin | |
ホスト名 | www.flat7th.org | クライアントが指定するサーバホスト名 |
管理者メールアドレス | root@flat7th.org | |
チャレンジパスワード | (空リターン) | |
オプション会社名 | (空リターン) |
ここで入力するホスト名についてメモ:
ホスト名は、クライアントソフト側で指定するサーバホスト名を入力するようだ。
サイトによっては、www.ドメイン名 と mail.ドメイン名 が実は同じホストであったりすると思う。あるいは内側では別でも外からは同じホストに見えるとか。
ひとつのサーバ機にいくつも鍵ファイルと証明書ファイルがあると管理が面倒、という場合、メールサーバでも同じ鍵ファイルを流用することもできるのだけど、その場合メールクライアントソフトで mail.ドメイン名 と指定するとホスト名が違うよ、と警告されてしまう。もちろん www.ドメイン名 と指定すれば回避できるけど、カッコ悪い。
mail.ドメイン名 と指定するためには鍵ファイル&証明書ファイルは別にするしかなさそうだ...。
2008/8/31: ワイルドカード *.flat7th.org にすると1個でいけます
(4)サイトサーバ証明書を作成
make server.crt(実際に実行されるコマンドは下記)
umask 77; /usr/bin/openssl req -new -key server.key -x509 -days 365 -out server.crtCSR作成時と同じ内容を入力する。
(5)クライアントにインストールするためDER形式の証明書を作成
openssl x509 -inform pem -in server.crt -outform der -out server.der
(6)各ファイルを配置
cp server.key /etc/httpd/conf/ssl.key/ cp server.csr /etc/httpd/conf/ssl.csr/ cp server.crt /etc/httpd/conf/ssl.crt/ cp server.der /var/www/html/
4.クライアントでの作業
httpsでアクセスするときにダイアログが出ないようにする方法。
(オレオレ証明書のインストール手順であり、とんでもなく危険です)
(オレオレ証明書のインストール手順であり、とんでもなく危険です)
- server.der をフロッピー等で移動し、右クリック-[証明書のインストール]。
- 証明書のインポートウィザード 画面が出るので [次へ]をクリック。
- "証明書をすべて次のストアに配置する" を選択し、
- 証明書ストアとして 信頼されたルート証明機関 を指定。[次へ]をクリック。
- [完了]をクリック。
- 警告が出る。よく読んでOKする。
- "正しくインポートされました" と出るので [OK]をクリック。
A.その他メモ
大変参考にさせていただいたページのメモ。
リンク | 備考 |
---|---|
OpenSSLのインストールとキーペアの生成 | |
はじめての自宅サーバー構築 - 通信内容暗号化(OpenSSL & mod_SSL) ~ Webページ編~ - |
ファイル形式について
リンク | 備考 |
---|---|
PEM形式のCSRのサポート終了について | CSRのPEM形式とPKCS#10形式について記述されている。今回の作業で普通にCSRを作ったらPKCS#10形式ファイルになっていた。 |
証明書のファイル形式について | DERはバイナリエンコーディングであって中身はいろいろ、ということがワカリマスタ |
デジタル証明書の形式 |
その他
リンク | 備考 |
---|---|
CA(Certificate Authority) | @itのセキュリティ用語事典 |
素因数分解と暗号の話 | 素数を使った暗号のわかりやすい説明 |
こんな銀行は嫌だ | 実運用でオレオレやると高木浩光氏やスラド住民に名指しされて信用ガタオチ、(以下略 |
Z.再び警告
警告!ここに書いてあるのは「オレオレ証明書」の発行手順です。私がオレオレ証明書を自分で使う目的は、特定のプロクシ(おそらく野良プログラム)のいやらしい挙動を回避することであって、本来の目的とは異なります。オレオレ証明書のインストールを他人に薦めちゃだめですよ。
リンク | 備考 |
---|---|
オレオレ証明書をググる |