Vagrant (Ubuntu) 環境でhttps接続する

本番がhttpsの開発でローカル環境だけhttpで接続していると色々面倒があるため、ローカルのvagrant環境でもhttps接続出来るように調整してみたメモ。

前提

OSはubuntu。というか、いつものように、vagrantの環境はscotchbox。

https://box.scotch.io/

参考

主に以下を参考にそのまま作業した。ありがとうございます。

VagrantでUbuntuサーバ/Apache2のSSL(https) – orangeProse別館

テスト用の証明書を作成

まずはモジュールを有効に。

1
2
$ sudo a2enmod ssl
$ sudo service apache2 reload

で、テスト用の証明書を作成。

1
2
$ sudo make-ssl-cert generate-default-snakeoil --force-ovarwrite
$ sudo make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/apache.pem

二つ目を実行すると、コンソールの画面全体で設定画面が表示されて証明書の内容を聞かれる。 ひとつ目はコモンネーム。 hostsで指定しているURLを指定しておく。

二つ目は、 Subject Alternative Names (サブジェクトの別名)。
「Subject Alternative Names(サブジェクトの別名)」とは何ですか | GeoTrust

今回は特に使用しないので空白のままとしておく。

apacheを再起動。

設定ファイル

このままだとSSL用の設定ファイルがないようなので、default-ssl.confというファイルをコピーして使用する。

1
2
3
4
$ cd /etc/apache2/sites-available
$ sudo cp default-ssl.conf ssl.conf
$ sudo a2ensite ssl
$ sudo service apache2 reload

参考サイトでは.confの拡張子が指定されていなかったのだが、指定されていないとエラーとなってしまう。
Apache2 on ubuntu で a2ensite すると does not exist と言われるときの対処法 – Qiita

最後はapacheを再起動。

この状態で、httpsでアクセスをすると、プライバシーが保護されていない、というような警告が出るが、無視してアクセスすると無事、接続できた。

ドキュメントルート

しかしhttpでアクセスしていたファイルにアクセスが出来ない。 どうやら、httpsで指定されているドキュメントルートが違っているよう。 先程コピーした、ssl.confファイルを見てみる。

すると、以下のようにドキュメントルートが設定されている。

1
DocumentRoot /var/www/html

今回は、publicをドキュメントルートとしているので、そちらに変更する。

1
DocumentRoot /var/www/public

例によって、apacheを再起動して接続確認。無事、接続出来た。

参考

   このエントリーをはてなブックマークに追加