開発用途でローカル環境に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での接続自体はできるようになっています。
開発時の環境としては十分ですね。