すべての SSL 記事 SSL と証明書

OpenSSLコマンド チートシート

OpenSSLはSSL/TLS証明書のスイスアーミーナイフです。このサイトの他のすべての記事でOpenSSLコマンドを参照しています — このページではそれらすべてを1か所にまとめます。

証明書の確認

証明書の詳細を表示(リモートサーバー)

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -text

有効期限の確認

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -enddate

サブジェクトとSANの確認

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

発行者(どの認証局か)の確認

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -issuer

ローカル証明書ファイルの確認

openssl x509 -in cert.pem -noout -text
openssl x509 -in cert.pem -noout -dates          # 日付のみ
openssl x509 -in cert.pem -noout -subject         # サブジェクトのみ
openssl x509 -in cert.pem -noout -ext subjectAltName  # SANのみ

証明書チェーンの検証

チェーンの完全性を確認(リモート)

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null
# 確認ポイント:
#   Verify return code: 0 (ok)          ← チェーンが完全
#   Verify return code: 21 (unable to verify) ← チェーンが不完全

チェーンファイルに対して証明書を検証

openssl verify -CAfile chain.pem cert.pem
# 期待値: cert.pem: OK

証明書と鍵の一致を確認

# これら2つのハッシュが同一でなければなりません
openssl x509 -noout -modulus -in cert.pem | openssl md5
openssl rsa -noout -modulus -in privkey.pem | openssl md5
# ECDSA鍵の場合:
openssl ec -in privkey.pem -pubout 2>/dev/null | openssl md5
openssl x509 -in cert.pem -pubkey -noout | openssl md5

鍵の生成

ECDSA P-256(推奨)

openssl ecparam -genkey -name prime256v1 -noout -out privkey.pem

RSA 2048

openssl genrsa -out privkey.pem 2048

RSA 4096

openssl genrsa -out privkey.pem 4096

CSRの生成

ECDSA

openssl req -new -key privkey.pem -out csr.pem -subj "/CN=example.com"

SANあり(マルチドメイン)

openssl req -new -key privkey.pem -out csr.pem \
  -subj "/CN=example.com" \
  -addext "subjectAltName=DNS:example.com,DNS:www.example.com"

CSRの検査

openssl req -in csr.pem -noout -text

CSRとは? →

フォーマット間の変換

PEM → PFX(Windows/IIS向け)

openssl pkcs12 -export -out cert.pfx -inkey privkey.pem -in cert.pem -certfile chain.pem

PFX → PEM

openssl pkcs12 -in cert.pfx -clcerts -nokeys -out cert.pem
openssl pkcs12 -in cert.pfx -nocerts -nodes -out privkey.pem
openssl pkcs12 -in cert.pfx -cacerts -nokeys -out chain.pem

PEM → DER

openssl x509 -in cert.pem -outform DER -out cert.der

DER → PEM

openssl x509 -in cert.der -inform DER -outform PEM -out cert.pem

証明書フォーマットの解説 →

TLS接続のデバッグ

ネゴシエートされたTLSバージョンのテスト

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | grep "Protocol"

特定のTLSバージョンのテスト

# Test TLS 1.2
echo | openssl s_client -connect example.com:443 -servername example.com -tls1_2 2>/dev/null | grep "Protocol"

# Test TLS 1.3
echo | openssl s_client -connect example.com:443 -servername example.com -tls1_3 2>/dev/null | grep "Protocol"

完全なハンドシェイクの表示

openssl s_client -connect example.com:443 -servername example.com -msg

サポートされる暗号スイートの確認

# サーバーが受け入れるすべての暗号をリスト
nmap --script ssl-enum-ciphers -p 443 example.com

自己署名証明書の生成(開発用のみ)

openssl req -x509 -newkey ec -pkeyopt ec_paramgen_curve:P-256 \
  -keyout key.pem -out cert.pem -days 365 -nodes \
  -subj "/CN=localhost" \
  -addext "subjectAltName=DNS:localhost,IP:127.0.0.1"

信頼されたlocalhost HTTPSには、代わりにmkcertを使用してください。

別々のファイルからfullchain.pemを作成

cat cert.pem chain.pem > fullchain.pem

順序が重要です:あなたの証明書が最初、次に中間証明書です。

よくある質問

OpenSSLのインストール方法は?

ほとんどのLinuxディストリビューションに含まれています。macOS:brew install openssl。Windows:Git for Windows(OpenSSL含む)かChocolateychoco install openssl)でインストール。

openssl x509openssl s_clientの違いは?

x509はローカルの証明書ファイルを読みます。s_clientはリモートサーバーに接続して証明書を取得します。ライブサーバーの確認にはs_clientを使用し、ディスク上のファイルの検査にはx509を使用してください。

コマンドが「unable to load certificate」と表示される理由

ファイルがPEM(テキスト)ではなくDERエンコード(バイナリ)の可能性があります。コマンドに-inform DERを追加してください:

openssl x509 -in cert.der -inform DER -noout -text

関連記事

デプロイ 2026-05-07
SSL証明書の有効期限を確認する方法
ブラウザ、OpenSSL、オンラインツールでSSL証明書の有効期限を確認。予期しない有効期限切れとダウンタイムを防ぐための監視設定方法も解説します。
SSL と証明書 2026-05-07
SSL証明書フォーマット:PEM、PFX、DERの違い
PEM、PFX/PKCS#12、DERの証明書フォーマットを解説。サーバーに必要なフォーマットとOpenSSLでの変換方法を紹介します。
SSL と証明書 2026-05-07
証明書チェーンの仕組み
ブラウザがルートCAから中間CAを経てあなたの証明書までの証明書チェーンを通じてSSL証明書を検証する仕組みを解説。チェーンの順序の重要性と「証明書が信頼されていない」エラーの修正方法も紹介します。
SSL と証明書 2026-05-07
ECC vs RSA証明書:どちらを選ぶべきか?
ECC(ECDSA P-256)とRSA(2048/4096ビット)の証明書を比較。ECC鍵はより小さく高速です。GetHTTPSがECCをデフォルトにする理由とRSAが依然として意味を持つ場合を解説します。
ブラウザで無料 SSL 証明書を取得
インストール不要、アカウント不要。秘密鍵は常にデバイスに残ります。
証明書を取得