ALTUS(アルタス)コラム【実証】WebサーバーにSSLを使った暗号化通信を導入しよう2012/10/5【実証】WebサーバーにSSLを使った暗号化通信を導入しよう次期クラウドサービスβ版とは?GMOクラウド株式会社の芦田です。これまでWebサイトやメールサーバーの構築方法などを解説してきましたが、いずれの場合も暗号化されたセキュアな通信手段については触れませんでした。実際にWebサービスを展開する上では暗号化への対応は避けては通れません。そこで今回は、OpenSSLとApacheを使ってhttpsプロトコルによる暗号化通信ができるようにしてみます。導入Apacheで暗号化通信を行うためには、OpenSSLとmod_sslモジュールを組み合わせて使います。仮想サーバー作成時にLAMPPテンプレートを使用している場合には、すでにOpenSSLとmod_sslモジュールはインストールされた状態になっていると思います。OpenSSLがインストールされていない(「/usr/bin/openssl」コマンドがない)場合は、yumを使って次のようにインストールできます。mod_sslモジュールがインストールされていない(「/etc/httpd/modules/mod_ssl.so」ファイルがない)場合には、yumを使って次のようにインストールできます。作成Apacheで暗号化通信を行うためには、認証局から発行してもらったサーバー証明書を発行してもらう必要があります。Request)と呼ばれる申請用ファイルを用意しなければなりません。サーバー証明書とは別にサーバー用秘密鍵が必要です。CentOSでは、スクリプトによってCSRとサーバー用秘密鍵のファイルを同時に作成することができます。スクリプトは/etc/pki/tls/miscディレクトリにあります。-newreq」というコマンドを実行し、必要事項を入力してください。newkey.pemパスフレーズはApacheの起動時などに毎回要求されます。発行される証明書はここで入力したホスト名で利用する場合のみ有効なので、間違えないようにしましょう。このコマンドで、次の2つのファイルが生成されます。/private/ディレクトリ)に配置しておきます。管理する必要があります。CERTIFICATE—–」までの部分です。認証局への申請時にはこの部分に記載された内容が必要になります。PublicにはSSLサーバー証明書を発行するオプションも用意されています。認証局による審査が通過すればサーバー証明書が発行されます。CERTIFICATE—–」の部分です。この部分をコピーしてファイルに保存します。今回では、「/usr/local/conf/ssl/cert.pem」というファイルに保存しました。ひとつ、認証局のルート証明書または中間証明書も必要です。これは申請を行った認証局で公開されているはずなので、それを取得してください。CERTIFICATE—–」に囲まれた文字の羅列になっているので、これをコピーしてファイルに保存します。/local/conf/ssl/inca.pem」というファイルに保存しました。ファイアウォールの設定サーバー証明書などの必要ファイル一式が用意できたら、Apacheの設定ファイルを編集します。/conf.d/ssl.conf」に記述します。このファイルのうち、下記の箇所を編集し、必要な情報を記入してください。ServerNameは認証局で認証を受けたサーバー名でなければいけません。#<ー認証局のルート証明書または中間証明書httpsによる通信はデフォルトで443番ポートを使用するので、仮想サーバーのファイアウォールの設定でこのポートに対するアクセスを許可しておく必要があります。以上の設定が完了したらhttpdを再起動します。SSLを適用すると、httpdの起動時にパスフレーズを問われるようになります。ここでサーバー用秘密鍵の作成時に指定したパスフレーズを入力します。]httpdが起動したら、Webブラウザからアクセスしてみましょう。「https://kumolabo-test.example.org/」のようにhttpsからはじまるURLでのアクセスができるようになっているはずです。サーバー証明書は、ひとつ取得してしまえばApacheだけでなくSMTPサーバーやPOP/IMAPサーバーなど、他のアプリケーションでも利用することができます。いろいろなサービスで暗号化通信を導入にチャレンジしてみましょう。技術者向けの導入ガイドGMOクラウドのパートナーさまコラムアフィリエイトクラウド紹介制度サイトマップGMOクラウド株式会社は、ISMS(情報セキュリティマネジメントシステム)の国際規格を2006年11月に取得しました。27017」を2018年10月に認証取得しました。