OpenSSLコマンドとは
OpenSSL(オープンエスエスエル)コマンドは、証明書、鍵、TLS接続、ハッシュなどを確認・操作するOpenSSLのコマンドライン機能です。一個のコマンドの下へ多数のサブコマンドがあり、入力形式と目的を指定して使います。
SSLはSecure Sockets Layer(セキュア・ソケッツ・レイヤー)、TLSはTransport Layer Security(トランスポート・レイヤー・セキュリティ)です。名称にSSLが残っていても、現在の安全な通信はTLSを使い、古いSSL版を有効にする意味ではありません。
OpenSSLは「証明書ツール」一種類ではありません。読む、変換する、生成する、署名する、検証する、接続する操作をサブコマンドごとに分け、入力と出力を確認してから実行します。

目的からサブコマンドを選ぶ
subject、issuer、validity、SAN、公開鍵、拡張、指紋等を確認します。
鍵構造、暗号化状態、公開鍵抽出、形式変換を行います。
Certificate Signing 要求のsubject、拡張、署名を扱います。
ハッシュ計算と、鍵によるデジタル署名の生成・verifyを分けます。
信頼アンカー、中間CA、目的、時刻等に基づき証明書パスを確認します。
SNI、プロトコル、暗号スイート、ピア証明書、連鎖等を観測します。
証明書は公開情報、秘密鍵は秘密
証明書にはsubject、issuer、validity、Subject Alternative Name(サブジェクト・オルタナティブ・ネーム/SAN)、公開鍵、CA署名等が入ります。通常、公開してよい情報です。
秘密鍵は証明書の公開鍵と対になる秘密で、サーバー認証や署名の根拠です。画面表示、シェル履歴、バックアップ、対応票、チャットへ貼り付けません。複製が疑われたら削除だけでなく、鍵回転と証明書再発行・失効を行います。
CSRは証明書そのものではない
CSRはCertificate Signing Request(サーティフィケート・サイニング・リクエスト)で、公開鍵、希望する名前や拡張、対応秘密鍵による署名を含みます。CAが署名した証明書ではありません。
CSRを作っただけでHTTPSは有効にならず、CAの審査・発行後、証明書と中間連鎖をサーバーへ設定します。CSRへ含めた拡張がすべて発行証明書へ採用されるとも限りません。
形式と内容を分ける
PEMはBase64と境界行で表すテキスト形式、DERはバイナリー形式です。PKCS#12は証明書、連鎖、秘密鍵等をパスワード保護してまとめられます。拡張子だけで中身を断定しません。
変換前に入力種類、暗号化、含まれるオブジェクト数を確認し、別出力ファイルへ書きます。同じファイルを入力と出力へ指定すると、失敗時に元データを失う危険があります。
ハッシュと署名は同じではない
ハッシュはデータから固定長ダイジェストを計算し、同じ内容かを照合する手掛かりです。誰が作ったかは証明しません。デジタル署名は秘密鍵で署名し、対応公開鍵で改ざんと鍵の対応を検証します。
署名が有効でも、その公開鍵を誰に結び付けて信頼するかは証明書・信頼方針の役割です。ハッシュ一致、署名有効、証明書trustedを一つのcheckmarkへまとめません。
s_クライアントはTLS診断用クライアント
s_clientはホスト・ポートへ接続し、TLSハンドシェイク、プロトコルバージョン、暗号スイート suite、サーバー証明書、送られた連鎖等を表示します。仮想ホスティングではSNI用サーバー名を明示しないと、別証明書が返ることがあります。
接続後にテキストプロトコルを手入力できる場合がありますが、完全なHTTPクライアントやメールクライアントではありません。HTTPリダイレクト、コンテンツdecoding、Cookie、アプリケーション状態の確認にはcurl等を使います。
三つの「安全」を分ける
暗号化成立はTLSチャネルができたこと、連鎖検証は証明書が信頼アンカーへつながり時刻・用途等を満たすこと、ホスト名検証は接続先名がSAN等へ一致することです。
s_クライアントはバージョン・選択肢によって自動検証の既定やホスト名確認方法が異なります。「ハンドシェイクが完了した」「Verify戻り値コードが一見成功した」だけでブラウザーと同じ検証をしたと断定せず、verify optionsと期待するホスト名を明示します。
バージョン差と設定ファイルの影響
OpenSSL 1.1.1、3.x等でアルゴリズム、事業者、セキュリティ段階、選択肢、warningが変わります。OSベンダーがパッチや既定方針を追加することもあります。version情報とビルド選択肢を記録します。
システム設定、環境、エンジン・事業者、信頼保存が結果へ影響します。別端末で再現しないときは証明書ファイルだけでなく実行環境も比較します。
OpenSSLコマンドは、証明書・鍵・CSR・ダイジェスト・署名・TLS接続をサブコマンドで扱うtoolboxです。読む操作と生成・変換操作、暗号化と識別情報検証、公開情報と秘密鍵を厳密に分けます。
OpenSSL commandのsubcommand体系:openssl(1)、TLS診断clientのoption・検証:openssl-s_client(1)