本文へスキップ
重要 SSL/TLS証明書 47日間ルール正式決定 — ACME自動更新の導入を推奨しております。 Phase 2(100日へ短縮)まで 298日
300,000枚 累計発行
17,206社 利用中
19年 運営
24時間365日 自動発行

サポート › 証明書のインストール › Apache

AApache HTTP Server

Apache への SSL/TLS 証明書インストール

Apache 2.4 系の mod_ssl を使った SSL/TLS 証明書のインストール手順。
2026年版の推奨設定(TLS 1.3 / HTTP/2 / HSTS)も含めて解説します。

🛠️ 事前準備

  • SSL ストアから取得した サーバ証明書example.com.crt
  • CSR 作成時の 秘密鍵example.com.key
  • 中間 CA 証明書(認証局から提供)
  • Apache 2.4 系がインストール済み、mod_ssl が有効化済み
⚠️ 中間 CA 証明書のインストール漏れに注意 中間 CA 証明書がインストールされていないと、一部のブラウザ・モバイル端末で警告が表示されます。必ず中間 CA 証明書もインストールしてください。

📋 手順

  1. 証明書ファイルの配置

    取得した証明書ファイルを所定の場所に配置します。

    # 推奨ディレクトリ構成
    $ sudo mkdir -p /etc/httpd/ssl  # RHEL/Alma/Rocky 系
    # または
    $ sudo mkdir -p /etc/apache2/ssl  # Debian/Ubuntu 系
    
    # 各ファイルを配置
    $ sudo cp example.com.crt /etc/httpd/ssl/   # サーバ証明書
    $ sudo cp example.com.key /etc/httpd/ssl/   # 秘密鍵
    $ sudo cp intermediate.crt /etc/httpd/ssl/  # 中間CA証明書
    
    # パーミッション設定
    $ sudo chmod 644 /etc/httpd/ssl/example.com.crt
    $ sudo chmod 600 /etc/httpd/ssl/example.com.key
    $ sudo chmod 644 /etc/httpd/ssl/intermediate.crt
    $ sudo chown root:root /etc/httpd/ssl/*
  2. Apache 設定ファイルの編集

    SSL 設定ファイル(/etc/httpd/conf.d/ssl.conf または /etc/apache2/sites-available/example.com.conf)を編集します。

    /etc/httpd/conf.d/ssl.conf(2026年推奨設定)
    <VirtualHost *:443>
        ServerName example.com
        ServerAlias www.example.com
        DocumentRoot /var/www/html
    
        # === SSL/TLS 設定 ===
        SSLEngine on
        SSLCertificateFile      /etc/httpd/ssl/example.com.crt
        SSLCertificateKeyFile   /etc/httpd/ssl/example.com.key
        SSLCertificateChainFile /etc/httpd/ssl/intermediate.crt
    
        # === TLS バージョン(2026年推奨) ===
        SSLProtocol             -all +TLSv1.2 +TLSv1.3
        SSLCipherSuite          HIGH:!aNULL:!MD5:!3DES
        SSLHonorCipherOrder     off
    
        # === HTTP/2 有効化 ===
        Protocols h2 http/1.1
    
        # === HSTS(推奨) ===
        Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
    
        # === セキュリティヘッダー(推奨) ===
        Header always set X-Content-Type-Options "nosniff"
        Header always set X-Frame-Options "SAMEORIGIN"
        Header always set Referrer-Policy "strict-origin-when-cross-origin"
    
        # === ログ ===
        ErrorLog /var/log/httpd/example.com-ssl-error.log
        CustomLog /var/log/httpd/example.com-ssl-access.log combined
    </VirtualHost>
    
    # HTTP → HTTPS リダイレクト
    <VirtualHost *:80>
        ServerName example.com
        ServerAlias www.example.com
        Redirect permanent / https://example.com/
    </VirtualHost>
    💡 Apache 2.4.8 以降では SSLCertificateChainFile が不要 新しい Apache(2.4.8以降)では、SSLCertificateFile にサーバ証明書と中間CA証明書を結合したファイルを指定する方法も可能です:
    $ cat example.com.crt intermediate.crt > fullchain.crt
    SSLCertificateFile /etc/httpd/ssl/fullchain.crt
  3. 設定ファイルの構文チェック

    Apache を再起動する前に、設定ファイルの構文をチェックします。

    # RHEL/Alma/Rocky 系
    $ sudo apachectl configtest
    # または
    $ sudo httpd -t
    
    # Debian/Ubuntu 系
    $ sudo apache2ctl configtest
    
    # 期待される出力
    Syntax OK
    ❌ エラーが出た場合は再起動しない 構文エラーが残ったまま再起動すると、Apache が停止する可能性があります。必ず「Syntax OK」を確認してから次のステップに進んでください。
  4. Apache の再起動

    # systemd(多くの環境)
    $ sudo systemctl restart httpd    # RHEL/Alma/Rocky
    $ sudo systemctl restart apache2  # Debian/Ubuntu
    
    # 起動状態の確認
    $ sudo systemctl status httpd
  5. 動作確認

    ブラウザで https://example.com にアクセスし、鍵アイコンが表示されることを確認します。

    コマンドラインからも確認できます:

    # 証明書情報の確認
    $ openssl s_client -connect example.com:443 -servername example.com < /dev/null
    
    # 中間CA証明書まで正しくチェーンが揃っているか確認
    $ openssl s_client -connect example.com:443 -showcerts < /dev/null
    ✅ SSL Labs でのテスト SSL Labs SSL Test でセキュリティスコアをチェックできます。A 評価以上になることを目標にしましょう。

🛡️ 推奨セキュリティ設定(2026年版)

より厳格な設定(Mozilla Intermediate相当)
# TLS 1.2 / 1.3 のみ
SSLProtocol             -all +TLSv1.2 +TLSv1.3

# 強力な暗号スイートのみ
SSLCipherSuite          ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder     off
SSLSessionTickets       off

# OCSP Stapling
SSLUseStapling          on
SSLStaplingCache        "shmcb:logs/ssl_stapling(32768)"

# HSTS(最大)
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"

📦 マルチドメイン・複数サイトの場合

1台のサーバで複数の独立したドメインを運用する場合は、SNI(Server Name Indication)を使った VirtualHost を追加します。

<VirtualHost *:443>
    ServerName site1.example.com
    SSLEngine on
    SSLCertificateFile /etc/httpd/ssl/site1.crt
    SSLCertificateKeyFile /etc/httpd/ssl/site1.key
    SSLCertificateChainFile /etc/httpd/ssl/intermediate.crt
    DocumentRoot /var/www/site1
</VirtualHost>

<VirtualHost *:443>
    ServerName site2.example.org
    SSLEngine on
    SSLCertificateFile /etc/httpd/ssl/site2.crt
    SSLCertificateKeyFile /etc/httpd/ssl/site2.key
    SSLCertificateChainFile /etc/httpd/ssl/intermediate.crt
    DocumentRoot /var/www/site2
</VirtualHost>

❓ よくあるご質問

Q. ブラウザに「保護されていません」と表示されます

主な原因と対処:

  • 中間CA証明書のインストール漏れSSLCertificateChainFile を確認
  • コモンネーム不一致 → 証明書の CN/SAN とアクセスURLが一致しているか確認
  • 混在コンテンツ → ページ内に http:// リソースが含まれていないか確認

詳しくは トラブルシューティングガイド をご参照ください。

Q. HTTP から HTTPS へのリダイレクトを設定したい

上記の設定例にあるとおり、ポート 80 の VirtualHost で Redirect permanent / https://example.com/ を設定します。または mod_rewrite を使う方法もあります:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Q. HTTP/2 を有効化したい

Apache 2.4.17 以降で mod_http2 モジュールを有効化し、Protocols h2 http/1.1 を設定するだけです。HTTPS でのみ動作します。

# モジュール有効化
$ sudo a2enmod http2  # Debian/Ubuntu
# または httpd.conf で LoadModule http2_module modules/mod_http2.so

# VirtualHost 内
Protocols h2 http/1.1
Q. 証明書の有効期限を確認したい
# ファイルから確認
$ openssl x509 -in /etc/httpd/ssl/example.com.crt -noout -dates

# サーバから確認
$ echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -dates
Q. 47日ルール時代の運用が大変です

ACME 自動更新の導入を強く推奨します。certbot 使い方 を参照し、当社運営の FujiSSL.jp から ACME ライセンスを取得すれば、証明書の取得から更新までを完全自動化できます。