RTSPS および RTSP over TLS のデバッグ: カメラ証明書、ハンドシェイクの失敗、およびセキュア ストリーム エラー

証明書エラー、TLS ハンドシェイクの問題、安全なカメラ ストリーミング、認証、メディア トランスポートなど、RTSPS および RTSP over TLS の障害をトラブルシューティングする方法。

rtsps, rtsp TLS, カメラ証明書, TLSハンドシェイク, セキュアRTSP, IPカメラのトラブルシューティング

RTSP のトラブルシューティングはすでに階層化されており、URL、認証、SDP、トランスポート、RTP、RTCP、コーデック、ネットワーク パスがすべて重要です。 RTSPS は、RTSP 会話が開始される前に別のレイヤーを追加します。 TLS ハンドシェイクが失敗すると、クライアントは OPTIONSDESCRIBESETUP、または PLAY に到達しません。ユーザーには、「接続できません」、「TLS ハンドシェイクに失敗しました」、「証明書の検証に失敗しました」、「セキュア RTSP が機能していません」、または単に黒い画面が表示されます。

「RTSPS カメラが動作していません」、「RTSP over TLS 証明書エラー」、「カメラの TLS ハンドシェイクが失敗しました」、「安全な RTSP ストリームが失敗しました」などの検索は、通常、すでに通常の RTSP を試しているチームからのもので、安全なトランスポートが壊れているのか、証明書が信頼されていないのか、カメラが古い TLS バージョンのみをサポートしているのか、または TLS が成功した後にストリームが失敗したのかを知る必要があります。

正しい質問は「プレーヤーはビデオを開きますか?」ではないため、RTSP インスペクターはこのワークフローで役立ちます。正しい質問は、「安全な接続は完了しましたか、RTSP は開始されましたか、認証は完了しましたか、SDP はメディアを記述しましたか、そして RTP は到着しましたか?」です。

RTSPS は、URL が異なるだけの RTSP ではありません

プレーン RTSP では、次のような URL がよく使用されます。

rtsp://camera.example.com:554/stream1

RTSPS commonly uses:

rtsps://camera.example.com:322/stream1

またはベンダー固有のセキュア RTSP ポート。 RTSP メソッドが送信される前に、クライアントとカメラは TLS ハンドシェイクを実行します。このハンドシェイクでは、プロトコル バージョン、暗号スイート、証明書 ID、および安全なセッション キーをネゴシエートします。

TLS 層に障害が発生した場合、RTSP ステータス コードは表示されません。 「401 Unauthorized」、「404 Not Found」、または SDP は表示されません。 RTSP が存在する前にストリームが失敗します。

RTSPS 障害の一般的な原因

RTSPS エラーは通常、次のグループに分類されます。

  • カメラは実際には RTSPS を有効にしません。
  • セキュア RTSP ポートが間違っているか、ブロックされています。
  • カメラ証明書は自己署名です。
  • 証明書のホスト名が URL と一致しません。
  • 証明書の有効期限が切れています。
  • クライアントは最新の TLS を必要としますが、カメラは古い TLS のみをサポートします。
  • カメラにはクライアント証明書が必要です。
  • プロキシまたはファイアウォールが TLS を誤って終了させます。
  • TLS は成功しますが、その後 RTSP 認証が失敗します。
  • RTSP は成功しますが、「PLAY」後のメディア転送は失敗します。

最後の 2 つは重要です。 TLS が成功しても、通常の RTSP の問題は依然として存在します。セキュアな RTSP 接続は、ダイジェスト認証、不正な SDP、ブロックされた RTP、H.265 サポート、パケット損失、または SPS/PPS の欠落により失敗する可能性があります。

証明書名が一致しません

多くのカメラには、ユーザーが実際に入力したアドレスと一致しない証明書が付属しています。ユーザーが IP アドレスで接続している間、証明書はデバイスのホスト名に発行できます。

rtsps://192.168.1.50/stream1

Self-signed camera certificates

  • certificate verify failed
  • unknown ca
  • self signed certificate
  • unable to get local issuer certificate

Old TLS versions and cipher suites

Useful questions:

RTSPS authentication still matters

RTSP/1.0 401 Unauthorized
WWW-Authenticate: Digest realm="IP Camera", nonce="..."

つまり、安全な接続は問題ありませんが、RTSP ログイン層には依然として認証情報が必要です。ユーザーは証明書認証とカメラ アカウント認証を混同することがよくあります。それらは別々のものです。

正しい順序は次のとおりです。

  1. TCP接続が開きます。
  2. TLS ハンドシェイクは成功します。
  3. RTSP リクエストは TLS 内で送信されます。
  4. 必要に応じて、RTSP 認証を使用してカメラがチャレンジします。
  5. クライアントは RTSP 認証を送信します。
  6. カメラは SDP を返します。
  7. クライアントはメディア トラックをセットアップします。
  8. メディア パケットが到着します。

RTSPS 後のメディア転送

RTSPS は RTSP 制御を保護しますが、メディア転送の詳細はカメラとクライアントによって異なります。一部の展開では、TLS で保護された RTSP 接続上でインターリーブ RTP を使用します。メディア輸送を個別に交渉する人もいます。ファイアウォールと NAT の動作は依然として重要な場合があります。

「DESCRIBE」、「SETUP」、「PLAY」が成功してもビデオが表示されない場合は、証明書を追い続けないでください。メディア配信を検査します。

  • RTP パケットは RTSP 接続上でインターリーブされますか?
  • カメラは UDP ポートをネゴシエートしましたか?
  • RTP シーケンス番号は増加していますか?
  • SDP は H.264 または H.265 を宣言しますか?
  • コーデック構成レコードは存在しますか?
  • RTCP には損失またはジッターが表示されますか?

