OpenSSL

[Windows] OpenSSLによる自己署名証明書の作成

OpenSSL

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バイナリが配布されているので、こちらを利用する。

ダウンロードはコチラから↓
Shining Light Productions

 

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ボタンをクリックして閉じる。

 

その他ブラウザにインポートする場合は、下記のサイトに詳細が掲載されているので参考に↓

 

◆参考サイト

 

「[Windows] OpenSSLによる自己署名証明書の作成」への3件のフィードバック

  1. 参考になりました。
    6.署名要求書(server.csr)に秘密鍵(server.key)を使用して署名し、サーバー証明書(server.crt)を発行
    のコマンド内の出力ファイルの拡張子がCSRになっています。

    CRTですよね?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>