証明書の名前不一致と期限切れ: 見分け方
名前の不一致は証明書が別の何かのためのものであることを意味し、期限切れは今は有効でないことを意味します。認証情報をリセットする前に失敗している段階を読んでください。
VPN の二つの障害は利用者の席からは同じに見えるのに、必要な修正は正反対です。名前の不一致は証明書が有効だが別の何かに発行されていることを意味します。有効期限切れのエラーは、証明書がこの瞬間に有効でないことを意味します。どちらもパスワードの問題ではなく、両方の場合で認証情報のリセットが最もよく無駄にされる一時間です。何かに触れる前に、失敗している段階を読んでください。
エラー文こそが診断です
クライアントは、メッセージが簡潔でも、どの検査が失敗したかを教えてくれます。不一致なら、期待したホスト名と見つかった名前を示します。期限切れのエラーなら、有効期間の日付や時刻に触れます。その二つの文は証明書の別の部分を指しています。
それが現れる段階で読みます。ハンドシェイク中の失敗は証明書の問題であり、トンネルが上がった後の失敗は経路または認証情報の問題です。段階を保つことが、調査が無関係な設定へ漂流するのを防ぎます。
失敗が試行ごとに変わるなら、第三の可能性があります。同じ名前の背後に複数のノードがある場合です。
名前の検査: クライアントが比べるもの
クライアントは、期待するよう設定された識別子と、証明書内の名前を比べます。名前は subjectAltName 拡張にあります。プロファイル内の生の IP、証明書が列挙していない別名、単に同じサーバーに解決するだけの名前は、いずれもこの検査で失敗します。正しい機械に届くことは、正しい識別子を提示することと同じではありません。
以前の試行のファイルではなく、サーバーが実際に提示する証明書を調べます。下のコマンドは設定した名前を尋ねるので、応答には実際のクライアントが見る証明書が含まれます。
openssl s_client -connect vpn.example.com:443 -servername vpn.example.com </dev/null 2>/dev/null \
| openssl x509 -noout -subject -dates -ext subjectAltName信頼された発行者の証明書でも、別のサービスのためのものであり得ます。クライアントの名前検査は有効にしておいてください。CA を信頼しても、その CA がこれまで署名したすべての名前が許可されるわけではありません。検査を無効にすると、設定の誤りが露出に変わります。
期限切れ: 誰の時計が読まれているか
有効性は二つのタイムスタンプの組であり、検証者はそれを自分の時計と比べます。時計が狂った端末は、有効な証明書を期限切れまたはまだ有効でないと報告し、修正すべきは証明書ではなく時計です。タイムゾーンの表示の違いは、土台の時刻が誤っていることとは違います。
何かを結論づける前に、クライアント上で証明書の日付を UTC と比べてください。
openssl x509 -in cert.pem -noout -dates
date -u日付が本当に過ぎているなら、発行者を通じて更新します。代替が存在してもまだ有効になっていないなら、それに合わせて時計を動かすのではなく、サポートされた切り替えに従います。証明書に合わせて端末の日付を過去に戻すのは、トンネルのはるか先まで及ぶ結果を伴う判断です。
一方を直すともう一方が現れる理由
検証は一連の検査を実行し、最初の失敗で報告が止まります。名前を直すと、クライアントは次に チェーンが不完全である とか、証明書が期限切れだと告げるかもしれません。それは最初の検査が不要だったという意味ではありません。チェーンに複数の問題があったという意味なので、最初の修正が誤りだった証拠として読むのではなく、二つ目のエラーを想定してください。
複数のノードはこれを悪化させます。負荷分散されたサービスはメンバーごとに異なる証明書を提示することがあるため、二回通って一回失敗する試験は、あなたのクライアントではなく群れについて語っています。診断には相手のアドレスと試行時刻を残してください。
その詳細が、不安定なチケットを再現可能なものに変えます。
新しい接続で証明する
修理の後は、古い接続を再開するのではなく新しい接続を開き、以前失敗していた段階が今は通ることを確認します。次に、トンネルが実際に通信を運んでいることを確認してください。ハンドシェイクの成功は機能する経路ではありません。
正確なエラー段階と証明書の詳細をチケットとともに残します。
その記録が、次の人が証明書の問題でアカウントのパスワードをリセットするのを防ぎます。識別子と有効性は別の問いであり、後者がどう評価されるかについては RFC 5280 が参照です。