MacportsのApacheでSSLのテスト環境を構築

先日、ある案件でSSL環境下でもテストする必要があったので、MacportsでインストールしたApache2でSSLを有効にしてみました。思ったよりも簡単に設定することができましたが、憶えておく自信がないので忘れないようにメモしておきたいと思います。

SSLを有効にするとApacheの起動時にパスフレーズが必要になるため、Apacheの自動起動はOFFにしておきましょう。私は、いつも手動で起動していますが、自動起動をONにしている場合は、ターミナルで下記コマンドを実行してApacheの自動起動をOFFにします。

ターミナル

sudo launchctl unload -w /Library/LaunchDaemons/org.macports.apache2.plist

それでは、まず/opt/local/apache2/confに秘密鍵server.keyを作成します。ターミナルで下記コマンドを実行するとパスフレーズを聞かれるので、パスフレーズにしたい文字列を入力します。このパスフレーズは、Apache起動時に必要になるので、忘れないように憶えておきましょう。

ターミナル

cd /opt/local/apache2/conf
sudo openssl genrsa -des3 -out server.key 1024

次に自己証明書を作成します。ターミナルで下記コマンドを実行するとパスフレーズを聞かれるので、パスフレーズを入力します。すると、下記情報の入力を求められるので、順番に半角英数字で入力していきます。

ターミナル

sudo openssl req -new -x509 -days 3650 -key server.key -out server.crt

Country Name (2 letter code) [AU]:国名2文字(JP)
State or Province Name (full name) [Some-State]:都道府県名
Locality Name (eg, city) []:市区町村名
Organization Name (eg, company) [Internet Widgits Pty Ltd]:組織名
Organizational Unit Name (eg, section) []:部署名
Common Name (eg, YOUR name) []:ドメイン名              
Email Address []:メールアドレス

次に設定ファイルを編集するため、ターミナルで下記コマンドを実行し、パーミッションを書き込み可にしておきます。

ターミナル

sudo chmod 666 httpd.conf
sudo chmod 666 extra/httpd-ssl.conf

次は、/opt/local/apache2/conf/extra/httpd-ssl.confをエディタで開いて編集します。Listenで使用するポート番号を追加し、<VirtualHost _default_:443></VirtualHost>の部分を書き換えます。複数のサイトをバーチャルホストで起ち上げる場合は、同じようにListenでポートを追加し、<VirtualHost></VirtualHost>をコピーして記述します。

/opt/local/apache2/conf/extra/httpd-ssl.conf

Listen ポート番号

<VirtualHost IPアドレスまたはドメイン名:ポート番号>
DocumentRoot "/opt/local/apache2/htdocs/ドキュメントルートにしたいディレクトリ名"
ServerName IPアドレスまたはドメイン名:ポート番号
</VirtualHost>

次に/opt/local/apache2/conf/httpd.confをエディタで開いて、httpd-ssl.confのIncludeのコメントアウトを解除します。

/opt/local/apache2/conf/httpd.conf

#Include conf/extra/httpd-ssl.conf
↓
Include conf/extra/httpd-ssl.conf

以上で設定は終了です。ターミナルで設定ファイルの文法チェックをして、問題なければApacheを起動します。起動時にパスフレーズを聞かれるので、秘密鍵作成時に指定したパスフレーズを入力します。

ターミナル

sudo /opt/local/apache2/bin/apachectl configtest
sudo /opt/local/apache2/bin/apachectl start

Apacheを起動したら、https://IPアドレスまたはドメイン名:ポート番号/にWebブラウザでアクセスしてみましょう。「このサイトのセキュリティ証明書は信頼できません」といった警告が表示されて傷つくと思いますが、テスト環境なので気にせず続行します。ドキュメントルートに指定したディレクトリのファイルが表示されれば、成功です。最後にターミナルで設定ファイルのパーミッションを644に戻しておきましょう。

ターミナル

sudo chmod 644 httpd.conf
sudo chmod 644 extra/httpd-ssl.conf