LoginSignup
1
3

More than 3 years have passed since last update.

macのApacheにSSLを導入した

Last updated at Posted at 2020-07-27

はじめに

課題用に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
ただいくつか誤植などがあるので、この記事のコードを参考にしたほうが良いと思います。

1
3
0

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
  3. You can use dark theme
What you can do with signing up
1
3