はじめに
課題用にApacheで起動したlocalhostにSSLを設定しました。
ローカル用ですので、セキュリティ度外視なことをご了承ください。
#httpd.confの設定
/usr/local/etc/httpd/httpd.conf
をテキストエディタで開いて、以下の箇所をそれぞれ変更します。
ServerName www.example.com:80
↓コメントを外す
ServerName localhost
#LoadModule vhost_alias_module --省略--
↓コメントを外す
LoadModule vhost_alias_module --省略--
#Include /usr/local/etc/httpd/extra/httpd-vhosts.conf
↓コメントを外す
Include /usr/local/etc/httpd/extra/httpd-vhosts.conf
Virtual hostの設定
/usr/local/etc/httpd/extra/httpd-vhosts.conf
をテキストエディタで開いて、元々のものをすべてコメントアウトしたり、削除します。そのうえで以下の箇所を追加します。
<VirtualHost *:80>
ServerName localhost
DocumentRoot "/usr/local/var/www"
<Directory "/usr/local/var/www">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
</VirtualHost>
Apacheの再起動
現在の状態でApacheが起動できるか確認するため、再起動してみます。localhostにアクセスできればOKです。
$ sudo apachectl restart
SSLの設定
SSL鍵を作成する場所を作ります。
$ sudo mkdir /etc/apache2/ssl
SSLの作成
以下のコマンドを実行します。
$ sudo openssl genrsa -out /etc/apache2/ssl/localhost.key 2048
$ sudo openssl req -new -x509 -key /etc/apache2/ssl/localhost.key -out /etc/apache2/ssl/localhost.crt -days 3650 -subj /CN=localhost
キーチェーンアクセスへの登録
httpsにアクセスすることが出来るように、キーチェーンアクセスに登録します。
$ sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain /etc/apache2/ssl/localhost.crt
SSL用のバーチャルホスト設定
ターミナル上で、Apacheのバーチャルホストを設定します。
#LoadModule socache_shmcb_module lib/httpd/modules/mod_socache_shmcb.so
#LoadModule ssl_module lib/httpd/modules/mod_ssl.so
#Include /usr/local/etc/httpd/extra/httpd-ssl.conf
↓コメントを外す
LoadModule socache_shmcb_module lib/httpd/modules/mod_socache_shmcb.so
LoadModule ssl_module lib/httpd/modules/mod_ssl.so
Include /usr/local/etc/httpd/extra/httpd-ssl.conf
httpd-vhosts.confの編集
先程編集したhttpd-vhosts.confをもう一度テキストエディタで開き、SSL用の設定を追加します。
<VirtualHost *:443>
ServerName localhost
DocumentRoot "/usr/local/var/www"
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /etc/apache2/ssl/localhost.crt
SSLCertificateKeyFile /etc/apache2/ssl/localhost.key
<Directory "/usr/local/var/www">
Options Indexes FollowSymLinks
AllowOverride All
Order allow, deny
Allow from all
Require all granted
</Directory>
</VirtualHost>
#httpd-ssl.confの設定
以下のポート番号を変更します。
Listen 8443
↓書き換え
Listen 443
ServerNameの箇所をlocalhostに書き換えます。
ServerName localhost
/usr/local/etc/httpd/extra/httpd-ssl.conf
から元々記載のある証明書のパスをコメントアウトし、先程作成したもののパスを通します。
SSLCerificateFile "/private/etc/apache2/server.crt"
SSLCertificateKeyFile "/private/etc/apache2/server.key"
↓
#SSLCerificateFile "/private/etc/apache2/server.crt"
#SSLCertificateKeyFile "/private/etc/apache2/server.key"
先ほど作成した以下の鍵へのパスをそれぞれ追加します。
SSLCertificateFile "/etc/apache2/ssl/localhost.crt"
SSLCertificateKeyFile "/etc/apache2/ssl/localhost.key"
Apacheの再起動・確認
Apacheを再起動します。
$ sudo apachectl restart
ブラウザを開き、https://localhost にアクセスできれば完了です!
#参考
以下の動画が概要欄のGuideを参考にしつつ設定できるので、非常に分かりやすかったです。
https://www.youtube.com/watch?v=-VxQU1w9L6w
ただいくつか誤植などがあるので、この記事のコードを参考にしたほうが良いと思います。