すべてのデプロイガイド デプロイ

ApacheにSSL証明書をインストールする方法

このガイドでは、mod_sslを使用したApache HTTP ServerへのSSL証明書のインストール手順を解説します。GetHTTPS、Certbot、その他のCAからの証明書で動作します。

証明書をまだ持っていない場合は、5分で無料で取得できます

前提条件

  • **Apache 2.4+**がインストールされHTTPでサイトを提供中(ポート80)
  • root/sudoアクセス
  • 証明書ファイル — Apacheには3つの別々のファイルが必要:
    • cert.pem — 証明書(エンドエンティティのみ)
    • privkey.pem — 秘密鍵
    • chain.pem — 中間CA証明書チェーン

なぜ3つのファイル? Nginx(単一の fullchain.pem を使用)と異なり、Apacheは伝統的に証明書とチェーンを別々のファイルとして必要とします。Apache 2.4.8以降は SSLCertificateFilefullchain.pem を使用し、SSLCertificateChainFile を省略できます。

ステップ1:証明書ファイルをアップロード

sudo mkdir -p /etc/ssl/gethttps
sudo cp cert.pem chain.pem privkey.pem /etc/ssl/gethttps/
sudo chmod 600 /etc/ssl/gethttps/privkey.pem
sudo chmod 644 /etc/ssl/gethttps/cert.pem /etc/ssl/gethttps/chain.pem
sudo chown root:root /etc/ssl/gethttps/*

ステップ2:必要なApacheモジュールを有効化

# Debian/Ubuntu
sudo a2enmod ssl
sudo a2enmod headers
sudo a2enmod rewrite
sudo systemctl restart apache2

# CentOS/RHEL/Amazon Linux
sudo yum install mod_ssl
sudo systemctl restart httpd

ステップ3:HTTPS VirtualHostを設定

# ─── HTTPSサーバー ────────────────────────────
<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com

    SSLEngine on
    SSLCertificateFile      /etc/ssl/gethttps/cert.pem
    SSLCertificateKeyFile   /etc/ssl/gethttps/privkey.pem
    SSLCertificateChainFile /etc/ssl/gethttps/chain.pem

    SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
    SSLHonorCipherOrder off
    SSLCompression off

    SSLUseStapling on
    SSLStaplingCache "shmcb:/var/run/apache2/ssl_stapling(128000)"

    Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
    Header always set X-Content-Type-Options "nosniff"

    DocumentRoot /var/www/html
</VirtualHost>

# ─── HTTPリダイレクト ───────────────────────────
<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    Redirect permanent / https://example.com/
</VirtualHost>

ステップ4:サイトを有効化してテスト

# Debian/Ubuntu
sudo a2ensite yourdomain-ssl.conf
sudo apachectl configtest
sudo systemctl reload apache2

# CentOS/RHEL
sudo apachectl configtest
sudo systemctl reload httpd

トラブルシューティング

”AH02572: Failed to configure certificate” — 鍵の不一致

証明書と秘密鍵が対応していません:

openssl x509 -noout -modulus -in /etc/ssl/gethttps/cert.pem | md5sum
openssl rsa -noout -modulus -in /etc/ssl/gethttps/privkey.pem | md5sum

2つのハッシュが同一でなければなりません。

ブラウザが「証明書が信頼されていない」と表示

中間チェーンが欠落しています。SSLCertificateChainFilechain.pem を指していることを確認してください。

HTTPSは動作するが「保護されていない通信」

混合コンテンツ — ページが http:// でリソースを読み込んでいます。DevTools → コンソールで http:// URLを修正してください。

よくある質問

fullchain.pem を別々のcert + chainの代わりに使えますか?

はい、Apache 2.4.8以降で可能です。SSLCertificateFile /path/to/fullchain.pem を使用し、SSLCertificateChainFile ディレクティブを完全に削除してください。

Apacheの再起動とリロードのどちらが必要ですか?

リロードsystemctl reload)で十分で、ダウンタイムゼロです。再起動(systemctl restart)はすべてのアクティブ接続を切断します。証明書の変更には常にリロードを使用してください。

ApacheはECDSA証明書に対応していますか?

はい。Apache 2.4以降はECDSAをRSAと同じように扱います。同じディレクティブ、同じファイルフォーマットです。GetHTTPSはデフォルトでECDSA P-256を生成します。

関連記事

はじめに 2026-05-08
無料SSL証明書の取得方法(ステップバイステップガイド)
Let's Encryptから5分で無料のSSL証明書を取得。ソフトウェアのインストール不要、アカウント作成不要。4つの方法、両方のチャレンジタイプ、6つのプラットフォームへのインストール、トラブルシューティングを網羅した完全ガイドです。
デプロイ 2026-05-07
HTTPからHTTPSへリダイレクトする方法
サーバーサイドリダイレクトですべてのトラフィックをHTTPSに強制。Nginx、Apache、.htaccessでの301パーマネントリダイレクトの設定例を紹介します。
デプロイ 2026-05-08
NginxにSSL証明書をインストールする方法
NginxにSSL証明書をインストールするステップバイステップガイド。ファイルアップロード、完全なサーバーブロック設定、TLSベストプラクティス、HTTP/2、HSTS、リダイレクト設定、テスト、6つの一般的なエラーのトラブルシューティングを解説します。
デプロイ 2026-05-07
混合コンテンツ警告の修正方法
混合コンテンツはHTTPSページがHTTP経由でリソースを読み込むときに発生します。混合コンテンツエラーの検出と修正方法を解説し、クリーンなパドロックアイコンを取得する方法を紹介します。
ブラウザで無料 SSL 証明書を取得
インストール不要、アカウント不要。秘密鍵は常にデバイスに残ります。
証明書を取得