Tag: Let's Encrypt

目次

関連ページ

参考情報

CentOS 7

CentOS 6

概要

  • 無料でSSLサーバー証明書を取得できる。
  • 期間は90日間とかなり短いのでcronなどで自動更新する必要あり。
  • 取得ツールがPython 2.7を要求するので、CentOS 6の場合、Software Collections(SCL)をインストールするのが定番らしい。

前準備(CentOS 6の場合)

  • Python 2.7が実行できるようにする
    # yum install centos-release-SCL
    # yum install python27 python27-python-tools

certbot-autoのインストール

  • 以前はletsencrypt-autoというスクリプトだったらしいが、certbot-autoというスクリプトに変更となっている。CentOSにLet's EncryptのSSL証明書を導入する - オープンソースこねこね
  • 以下の手順で導入する。どっちにしろroot権限が必要なのでrootで作業したほうが間違えないかも。
    # curl https://dl.eff.org/certbot-auto -o /usr/local/bin/certbot-auto
    # chmod a+x /usr/local/bin/certbot-auto
    # scl enable python27 bash #CentOS 6の場合
    # /usr/local/bin/certbot-auto
  • sclコマンドは3つ引数をとり、上の場合新たなbashインスタンスを作成してその環境でPython27を使えるようにすることを意味している。最後の--helpコマンドの実行によりcertbotが必要なパッケージ類が自動でインストールされる。

証明書の取得

  • certbot-auto certonlyで証明書の取得が可能。その後の--webrootは既存のWebサーバーを利用して証明書の確認を行うと言う意味。--webroot-pathはDocumentRootを指定する(--standaloneだと独自webサーバーが起動するけどその場合既存のWebサーバーを一事停止する必要がでてくる。
    # certbot-auto certonly --webroot --webroot-path=/home/tanaka/www -d www.softantenna.com
  • 実行前scl enable python27 bashを実行してPython 2.7が実行可能になっていることを確認。
  • 成功すると/etc/letsencrypt/live/www.softantenna.com以下に証明書が取得される。

Apacheへの組み込み

  • この辺は普通のSSLサイトを構築する場合と同じ。ssl.confで以下のような設定を追加。
  • httpd.conf
    NameVirtualHost *:80
    NameVirtualHost *:443
  • ssl.conf
    <VirtualHost *:443>
        ServerName www.softantenna.com
        DocumentRoot /home/tanaka/www
        SSLEngine on
        # 追加
        SSLCertificateFile /etc/letsencrypt/live/www.softantenna.com/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/www.softantenna.com/privkey.pem
        SSLCertificateChainFile /etc/letsencrypt/live/www.softantenna.com/chain.pem
        <Directory /home/tanaka/www>
           # This relaxes Apache security settings.
           AllowOverride all
           # MultiViews must be turned off.
           Options -MultiViews
        </Directory>
    </VirtualHost>
    
  • うまくいかない場合、ssl.confに存在する既存のvirtualhost設定が悪いのかも。ServerNameなどをいじってみる。

証明書の更新

  • certbot-auto renewで更新できる。
  • cronで呼び出す必要があるのでシェルスクリプトを作成しておくと便利。Let's EncryptのSSL証明書を自動更新して、結果をメール通知するスクリプトを書いてみた(WEBROOT、NGINX用) - KITA Eng.を参考し以下のようなスクリプトを/home/tanaka/bin/update_cert.shとして保存。
    CERTBOT=/usr/local/bin/certbot-auto
    WEBROOT_PATH=/home/tanaka/www
    DOMAIN=www.softantenna.com
    EMAIL=admin@softantenna.com
    LOGFILE=/home/tanaka/bin/update_cert_log.txt
    
    today=`date +%F-%a-%T`
    echo "Let's Encrypt update start $today" >$LOGFILE
    
    scl enable python27 "$CERTBOT renew --force-renewal" >>$LOGFILE
    
    /etc/init.d/httpd restart
    
    today=`date +%F-%a-%T`
    echo "Let's Encrypt update end $today" >>$LOGFILE
    
    
    cat -v $LOGFILE | mail -s "[Let's Encrypt Auto Update] Update Report for $DOMAIN" $EMAIL
    
  • cronで一月に一回実行するように設定しておく。ここではrootではなくtanakaユーザーのcronとして設定する(sudoはパスワードなしで実行できるものとする)。
    10      1       1       *       *       sudo /home/tanaka/bin/update_cert.sh &> /home/tanaka/bin/update_cert_cron_log.txt
    

トラブルシューティング

SSLでアクセスしても安全な通信と表示されない

  • 例えば画像ファイルをhttpで呼び出しているとmixed contentとみなされだめっぽい(chromeの場合)。
  • Developer ToolでConsoleみれば確認可能。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-02-22 (水) 19:17:40 (757d)