自鯖のSSL(https)化 FreeBSD設定

2017年9月24日

導入理由

最近のブラウザはhttpのものは危険サイトと表示されるようになり、SSL(https)化は不可避だなと考えていたが証明書の費用で躊躇していたら、Let’s Encryptという自鯖やっている人などに無料証明書を出してくれるところがあるらしい。

更にFreeBSD用にpkgがあるのでそれを利用してみることとする。

py27-certbot導入

pkgからpy27-certbotをインストールする。pkgなのでコマンド一つで終了。

# pkg install py27-certbot

まずは証明書の取得を行う。これもコマンド一つ入力で終わり。メールアドレスをMLに登録するか聞いてきたのでそれの返事をするとしばらくして終了。

# certbot certonly -m webmaster@b-twin.net --agree-tos --webroot -w apacheのDocumentRoot -d www.b-twin.net

証明書は/usr/local/etcの下にletsencryptのディレクトリが作成されており、実体はファイルはarchive/ドメイン名の下に4つのファイルがある。

Apacheの設定

SSLと証明書の設定をApacheに行う。まずは、httpd-ssl.confの設定。Certbotで取得した証明書を設定する。

SSLCertificateFile "/usr/local/etc/letsencrypt/live/www.b-twin.net/fullchain.pem"

SSLCertificateKeyFile "/usr/local/etc/letsencrypt/live/www.b-twin.net/privkey.pem"

ServerName www.b-twin.net:443

次にhttpd.confの設定する。モジュールと先ほど設定したhttpd-ssl.confのコメントアウトを外して有効化する。

LoadModule log_config_module libexec/apache24/mod_log_config.so
LoadModule setenvif_module libexec/apache24/mod_setenvif.so
LoadModule ssl_module libexec/apache24/mod_ssl.so
LoadModule socache_shmcb_module libexec/apache24/mod_socache_shmcb.so

Include etc/apache24/extra/httpd-ssl.conf

念のため設定ファイルをチェックする。その後Apacheに設定を反映

# Apachectl configtest
Performing sanity check on apache24 configuration:
Syntax OK

# apachectl graceful
Performing sanity check on apache24 configuration:
Syntax OK
Performing a graceful restart
#

IPFの設定

外からのアクセスできる様にするため443ポートを開放する。
IPFの設定ファイルに下記を追加。

#SSL
pass in quick proto tcp from any to any port = 443 flags S/SA group 10

Cron登録

証明書の有効期間が90日なので30日毎に更新をするためにCronに登録する。

# /usr/local/bin/certbot renew