サポート › 証明書のインストール › Apache
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が有効化済み
📋 手順
-
証明書ファイルの配置
取得した証明書ファイルを所定の場所に配置します。
# 推奨ディレクトリ構成 $ 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/* -
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 -
設定ファイルの構文チェック
Apache を再起動する前に、設定ファイルの構文をチェックします。
# RHEL/Alma/Rocky 系 $ sudo apachectl configtest # または $ sudo httpd -t # Debian/Ubuntu 系 $ sudo apache2ctl configtest # 期待される出力 Syntax OK❌ エラーが出た場合は再起動しない 構文エラーが残ったまま再起動すると、Apache が停止する可能性があります。必ず「Syntax OK」を確認してから次のステップに進んでください。 -
Apache の再起動
# systemd(多くの環境) $ sudo systemctl restart httpd # RHEL/Alma/Rocky $ sudo systemctl restart apache2 # Debian/Ubuntu # 起動状態の確認 $ sudo systemctl status httpd -
動作確認
ブラウザで
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年版)
# 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.1Q. 証明書の有効期限を確認したい
# ファイルから確認
$ 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 -datesQ. 47日ルール時代の運用が大変です
ACME 自動更新の導入を強く推奨します。certbot 使い方 を参照し、当社運営の FujiSSL.jp から ACME ライセンスを取得すれば、証明書の取得から更新までを完全自動化できます。