プロジェクト

全般

プロフィール

Let's Encrypt 証明書発行

  • Let's EncryptでのSSL証明書発行に関するページです。

前提条件

  • このソフトウェアの構築には下記の導入が前提となります。
    • epelリポジトリの登録
  • 証明書の有効期限は3ヶ月です。よってcronでの自動更新を含めた解説を行います。

ダウンロード

  • バイナリファイルをダウンロードし、任意の場所に配置します。
    # mkdir /usr/local/letsencrypt
    # cd /usr/local/letsencrypt
    # wget https://dl.eff.org/certbot-auto
    # chmod a+x certbot-auto
    
  • 前提条件となるpython2.7系をインストールします。
    # yum install centos-release-SCL
    # yum install scl-utils python27 python27-scldevel
    # scl enable python27 bash
    
  • pythonが2.7系に切り替わったことを確認します。
    # python -V
    # Python 2.7.8
    

インストール

  • 実行ファイルを起動します。
  • 本コマンドを実行する際、一時的にApache等のHTTP/HTTPSサービスを停止しておく必要があります。
    # cd /usr/local/letsencrypt
    # service httpd stop
    # ./certbot-auto
    # service httpd start
    

証明書の作成

  • 次のコマンドを実行します。
  • 本コマンドを実行する際、一時的にApache等のHTTP/HTTPSサービスを停止しておく必要があります。
    # cd /usr/local/letsencrypt
    # service httpd stop
    # ./certbot-auto certonly -a standalone -d www.example.com
    (ドメイン名は実際に利用する名称に置き換えること)
    # service httpd start
    
  • メールアドレスの入力、利用許諾、内容の確認を実施します。
  • メールアドレスに通知メールが送られます。
  • 以下に証明書ファイルが作成されます。
    /etc/letsencrypt/live/www.example.com
    README  cert.pem  chain.pem  fullchain.pem  privkey.pem
    

自動更新

  • HTTPサービスの一時停止は必須で、メールサーバの場合postfixとdovecotのリロードも行う記載が必要です。
  • 更新用に以下のスクリプトを作成します。
    # vi /usr/local/letsencrypt/update.sh
    # chmod a+x /usr/local/letsencrypt/update.sh
    
  • update.sh 記載内容
    #!/bin/bash
    
    /sbin/service httpd stop
    
    /usr/local/work/letsencrypt/certbot-auto certonly -a standalone -d www.example.com --renew-by-default
    
    /sbin/service httpd start
    
    /sbin/service postfix restart
    /sbin/service dovecot restart
    
    exit
    
  • crontabに以下の内容を登録します。一時的にpython27を通して実行します。
  • 例として毎月1日の25時にWebサーバ向けのSSL証明書の更新を行う設定です。
    # Webサーバのみ
    0 1 1 * * scl enable python27 /usr/local/letsencrypt/update.sh
    

ファイルと設定箇所の例

  • Apache
    /etc/httpd/conf.d/ssl.conf
    
    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
    SSLCACertificateFile /etc/letsencrypt/live/www.example.com/fullchain.pem
    
    バーチャルホストにSSLを設定している場合は、別途設定すること。
    
  • Postfix
    /etc/postfix/main.cf
    
    smtpd_tls_cert_file = /etc/letsencrypt/live/www.example.com/fullchain.pem
    smtpd_tls_key_file = /etc/letsencrypt/live/www.example.com/privkey.pem
    
  • Dovecot
    /etc/dovecot/conf.d/10-ssl.conf
    
    ssl_cert = </etc/letsencrypt/live/www.example.com/fullchain.pem
    ssl_key = </etc/letsencrypt/live/www.example.com/privkey.pem
    

 

戻る