XAMPPでSSL + バーチャルホストによる開発環境を構築するために、まずOpenSSLによる自己署名証明書を作成する。
環境は以下の通り。
OS :Windows 8 (x64)
XAMPP 1.8.1 (Installation Directory: C:\xampp)
Win64 OpenSSL v1.0.1e
1.OpenSSL をダウンロードする
OpenSSLは公式サイトでソースが公開されている。インストールするにはソースをコンパイルしてバイナリを作成する必要があるが、
下記のサイトからコンパイル済みWindows用のOpenSSLバイナリが配布されているので、こちらを利用する。
2.OpenSSLをインストール
ダウンロードしたファイルをダブルクリック。インストーラーの指示に従って、インストールを完了させる。
途中、インストール先フォルダを聞いてくるので、任意の場所を指定(インストール先パスを入力)する。設定を変えなかった場合、デフォルトでは「C:\OpenSSL」になっている。
3.環境変数を設定
環境変数を設定し、パスを通しておく。
システム >システムの詳細設定 >環境変数 >システムの環境変数の「Path」を選択し、編集ボタンをクリック。
「変数値」の末尾を、「; (セミコロン)」で区切り、以下を追記して、OKをクリックして閉じる。
「;C:\OpenSSL\bin」
続けて「システム環境変数」の「新規」ボタンをクリックし、
「変数名」に「OPENSSL_CONF」、「変数値」に「C:\OpenSSL\bin\openssl.cfg」と入力して、OKをクリックする。
元の環境変数の画面に戻ったらOKをクリックして、システムのプロパティもOKをクリック。システムを閉じ、Windowsを再起動する。
※ openssl.cfg : コンフィグ・ファイル。
openssl.cfg の改行コードがLFだった場合、「KanjiTranslator (文字・改行コード変換ツール)」でCR+LFに変換するとよい。
※ 環境変数の設定でパスが通っているので、どの場所でもopensslコマンドが使える。作業フォルダを作成する場合、任意の場所でOK。
4.サーバ用秘密鍵(server.key)の作成
コマンドプロンプトを起動し、カレントディレクトリを変更する。今回特に作業フォルダは作成しないので、OpenSSlフォルダ内のbinに移動。
cd C:\OpenSSL\bin
まず、秘密鍵作成のための擬似乱数を生成。
openssl md5 * > rand.dat
次に、作成された乱数ファイル(rand.dat)を使用して、秘密鍵を作成。
秘密鍵ファイル名は「ドメイン名 .key」などにしておくと覚えやすい。
openssl genrsa -rand rand.dat -des3 -out example.com.key(秘密鍵ファイル名) 2048
このコマンドの後に「Enter pass phrase」と2回パスフレーズを入力するよう求められる。 ここで入力したパスフレーズは、署名要求書(server.csr)の作成やサーバの起動時に必要になるので、忘れないように管理すること。
任意のパスフレーズを入力し、[Enter]キーを押す。同じパスフレーズを2度入力する。
Enter pass phrase for example.com.key: ******** ←パスフレーズを入力。(実際に入力されているが、画面上では何も表示されない)
Verifying – Enter pass phrase for example.com.key: ******** ←もう一度同じパスフレーズを入力。(実際に入力されているが、画面上では何も表示されない)
5.認証局への署名要求書(server.csr)の作成
秘密鍵から署名要求書(server.csr)を作成する。
秘密鍵ファイル名は「ドメイン名 .key」、CSRファイル名は「ドメイン名 .csr」
openssl req -new -key example.com.key(秘密鍵ファイル名) -out example.com.csr(CSRファイル名)
この後に「Enter pass phrase」とパスフレーズを入力するよう求められる。
Enter pass phrase for example.com.key: ******** ←パスフレーズを入力。(実際に入力されているが、画面上では何も表示されない)
次に、署名要求書(server.csr)に指定する情報を入力する。
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Tokyo
Locality Name (eg, city) []:Minato-ku
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Example INC.
Organizational Unit Name (eg, section) []:Planning Section
Common Name (eg, YOUR name) []:example.com
Email Address []: ←入力せずにEnterを押す
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []: ←入力せずにEnterを押す
An optional company name []: ←入力せずにEnterを押す
※ なおワイルドカードを指定する場合には、「Common Name」で「*.example.com」を入力する。
6.署名要求書(server.csr)に秘密鍵(server.key)を使用して署名し、サーバー証明書(server.crt)を発行
openssl x509 -req -days 3650 -sha1 -in example.com.csr(CSRファイル名) -signkey example.com.key(秘密鍵ファイル名) -out example.com.crt(CRTファイル名)
この後に「Enter pass phrase」とパスフレーズを入力するよう求められる。
Enter pass phrase for example.com.key: ******** ←パスフレーズを入力。(実際に入力されているが、画面上では何も表示されない)
7.秘密鍵(server.key)からパスフレーズを削除
秘密鍵(server.key)からパスフレーズを削除しておかないと、apacheの再起動のたびにパスフレーズの入力を要求されるので、パスフレーズを削除。
openssl rsa -in example.com.key(秘密鍵ファイル名) -out example.com.key(秘密鍵ファイル名)
この後に「Enter pass phrase」とパスフレーズを入力するよう求められる。
Enter pass phrase for example.com.key: ******** ←パスフレーズを入力。(実際に入力されているが、画面上では何も表示されない)
ここで作成した秘密鍵(server.key)は 「C:\xampp\apache\conf\ssl.key」に、
署名要求書(server.csr)は 「C:\xampp\apache\conf\ssl.csr」に、
サーバー証明書(server.crt)は 「C:\xampp\apache\conf\ssl.crt」にコピーしておく。
オリジナルはバックアップ用に別フォルダに保管しておくこと。
8.クライアントに証明書をインポート
バーチャルホストの設定をする前に、先にサーバー証明書(server.crt)をクライアントのブラウザにインポートしておく。
● FireFox
ツール >インターネットオプション >詳細 >証明書タブ >証明書を表示 >
証明書マネージャ >サーバ証明書 >インポート >サーバー証明書(server.crt)を選択 >インポート
>サーバー証明書タブ >「証明書名と発行者名」項目からインポートしたサーバー証明書(server.crt)を選択 >
「信頼性を設定」ボタンをクリック >サーバー証明書に対する信頼性の設定 >
「この証明書が本物であると信用する」ラジオボタンを選択 >OKボタンをクリック >
証明書マネージャ、オプション画面のOKボタンをクリックして閉じる。
その他ブラウザにインポートする場合は、下記のサイトに詳細が掲載されているので参考に↓
◆参考サイト
参考になりました。
6.署名要求書(server.csr)に秘密鍵(server.key)を使用して署名し、サーバー証明書(server.crt)を発行
のコマンド内の出力ファイルの拡張子がCSRになっています。
CRTですよね?
ご指摘ありがとうございます。
コードを修正致しました。