連載
» 2016年01月29日 17時50分 UPDATE

Tech TIPS:WindowsにOpenSSLをインストールして証明書を取り扱う(基本編)

電子証明書やSSL/TLSのための標準的なツールキット「OpenSSL」。Windowsで利用する方法は?

[島田広道,デジタルアドバンテージ]
Tech TIPS
Windows Server Insider


「Tech TIPS」のインデックス

連載目次

対象ソフトウェア:OpenSSL



解説

 SSL/TLS対応のWebサイトを構築したり、セキュアな通信路を必要とするアプリケーションをセットアップしたりする場合、電子証明書(以下、単に「証明書」)を取り扱う機会がよくある。

 対象プラットフォーム/アプリケーションがUNIX/Linux系の場合、証明書に関する作業手順は「OpenSSL」を用いた方法で記述されていることが非常に多い。OpenSSLとはSSL/TLSのツールキットおよび暗号化ライブラリのデファクトスタンダードで、UNIX/Linux系で多用されている。

 Windowsにも証明書を取り扱うためのコマンドや役割・機能は備わっている。だが、OpenSSLとは使い方が全く異なるため、OpenSSL向けの作業手順書しかない状況では役に立たない。

 そんな場合は、Windows用のOpenSSLをセットアップし、WindowsでもOpenSSLを使えるようにするとよい。本稿では、Windows上でopenssl.exeコマンドを実行して証明書を操作できるようにするという前提で、そのインストール手順や注意点を説明する。

操作方法

 WindowsでOpenSSLを使う方法は幾つかある。本稿では、なるべく手軽にセットアップできるように、Windows用にコンパイルされたバイナリを入手して使う方法を紹介する。

●Windows用のOpenSSLのインストーラをダウンロードする

 OpenSSL公式サイトでは、OpenSSLのソースファイルのみが配布されている。そこからWindows用にコンパイルするのは(開発者でない限り)ハードルが高いので、コンパイル済みのインストーラを配布している次のサイトを利用する。

Windows用のOpenSSLをダウンロードする Windows用のOpenSSLをダウンロードする
これは、コンパイル済みのWindows用OpenSSLバイナリを配布しているShining Light ProductionsのWebページ。下にスクロールすると見つかる「Download Win32 OpenSSL」以下に、バージョンの新しい順にOpenSSLのインストーラパッケージが並んでいる(各バージョンについては後述)。
  (1)「Win32 OpenSSL v<バージョン番号> Light」は、エンドユーザー向けに最低限のツールのみ同梱した軽量版インストーラ(32bit Windows対応)。Windowsクライアントでopensslコマンドを利用するだけなら、これをダウンロードすればよい。
  (2)「Win32 OpenSSL v<バージョン番号>」は、軽量版の内容に開発者向けのライブラリやインクルードファイル、テスト用ツールを加えたインストーラ(32bit Windows対応)。
  (3)これらは64bit Windows対応のインストーラ。WOW64が組み込まれていないWindowsシステムでは32bit版バイナリを実行できないので、こちらをインストールする必要がある*1

*1 ミドルウェアやサーバアプリケーションに要求されてOpenSSLをインストールする場合、通常、それらが32bit版ならOpenSSLも32bit版を、64bit版ならOpenSSLも64bit版をインストールする必要がある。


 これで「Win32OpenSSL_Light-1_0_2f.exe」といったファイル名のインストーラがダウンロードされるはずだ。

●WindowsにOpenSSLをインストールする

 Windows用OpenSSLのインストーラをダウンロードしたら、それを起動し、以下の手順でインストールを進める。

OpenSSLをWindowsにインストールする(その1) OpenSSLをWindowsにインストールする(その1)
これは32bit版OpenSSL 1.0.2fの軽量版インストーラ(Win32OpenSSL_Light-1_0_2f.exe)を起動したところ。デジタル署名がなされていないため、このような警告メッセージが表示される。
  (1)[はい]ボタンをクリックして次へ進む。「セキュリティの警告」というメッセージが表示された場合は、[実行]ボタンをクリックして次へ進む。
OpenSSLをWindowsにインストールする(その2) OpenSSLをWindowsにインストールする(その2)
これはインストールウィザードの2番目に表示されるライセンス許諾の画面。
  (2)許諾内容を読んでから[I accept the agreement]を選んで次へ進む。この後、インストール先フォルダやスタートメニューフォルダの設定画面が表示されるので、適宜設定すること。
OpenSSLをWindowsにインストールする(その3) OpenSSLをWindowsにインストールする(その4)
これはインストールウィザードの5番目に表示される、DLLファイルの保存場所を選ぶ画面。
  (3)デフォルトでは[The Windows system directory]が選択されている。だが、サードパーティー製ソフトウェアのDLLをみだりにWindowsのシステムフォルダに格納することは推奨されていない。そこで[The OpenSSL binaries (/bin) directory]を選んで、次へ進む(後述のPathの設定が必須になる)。
OpenSSLをWindowsにインストールする(その4) OpenSSLをWindowsにインストールする(その4)
これはインストールウィザードの最後の画面。
  (4)寄付を後回しにする場合は、このチェックを外してオフにしてから、[Finish]ボタンをクリックする。

 以上でOpenSSLのインストールは完了だ。

