LoginSignup
3

More than 1 year has passed since last update.

posted at

updated at

macのApacheにSSLを導入した

はじめに

課題用にApacheで起動したlocalhostにSSLを設定しました。
ローカル用ですので、セキュリティ度外視なことをご了承ください。

httpd.confの設定

/usr/local/etc/httpd/httpd.confをテキストエディタで開いて、以下の箇所をそれぞれ変更します。

usr/local/etc/httpd/httpd.conf
ServerName www.example.com:80
↓コメントを外す
ServerName localhost
usr/local/etc/httpd/httpd.conf
#LoadModule vhost_alias_module --省略--
↓コメントを外す
LoadModule vhost_alias_module --省略--
usr/local/etc/httpd/httpd.conf
#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
をテキストエディタで開いて、元々のものをすべてコメントアウトしたり、削除します。そのうえで以下の箇所を追加します。

/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です。

terminal
$ sudo apachectl restart

SSLの設定

SSL鍵を作成する場所を作ります。

terminal
$ sudo mkdir /etc/apache2/ssl

SSLの作成

以下のコマンドを実行します。

terminal
$ 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にアクセスすることが出来るように、キーチェーンアクセスに登録します。

terminal
$ sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain /etc/apache2/ssl/localhost.crt

SSL用のバーチャルホスト設定

ターミナル上で、Apacheのバーチャルホストを設定します。

/usr/local/etc/httpd/httpd.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
↓コメントを外す
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用の設定を追加します。

/usr/local/etc/httpd/extra/httpd-vhosts.conf
<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の設定

以下のポート番号を変更します。

/usr/local/etc/httpd/extra/httpd-ssl.conf
Listen 8443
↓書き換え
Listen 443

ServerNameの箇所をlocalhostに書き換えます。

/usr/local/etc/httpd/extra/httpd-ssl.conf
ServerName localhost

/usr/local/etc/httpd/extra/httpd-ssl.confから元々記載のある証明書のパスをコメントアウトし、先程作成したもののパスを通します。

/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"

先ほど作成した以下の鍵へのパスをそれぞれ追加します。

/usr/local/etc/httpd/extra/httpd-ssl.conf
SSLCertificateFile "/etc/apache2/ssl/localhost.crt"
SSLCertificateKeyFile "/etc/apache2/ssl/localhost.key"

Apacheの再起動・確認

Apacheを再起動します。

terminal
$ sudo apachectl restart

ブラウザを開き、https://localhost にアクセスできれば完了です!

参考

以下の動画が概要欄のGuideを参考にしつつ設定できるので、非常に分かりやすかったです。
https://www.youtube.com/watch?v=-VxQU1w9L6w
ただいくつか誤植などがあるので、この記事のコードを参考にしたほうが良いと思います。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
3