2つのOpenVPN証明書が1つのCCDポリシーを共有できる理由
シリアル番号はVPNのユーザー名ではありません。次の証明書に署名する前に、サーバーが実際に対応づけるコモンネームを、受け入れ済みのすべてのCAで予約してください。
CAは、同じ OpenVPN クライアント固有の設定を拾う二つの証明書に署名でき、どちらの証明書にもそれを警告するものはありません。シリアル番号は異なり、鍵も異なり、組織単位が変われば完全なサブジェクトも異なります。サーバーは一つの名前でクライアントごとのポリシーを解決し、その名前だけが一意である必要があります。
サーバーが解決するのは名前であり、シリアル番号ではない
通常の証明書検索では、サーバーは提示された証明書からコモンネームを取り、その名前のclient-config-dirエントリを探します。シリアル番号は検索に入りません。コモンネーム以外のすべてのフィールドが異なる二つの証明書が同じファイルに着地するため、二番目の接続は最初のデバイスの固定アドレスとプッシュされたルートを引き継ぎます。
こうしてCA側の一意性チェックは通るのに、VPNは依然として衝突します。二つのチェックは別の問いに答えています。
何かに署名する前に、実効名をどうするかを決め、それが属するデバイスやアカウントのそばに記録してください。名前・所有者・目的・証明書フィンガープリントの登録簿があれば、ほとんどの導入をカバーできます。それがなければ、証明書アーカイブがどの名前がどのデバイスのものかを示す唯一の記録になり、そのアーカイブは正規の交換と既存の名前を主張する二台目のデバイスを区別できません。名前は登録時に、二人の運用者が同時に発行できるならロックの下で予約してください。
マッピングが実際に使う名前
通常の証明書検索はコモンネームを使います。認証済みユーザー名をマッピングするように設定されたサーバーは代わりにその値を使うため、証明書のコモンネームはポリシー選択には無関係になります。実行中の設定を読んで、どちらのマッピングが有効か確認してください。
両方のマッピングが同時に存在することがあり、その場合の結果はサーバーがそれらを解決する順序に依存します。コモンネームにフォールバックするユーザー名マッピングは、登録簿が承認していない証明書を静かに受け入れます。実効名は、それを生成したコマンドのそばに書いておき、次の運用者が順序を再発見しなくて済むようにしてください。マッピングごとに一つの接続を試すのは安上がりで、疑問を決着させます。
マッピングが生み出すものが、予約すべき値です。CAでコモンネームを予約しながら、サーバーがユーザー名をキーにしているのは、間違ったものを予約しています。
二つのCAが同じ名前を承認できる
VPNサービスは複数の発行機関を信頼でき、各機関はどの名前が使われているかについて独自の考えを持ちます。二つの独立したCAが異なるデバイスに対して同じコモンネームを承認でき、サーバーは苦情なく両方の証明書を受け入れます。信頼バンドルのすべての発行機関を棚卸しし、普段発行している機関だけに限らないでください。障害は二番目の機関の証明書が使われた最初の時点で現れます。
同じ推論は、コモンネームの一意性ではなく完全なサブジェクトの一意性を強制するCAにも当てはまります。
コモンネームを共有しながら組織単位が異なる二つの証明書はサブジェクトが異なるため、CAは競合を報告せず、サーバーは一つの名前を見ます。デフォルトを仮定するのではなく、発行ツールが実際に使う設定を確認してください。openssl caのドキュメントにおけるunique_subjectの扱いがそこでの該当するつまみであり、そのツールのラッパーは通常、置き換えるのではなくそれを公開します。
更新は予約された再利用であり、衝突ではない
名前を保つ更新は意図的な再利用であり、登録簿はそれを平易な言葉で記すべきです。古いフィンガープリントと新しいものを一つの名前の下に記録すれば、レビュー担当者は交換と乗っ取りを区別できます。サーバーのduplicate-cnオプションは無関係で、同時セッションを規定するものであり、登録や名前の予約ではありません。両方の資格情報がいつまで存在できるか、古いものがいつ受け入れられなくなるかを決めてください。
交換品を引き渡す前に、証明書に実際に何が入っているかを読み返してください。サブジェクト行こそサーバーがマッピングするフィールドで、ファイル名が何を示唆していても変わりません。
openssl x509 -in device42.crt -noout -subject -serial -issuer失効は通常、証明書を発行者ごとに識別するため、一つのシリアル番号を引退させても同じ機関から正しく発行された交換品には影響しません。まさにその挙動がクリーンな更新に必要であり、失効が二台のデバイスで共有された名前を片付けられない理由でもあります。ユーザーがデバイスを見る前に、テスト接続で実効ポリシー名と割り当てアドレスを検証してください。その後、古い資格情報を意図的に引退させ、そうしたことを記録してください。