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

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

このガイドでは、NginxにSSL証明書をインストールする手順を解説します。ファイルのアップロードからTLS設定の最適化、一般的なエラーのトラブルシューティングまでをカバーします。GetHTTPS、Certbot、その他のソースからの証明書で動作します。

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

前提条件

  • Nginxがインストールされ、HTTPでサイトを提供中(ポート80)
  • root/sudoアクセス
  • 証明書ファイル — 2つ必要:
    • fullchain.pem — 証明書 + 中間チェーン(結合済み)
    • privkey.pem — 秘密鍵

どのファイルがどれ? GetHTTPSは4つのファイルを提供します。Nginxには fullchain.pemcert.pem ではない)と privkey.pem が必要です。cert.pem だけを使うと、ブラウザが信頼チェーンを検証できず「不完全なチェーン」エラーが発生します。証明書フォーマットの説明 →

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

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

ステップ2:HTTPSサーバーブロックを設定

推奨の完全設定:

# HTTPSサーバーブロック
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name example.com www.example.com;

    # ─── 証明書ファイル ───────────────────────
    ssl_certificate     /etc/ssl/gethttps/fullchain.pem;
    ssl_certificate_key /etc/ssl/gethttps/privkey.pem;

    # ─── TLSプロトコルと暗号スイート ────────────────
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers off;

    # ─── セッションキャッシュ(パフォーマンス) ───────────
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 1d;
    ssl_session_tickets off;

    # ─── OCSPステープリング(高速な検証) ─────
    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout 5s;

    # ─── セキュリティヘッダー ────────────────────────
    add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-Frame-Options "SAMEORIGIN" always;

    # ─── サイト ───────────────────────────────
    root /var/www/html;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

# HTTPリダイレクトブロック
server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

ステップ3:設定をテスト

sudo nginx -t

ステップ4:Nginxをリロード

sudo systemctl reload nginx

restart ではなく reload を使用してください。 リロードは既存の接続を切断せずに新しい設定を適用します — ダウンタイムゼロです。

ステップ5:証明書を検証

echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null \
  | openssl x509 -noout -subject -issuer -dates -ext subjectAltName

SSL Labs Server Testで包括的なレポートを取得。目標:グレードAまたはA+。

更新方法

証明書の有効期限が近づいたら(Let’s Encryptの90日中60日目):

  1. GetHTTPSから新しい証明書を取得
  2. ファイルを置き換え:
    sudo cp new-fullchain.pem /etc/ssl/gethttps/fullchain.pem
    sudo cp new-privkey.pem /etc/ssl/gethttps/privkey.pem
  3. Nginxをリロード:
    sudo systemctl reload nginx

更新の完全ガイド →

トラブルシューティング

”SSL: error:0B080074” — 証明書ルーチンエラー

原因: fullchain.pem ではなく cert.pem を使用しています。

修正: ssl_certificatefullchain.pem に変更:

ssl_certificate /etc/ssl/gethttps/fullchain.pem;  # cert.pemではない

“cannot load certificate key” — 鍵を読み込めない

原因: 秘密鍵ファイルのパーミッションが間違っている、ファイルが破損している、または鍵が証明書と一致しません。

ls -la /etc/ssl/gethttps/privkey.pem
sudo openssl ec -in /etc/ssl/gethttps/privkey.pem -check

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

原因: 混合コンテンツ — ページが http:// で画像、スクリプト、CSSを読み込んでいます。

修正: DevTools(F12)→ コンソール → 「Mixed Content」警告を確認。すべてのリソースURLを https:// または相対パスに更新してください。

よくある質問

HTTPとHTTPSで別々の設定ファイルが必要ですか?

いいえ。両方の server ブロック(ポート80と443)を同じファイルに入れてください。HTTPブロックはHTTPSへのリダイレクトのためだけに存在します。

ssl on; を使うべきですか?

いいえ。ssl on; は非推奨です。代わりに listen 443 ssl; を使用してください。

reloadrestart の違いは?

reload は既存の接続を切断せずに新しい設定を適用します。restart はプロセスを停止・開始し、すべての接続を一時的に切断します。証明書の変更には常に reload を使用してください。

NginxはECDSA/ECC証明書に対応していますか?

はい。Nginxは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
ApacheにSSL証明書をインストールする方法
mod_sslを使用したApacheへのSSL証明書インストールのステップバイステップガイド。ファイルアップロード、VirtualHost設定、TLSベストプラクティス、HSTS、HTTPリダイレクト、5つの一般的なエラーのトラブルシューティングを解説します。
デプロイ 2026-05-07
混合コンテンツ警告の修正方法
混合コンテンツはHTTPSページがHTTP経由でリソースを読み込むときに発生します。混合コンテンツエラーの検出と修正方法を解説し、クリーンなパドロックアイコンを取得する方法を紹介します。
ブラウザで無料 SSL 証明書を取得
インストール不要、アカウント不要。秘密鍵は常にデバイスに残ります。
証明書を取得