●opensslコマンドにパスを通す

 このままでは、いちいちopenssl.exeやDLLの在りかをフルパスで指定しなければならず、面倒なので、以下の手順で実行パスの設定を変更する。

opensslコマンドにパスを通す(その1) opensslコマンドにパスを通す(その1)
まずコントロールパネルから[システム]を呼び出す。
  (1)[システムの詳細設定]をクリックする。
opensslコマンドにパスを通す(その2) opensslコマンドにパスを通す(その2)
「システムのプロパティ」ダイアログが表示されたところ。
  (2)[詳細設定]タブを選ぶ。
  (3)[環境変数]ボタンをクリックする。
opensslコマンドにパスを通す(その3) opensslコマンドにパスを通す(その3)
「環境変数」ダイアログが表示されたところ。
  (4)システム環境変数の「Path」を選択する。
  (5)[編集]ボタンをクリックすると、「システム変数の編集」ダイアログが表示される。
  (6)「変数値」の末尾にセミコロン(「;」)を付けた後で、OpenSSLをインストールしたパスにあるbinフォルダを加える。デフォルトでは「;<システムドライブ名>\OpenSSL-Win<32または64>\bin」を末尾に追加することになる。あとは[OK]ボタンをクリックしていって画面を閉じていけば、設定は完了だ。

 Path環境変数の設定が完了したら、コマンドプロンプトを起動し直してから、次のようにopensslコマンドを実行してみよう。このとき、カレントフォルダはインストール先のbinフォルダ以外にすること。

C:\>openssl version ……C:ドライブのルートでopenssl.exeコマンドを起動
OpenSSL 1.0.2f 28 Jan 2016 ……パスが通っていれば、OpenSSLのバージョンが返される



●opensslコマンドの基本的な使い方

 opensslコマンドの基本的な書式は次の通りだ。

openssl <標準コマンド> <オプションパラメーター>



 この<標準コマンド>だけでも44個以上あり、付随するオプションも多数存在する。詳細は別稿で解説するとして、以下では、証明書に関わる基本的な書式の例を挙げるだけに止めておく。

■証明書の要求を作成する

 以下のコマンドラインを実行すると、「www.example.jp」という共通名(Common Name)の証明書要求が生成され、「www_example_jp.csr」というファイルに保存される。同時にその秘密鍵も「www_example_jp.key」に保存される。

C:\>openssl req -new -newkey rsa:2048 -nodes -out www_example_jp.csr -keyout www_example_jp.key -subj "/C=JP/ST=Tokyo/L=Suginami/O=Example Corp./DC=example/DC=jp/CN=www.example.jp"
Generating a 2048 bit RSA private key
.........+++
........................................................................+++
writing new private key to 'www_example_jp.key'
-----



■証明書の形式を変換する

 以下のコマンドラインを実行すると、PKCS12形式の証明書ファイル「example.pfx」からPEM形式の証明書ファイル「example.pem」が変換・生成される。example.pemには、暗号化されていない秘密鍵とルート証明書、中間証明書、サーバ証明書など一式が含まれる。

C:\>openssl pkcs12 -in example.pfx -nodes -out example.pem
Enter Import Password: ……pfxファイルに掛けられたパスワードを入力する
MAC verified OK



●オプションのデフォルト値は「bin\openssl.cfg」に記載されている

 opensslコマンドを実行する際、明示的に指定しなかったオプションのデフォルト値は、OpenSSLをインストールしたフォルダのbinサブフォルダにある「openssl.cfg」という設定ファイルに記載されている。これを修正すれば、デフォルト値を変更できる。

 ただ、デフォルトのopenssl.cfgは改行コードが(Windows標準の)CRLFではなくLFになっているため、メモ帳では正しく編集できない。秀丸エディタなど、LFの改行コードに対応したテキストエディタで編集する必要がある。

●OpenSSLの脆弱性に要注意!

 OpenSSLではしばしば脆弱性が発覚し、更新版がリリースされることがよくある。

 上記の手順でWindows OSにインストールしたOpenSSLについても、脆弱性が解消された更新版がリリースされたら、速やかに更新すべきだ。

 それには、単に更新版のインストーラを実行してインストールすればよい。自動的に旧版を上書きする形でアップグレードが行われる。ただし、カスタマイズしたopenssl.cfgも上書きされてしまうので、必要なら事前にバックアップしておき、アップグレード後、カスタマイズした個所を新たなopenssl.cfgに書き戻す。

●どのバージョンのOpenSSLを選べばよいのか?

 OpenSSLは現在、Ver.0.9.8〜1.1.0というように複数のバージョンが配布されている。

  • Ver.0.9.8: 2015年末に全てのサポートが終了
  • Ver.1.0.0: 2015年末に全てのサポートが終了
  • Ver.1.0.1: 2016年末に全サポート終了の予定
  • Ver.1.0.2: Long Term Support(LTS)版。2019年末までサポートされる
  • Ver.1.1.0: αテスト中(執筆時点)

 これから新たに利用するなら、Ver.1.0.2の最新版をインストールすべきだ。Ver.0.9.8やVer.1.0.0を利用中なら、なるべく早くVer.1.0.2に移行した方がよいだろう。

 インストール済みのOpenSSLのバージョンは、前述のように「openssl version」と実行すれば表示される。

「Tech TIPS」のインデックス

Tech TIPS

Copyright© 1999-2017 Digital Advantage Corp. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

Focus

- PR -

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。