会社のオフィシャルWEBサイトにはRapidSSLを導入していますが、ワイルドカードタイプは年間数万円かかるので、別サービスではお金の掛からない「Let’s Encryptサーバー証明書」を利用します。
リポジトリのクローン
$ git clone https://github.com/certbot/certbot
依存パッケージのインストール
$ cd certbot/
$ sudo ./certbot-auto
証明書の取得
$ sudo /certbot-auto certonly --webroot -w /var/www/sample(ドキュメントルート) -d sample.plane-plan.com -m hoge@plane-plan.com --agree-tos
WEBサーバーの設定を追記(ssl.conf等)
<VirtualHost *:443>
SSLEngine on
ServerName sample.plane-plan.com:443
DocumentRoot “/var/www/sample.plane-plan.com"
SSLCertificateFile /etc/letsencrypt/live/sample.plane-plan.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/sample.plane-plan.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/sample.plane-plan.com/chain.pem
SSLProtocol all -SSLv2
SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES
<Directory "/var/www/sample/“>
Options -Indexes FollowSymLinks
AllowOverride All
</Directory>
</VirtualHost>
httpのアクセスをhttpsへリダイレクト
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
サーバー設定のリロード
$ sudo service httpd reload
証明書の更新
署名書の有効間は90日間です。
「certbot-auto renew」で、有効期間30日未満の証明書が更新されます。
$ certbot-auto renew
実際に更新しようとした所、エラーが発生しましたがPythonのバージョンを2.7を入れることで更新できました。
virtualenv: コマンドが見つかりません
Python2.7で動作するシェルを起動します。
$ sudo scl enable python27 bash
CentOS 6 で発生するエラーの対処法
https://letsencrypt.jp/usage/centos6-error.html
Let’s Encrypt 総合ポータル
https://letsencrypt.jp/
※追記
複数ドメインを一括で更新時に問題がありました。
一旦Apacheを停止して更新できます。
Attempting to renew cert from /etc/letsencrypt/renewal/z-groove.com.conf produced an unexpected error: Could not bind TCP port 443 because it is already in use by another process on this system (such as a web server). Please stop the program in question and then try again.. Skipping.
# service httpd stop
# certbot-auto renew
# service httpd start