OpenVPN client-config-dir:ファイル名と証明書CNの違い
CCD のファイル名は証明書のコモンネームから決まりますが、その対応づけが有効な場合はユーザー名から決まります。名前を変更する前に両方の規則を確認してください。
クライアントが接続する前から、ノート PC 上のファイル名(nuc.ovpn)と、サーバーが資格情報から導き出す ID という二つの名前が関わっています。client-config-dir の検索で使われるのは後者の ID です。クライアント側でプロファイル名を変えても、サーバー側のファイルに .conf を付けても、サーバーが開くファイルは変わりません。
有用な比較は「どの名前を使ったか」ではなく「サーバーがどの規則を適用しているか」であり、証明書による認証とユーザー名/パスワードによる認証では同じログインから異なる実効名が生まれることがあるからです。
プロファイル名と証明書のコモンネーム
既定の証明書ベースの構成では、サーバーは X.509 のコモンネームを取り、client-config-dir の中からまったく同じ名前のファイルを探します。証明書が tester を示す nuc.ovpn というプロファイルは /etc/openvpn/server/ccd/tester に解決されます。クライアントのファイル名は計算に一切入りません。食い違いが潜む最初の場所がここです。
したがって、丁寧に命名したプロファイルばかりのディレクトリでも毎回外すことがあります。ファイルは subject でも、メールアドレスでも、GUI に表示される名前でも照合されず、照合されるのはコモンネームの文字列です。
大文字と小文字を区別するファイルシステムでは、Tester と tester は別のファイルであり、開かれるのは片方だけです。クライアントが実際に提示する証明書からコモンネームを確認してください — 手元のメモの写しからではなく。
username-as-common-name は規則を反転させる
サーバーが username-as-common-name 付きでユーザー名/パスワード認証を実行すると、この検索では認証済みのユーザー名が証明書のコモンネームを置き換えます。
二つのケースを直接比べてください:証明書の ID ではファイルは証明書に従いパスワード変更は無関係、ユーザー名の ID ではファイルはログイン名に従い証明書の再発行は無関係です。サーバーが置き換えるフィールドこそが、名前を合わせる基準です。新しい CN で再発行された証明書は検索先を黙って変えてしまい、古い CCD ファイルは正しく見えるままディスクに残ります。
混在した構成も存在し、混乱の多くはそこから始まります。あるサービスブロックが置き換えを有効にし、別のブロックが有効にしていなければ、実効名はどちらのインスタンスが接続を処理したかで決まります。全体設定のファイルが適用されると決めつけず、有効な構成を確認してください。上流の server-options のリファレンスに、名前付きファイルの検索と任意のフォールバックが記載されています。
サーバーが読み取るもの、黙って飛ばすもの
ファイルが選ばれるかどうかは二つの小さな違いで決まります。一つ目は付け足された拡張子です。二つ目は名前に紛れ込んだ文字です。
OpenVPN は探す名前に .conf を付け足さないため、tester.conf は tester に一致しません。拡張子を隠すエディタでは、一覧では正しく見えるのに決して一致しないファイルが残ることがあります。
一致するファイルがない場合、サーバーは DEFAULT という名前のファイルにフォールバックできます。したがって一部の設定が届いたことは、クライアント別ファイルが使われた証拠になりません。割り当てられたアドレスやプッシュされたルートを、クライアント別ファイルが生み出すはずの内容と比べてください。三つ目の関門は権限です — サーバーは特権を手放した後にファイルを開くため、root シェルから読めても何の証明にもなりません。
正しいファイル名は中身を保証しない
選択と中身は別々の失敗です。正しいファイルが開かれても、そのディレクティブはそのクライアントに対して有効でなければなりません。
ifconfig-push はトポロジが実際に使えるアドレスを割り当てる必要があり、iroute はそのクライアントの背後のルーティングされたサブネットにしか意味がありません。
一つの ID、複数の端末
同じコモンネームを提示する二台のノート PC は同じファイルを選び、同じクライアント固有の設定を受け取ります。別々のアドレスや別々の失効が必要なら、必要なのは別々の ID であり、一つのファイルの二つの複製ではありません。
比較されるのは、ID を共有することと端末ごとに証明書を一枚発行することです。共有は管理が簡単で失効は粗くなり、端末ごとの証明書は準備の手間が増える代わりに、無効化できるきれいな単位を与えます。