LoginSignup
3
4

More than 5 years have passed since last update.

CentOS 7 Let's Encrypt サーバ証明書の取得

Last updated at Posted at 2018-03-14

動作確認環境

  • 仮想環境 VMware Workstation Player 14.1.1
  • OS Windows 10 Pro 64bit

仮想環境

  • OS CentOS 7.4 (1708) minimalインストール
  • メモリ 2GB
  • HDD 250GB

前提条件

  • gcc 7.3.0
  • cmake 3.11.4
  • MySQL 5.7.22
  • OpenSSL 1.1.0.h
  • Apache 2.4.33
  • PHP 7.2.6
  • 有効なドメイン (example.comを取得と仮定)

ファイルのダウンロードと実行

/usr/local/ディレクトリに移動する。

cd /usr/local/

ファイルをダウンロードする。

wget https://dl.eff.org/certbot-auto

パーミッションを変更する。

chmod a+x certbot-auto

実行する。

./certbot-auto

証明書の取得

./certbot-auto certonly --webroot -w /usr/local/apache2/htdocs -d example.com -m test@example.com --agree-tos

Let's Encryptのメールリストに登録するかと、聞かれるので不要な方はnを入力する。

-------------------------------------------------------------------------------
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about EFF and
our work to encrypt the web, protect its users and defend digital rights.
-------------------------------------------------------------------------------
(Y)es/(N)o:

不要な方はnを入力する。

以下の場所に証明書や秘密鍵が保存される。
証明書

/etc/letsencrypt/live/example.com/cert.pem

証明書+中間CA証明書

/etc/letsencrypt/live/example.com/fullchain.pem

秘密鍵

/etc/letsencrypt/live/example.com/privkey.pem

中間CA証明書

/etc/letsencrypt/live/example.com/chain.pem

証明書の自動更新の設定をする。

crontab -u root -e

以下のコマンドを書き込む。

00 05 01 * * /usr/local/certbot/certbot-auto renew --force-renew && /usr/local/apache2/bin/apachectl graceful

HTTP/2 と SSL/TLS の設定

SSL設定ファイルをバックアッップする。

cp /usr/local/apache2/conf/extra/httpd-ssl.conf /usr/local/apache2/conf/extra/httpd-ssl.conf.org

・SSL設定ファイルを作成します。

vi /usr/local/apache2/conf/extra/httpd-ssl.conf

httpd-ssl.confのオリジナルファイルと違うのでこの内容を利用してください。

httpd-ssl.conf
Listen 443
SSLPassPhraseDialog  builtin
SSLSessionCache        "shmcb:/usr/local/apache2/logs/ssl_scache(512000)"
SSLSessionCacheTimeout  300
SSLRandomSeed startup file:/dev/urandom  256
SSLRandomSeed connect builtin
SSLCryptoDevice builtin
SSLStrictSNIVHostCheck off

SSLProtocol -All +TLSv1 +TLSv1.1 +TLSv1.2
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
SSLHonorCipherOrder on
SSLCompression off
SSLSessionTickets off

<VirtualHost *:443>

    Protocols h2 http/1.1

    ServerName example.com
    DocumentRoot "/usr/local/apache2/htdocs"

    <Directory "/usr/local/apache2/htdocs">
        Options FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>

   SSLEngine on
   Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
   SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
   SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

    ErrorLog "logs/error_log"
    CustomLog "logs/access_log" combined
</VirtualHost>

SSL設定ファイルを読込むように変更する。

vi /usr/local/apache2/conf/httpd.conf

コメントアウトする。

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

このままapacheを再起動するとエラーが発生するためmod_ssl.somod_socache_shmcb.soをコメントアウトする。

httpからhttpsへ自動転送

httpからhttpsへ自動転送できるようmod_rewrite.soをコメントアウトする。

httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so

この行の下に以下の内容を追記する。

httpd.conf
<ifModule mod_rewrite.c>
      RewriteEngine On
      RewriteCond %{HTTPS} off
      RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</ifModule>

Apache を再起動する。

systemctl restart httpd

これでHTTP/2対応になる。

参考

Macのローカル開発環境でhttpsを有効にしたらApacheが起動しない - Qiita


目次

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4