無料のSSL証明書 Let’s EncryptでApacheをSSL化
概要
ownCloudをサーバーに導入しましたが、暗号化したいのでSSL証明書をインストールします。SSL証明書は無料の「Let’s Encrypt」を利用します。
Let’s Encryptは、2016年4月から正式なサービスを開始され、SSL(TLS)に利用できるサーバ証明書を無償で発行している認証局またはサービスです。証明書の発行期限は90日と短いですが、無料なのと、導入にはコマンドを叩くだけで導入できます。
また、証明書の発行期限は90日と短いですが、証明書を発行するコマンドをcronに設定すれば自動でおこなえます
Let’s Encryptの詳しい説明は以下のサイトを参考にして下さい
ITmedia:無償かつ自動でSSL(TLS)証明書を発行できる「Let’s Encrypt」とは?
CentOS 6.x系の場合は、Pythonのバージョンが古いのでこの作業では更新できないので下記の記事の方法を利用してください
「無料のSSL「Let’s Encrypt」のインストール(CentOS 6.x)」
CentOS7 に Let’s Encryptインストール
この手順でのインストールは、CentOS 7となっています。
CentOS 6.xの場合は、python 2.7をまであげないとインストールできません
インストールする場所に移動して、githubからcertbotのレポジトリをcloneします。
# cd /usr/local/ # git clone https://github.com/certbot/certbot
そのあとに、Let’s Encrypt クライアントが依存するパッケージをインストールします
# cd certbot/ # ./certbot-auto
下記のコマンドで証明書を取得します。使用する環境でディレクトリ、ドメイン名、メールアドレスは変更して下さい
# ./certbot-auto certonly --webroot -w /var/www/example -d www.example.com -m info@example.com --agree-tos IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/www.example.com/fullchain.pem. Your cert will expire on 2016-11-01. To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto again. To non-interactively renew *all* of your certificates, run "certbot-auto renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
・パラメータの詳細
–webroot | WEBサーバのドキュメントルートに認証用ファイルが生成されます。 「.well-known/」というディレクトリが作成され、この中に生成されます |
-w | WEBサーバのDocumentRootを指定します |
-d | 証明書を取得するドメインを指定します |
-m | メールアドレスを指定します。更新期限が近づくとこのアドレスにメールが来ます |
–agree-tos | Let’s Encrypt の利用規約に同意します |
証明書や秘密鍵は「/etc/letsencrypt/archive/」以下に保存されます。下記の場所にシンボリックリンクが生成されます。
- 証明書: /etc/letsencrypt/live/<ドメイン名>/cert.pem
- 証明書+中間CA証明書: /etc/letsencrypt/live/<ドメイン名>/fullchain.pem
- 秘密鍵: /etc/letsencrypt/live/<ドメイン名>/privkey.pem
- 中間CA証明書: /etc/letsencrypt/live/<ドメイン名>/chain.pem
Apacheの設定
ApacheのSSL設定は以下のように設定しました
<VirtualHost *.443> DocumentRoot /var/www/owncloud/html ServerName www.example.com SetEnvIf Request_URI "\.(gif|jpg|png|css|js)$" nolog ErrorLog /var/www/owncloud/log/ownc-ssl_error.log CustomLog /var/www/owncloud/log//ownc-ssl_access.log combined env=!nolog SSLEngine on SSLHonorCipherOrder on Header set Strict-Transport-Security "max-age=31536000; includeSubDomains" SSLProtocol -All +TLSv1 +TLSv1.1 +TLSv1.2 SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5 SSLCertificateFile /etc/letsencrypt/live/www.example.com/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/www.example.com/chain.pem <Directory /var/www/owncloud/html/> Options +FollowSymlinks AllowOverride All </Directory> </VirtualHost> # 設定変更後は、Apacheを再起動します # systemctl reload httpd
SSL証明書 自動更新を設定する (cron)
SSLの更新は以下のコマンドをcronに設定して、毎月1日の朝5時に証明書を自動更新して、Apacheをリロードします。
# crontab -e 0 5 1 * * /usr/local/certbot/certbot-auto renew --force-renew && /bin/systemctl reload httpd
ディスカッション
コメント一覧
まだ、コメントがありません