TLS の成功は 1 つのチェックポイントにすぎません。

RTSPS のデバッグ チェックリスト

この順序を使用します。

  1. カメラが RTSPS をサポートしていることを確認し、セキュア RTSP ポートを特定します。
  2. そのポートへの TCP 接続が成功することを確認します。
  3. 障害が TLS ハンドシェイクの前に発生したか、後に発生したかを判断します。
  4. 証明書の信頼性、有効期限、およびホスト名の一致を検査します。
  5. TLS バージョンと暗号の互換性を確認します。
  6. クライアント証明書が必要かどうかを確認します。
  7. TLS が機能したら、RTSP の OPTIONSDESCRIBESETUP、および PLAY を検査します。
  8. RTSP 認証を TLS とは別に検査します。
  9. SDP のコーデックとトラックを検査します。
  10. 再生開始後に RTP と RTCP を検査します。

最終診断

RTSPS 障害は、TLS 障害と RTSP 障害に分割する必要があります。ハンドシェイクが失敗した場合は、証明書、信頼、ホスト名、TLS バージョン、暗号スイート、およびセキュア ポートをデバッグします。ハンドシェイクが成功した場合は、通常のストリームの場合とまったく同じように RTSP をデバッグします (認証、SDP、トランスポート、RTP、RTCP、およびコーデックの証拠)。

RTSP Inspector は診断を階層化して行うため、このワークフローに適合します。安全なカメラ ストリーミングは、単に「プレーヤーがビデオを開く」または「プレーヤーが失敗する」だけではありません。これは監視可能なプロトコル ステップのチェーンであり、修正は最初の壊れたリンクに依存します。

<!-- rtsp-localized-evidence-foundation-v1:start -->

「RTSPS および RTSP over TLS のデバッグ: カメラ証明書、ハンドシェイクの失敗、およびセキュア ストリーム エラー」を再現可能に検証する手順

結論から言うと、黒画面や一つのステータスコードだけでは障害の所在を証明できません。信頼できる診断では、RTSP の要求と応答、合意した Transport、有効な Session、その後の RTP シーケンス番号、タイムスタンプ、RTCP の証拠を一つの時系列につなげます。「RTSPS および RTSP over TLS のデバッグ: カメラ証明書、ハンドシェイクの失敗、およびセキュア ストリーム エラー」では表示症状に近い層から調べますが、制御、ネットワーク、デコーダーの問題を混同しないよう同じ記録時刻を使います。

カメラ、ファイアウォール、VMS の設定を変える前に、小さな基準テストを作ります。パスワードを除いた RTSP URL、時刻、パス、要求した Transport、サーバー応答、最初のメディアパケット到着時刻を記録してください。機器が対応する場合は UDP と TCP interleaved を別々に試します。パス、認証情報、Transport を同時に変えると、二回目の成功がどの変更によるものか分かりません。

確認層 保存する証拠 判断する質問
RTSP メソッド、状態、ヘッダー、CSeq、Session サーバーはその操作を受理したか
SDP control、payload type、clock rate、codec 期待するトラックが記述されているか
Transport client_port、server_port、interleaved 両端が同じ経路を使うか
RTP SSRC、sequence、timestamp、marker メディア単位が説明可能な順序で届くか
RTCP sender report、CNAME、BYE 時計、識別子、終了を追跡できるか
Decoder SPS/PPS/VPS、packetization mode 受信 payload で初期化できるか

「メディアが届かない」と「届くが復号できない」を分けます。SETUP と PLAY が成功しても RTP がなければ、UDP 経路、NAT、ファイアウォール、Transport 応答を調べます。シーケンスの穴は損失または並べ替えを示します。連続した RTP があるのに映像がなければ、payload type、clock rate、フレーム境界、H.264 または H.265 のパラメーターへ進みます。この境界はプレーヤーの一般的なエラーより有用です。

引用できる短い回答はどう書きますか

三文で、最後に成功した操作、最初に失敗した証拠、二つの原因を分ける次の試験を書きます。例は「DESCRIBE、SETUP、PLAY は成功した。通知されたクライアントポートに RTP が届かない。TCP interleaved の再試験で UDP 遮断とメディアパス誤りを分ける」です。応答やパケットなしにカメラやネットワーク全体を原因と断定しません。

再現に必要な最小情報は何ですか

OPTIONS、DESCRIBE、SETUP、PLAY、SDP、Transport 応答、秘密を除いた Session を保存します。RTP は SSRC、最初と最後のシーケンス、clock rate、欠落数、収録時間を記録します。VLC や別 VMS の成否は差分試験として有用ですが、成功したクライアントが全規則を正しく扱う証明ではありません。

サーバーとクライアントのどちらを調べますか

メソッド拒否、存在しない control URL、不一致 Transport、説明のない SSRC や時計変更はサーバー側を調べます。期限切れ nonce の再利用、Session 欠落、ポートを開かない UDP 要求、各 NAL 終端を access unit 終端とみなす処理はクライアント側を調べます。中間経路の問題では、各結論にパケットと時刻を添えます。

報告前に何を確認しますか

新しい接続で再試験し、二つの時系列を最初の相違点まで比較します。パスワードと完全な Authorization 値を削除し、結論を CSeq、sequence、timestamp に結び付けます。関連する RTSP ガイドで周辺手順を確認し、RTSP Inspectorで RTSP ストリームをローカルに試験してください。カメラ映像を公開サービスへアップロードする必要はありません。

<!-- rtsp-localized-evidence-foundation-v1:end -->