Apache Logo

Macのlocal環境のWEBサーバにSSLを適用

開発用途でローカル環境にSSLが必要になってきたので対応してみます。

今回はローカル環境なのでOpenSSL(LibreSSL)を使います。

$ openssl version
LibreSSL 2.2.7

apache2のディレクトリにsslディレクトリを作成します。

$ sudo mkdir /etc/apache2/ssl

[targethost]をお使いのドメインに読み替えてください。

$ sudo openssl genrsa -out /etc/apache2/ssl/[targethost].key 2048
$ sudo openssl req -new -x509 -key /etc/apache2/ssl/[targethost].key -out /etc/apache2/ssl/[targethost].crt -days 3650 -subj /CN=[targethost]

証明書をキーチェーンに追加します。

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

SSLに必要なモジュールをhttpd.conf「/private/etc/apache2/httpd.conf」で有効にします。

#LoadModule socache_shmcb_module libexec/apache2/mod_socache_shmcb.so
↓
LoadModule socache_shmcb_module libexec/apache2/mod_socache_shmcb.so
#LoadModule ssl_module libexec/apache2/mod_ssl.so
↓
LoadModule ssl_module libexec/apache2/mod_ssl.so
#Include /private/etc/apache2/extra/httpd-ssl.conf
↓
Include /private/etc/apache2/extra/httpd-ssl.conf

上記のhttpd-ssl.conf「/private/etc/apache2/extra/httpd-ssl.conf」に秘密鍵と証明書を設定します。

SSLCertificateFile "/etc/apache2/ssl/[targethost].crt"
SSLCertificateKeyFile "/etc/apache2/ssl/[targethost].key"

バーチャルホストの設定を行います。

対象ファイル例「/private/etc/apache2/extra/httpd-vhosts.conf」

記載例)


  DocumentRoot "指定パス"
  ServerName [targethost]
  ErrorLog "/private/var/log/apache2/[targethost]-error_log"
  CustomLog "/private/var/log/apache2/[targethost]-access_log" common

  SSLEngine on
  SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
  SSLCertificateFile /etc/apache2/ssl/[targethost].crt
  SSLCertificateKeyFile /etc/apache2/ssl/[targethost].key

  
    Options FollowSymLinks
    AllowOverride All
    Require all granted
  

以上で設定は完了です。(※必要に応じてhostsファイルは変更してください)

あとはapacheを再起動して完了です。

https://targethost

でアクセスすると保護されていない通信となりますが、SSLでの接続自体はできるようになっています。

開発時の環境としては十分ですね。