OpenVPN プロファイルの可搬性:可搬な鍵とプラットフォーム固有オプション
.ovpn ファイルは可搬な識別情報と、一つのクライアントしか理解しないディレクティブを混在させています。障害を証明書のせいにする前に、両者を比較してください。
同じ .ovpn ファイルが一方のクライアントではトンネルを開き、別のクライアントでは起動に失敗し、証明書が最初の容疑者にされがちです。多くの場合、ファイルには一つのエンジンだけが実装するディレクティブが含まれています。プロファイルは特定のクライアントとの契約であり、可搬なスクリプトではありません。
識別情報とともに移動するものと、プラットフォームに属するものを切り分けてください。そうすれば、障害はたいてい自ら名乗ります。
一つのファイル、二つの契約
プロファイルは、CA とクライアント証明書、秘密鍵といった識別情報、リモートエンドポイントやプロトコルといった転送情報、そして DNS の扱いやデバイスオプションといった動作ディレクティブの三種類をまとめています。最初の二つは同じプロトコルをサポートするエンジン間で広く可搬です。三つ目は実装が分かれるところです。ファイル全体を一つの可搬な単位として扱うことが、混乱する障害を生みます。
あるプラットフォームの GUI で動くファイルが、別のプラットフォームのコマンドラインクライアントで自動的に有効とは限りません。両方が OpenVPN であっても、パーサーとオプション群は異なります。だからこそ、インポートの成功は可搬なプロファイルの証拠にはなりません。
可搬な素材とプラットフォームのディレクティブ
識別情報と転送のセクションは保持すべき部分です。ca、cert、key、remote は誰がどこへ接続するかを表し、適合するどのクライアントにとっても同じ意味を持ちます。
動作ディレクティブは比較すべき部分です。たとえば block-outside-dns は Windows の DNS 動作を変えるために存在します。Unix のクライアントはそれをまったく認識しないかもしれません。
送信側ではなく受信側クライアントのオプション一覧を読んでください。OpenVPN 2.6 リファレンスマニュアル がエンジンのオプションを記しており、GUI のインポートダイアログはその一覧ではありません。
証明書より先にパーサーのエラーを読む
未知のオプションを名指すエラーはパーサーの失敗であり、認証の失敗ではありません。接続は TLS にすら到達していないので、証明書を変えても助けになりません。実際のクライアントとバージョンから最初のエラーを読み、そのクライアントが実装できないディレクティブだけを削除または置換してください。ファイルを読み込ませるために証明書やルートのセクションを消すことが、動いていたプロファイルを安全でないものにする道です。
エラーがハンドシェイク、証明書、暗号のいずれかに触れているなら、プロファイルは解析済みで問題は別の場所にあります。
元のファイルは適応版の隣に保管してください。適応版が後で失敗したとき、元のファイルは変更と環境のどちらが動いたかを教える対照になります。
特権は第二の境界
特権はもう一つの境界であり、トンネルデバイスの作成、ルートの登録、秘密鍵の読み取りはいずれもローカルの権限に依存します。root しか読めない鍵ファイルは通常の配備であり、プロファイルの欠陥ではありません。修正は所有者や権限の側にあり、ファイルの側にはありません。
クライアントを sudo で実行すればローカルの権限拒否は解消できますが、バイナリが実装していないディレクティブを追加することはできません。どのユーザーのキーリング、設定パス、ネットワークマネージャーの文脈が適用されるかも変わるため、結果は同じ検証ではありません。
意図して適応する
プロバイダーが別々のプロファイルを公開している場合は、受信側クライアント向けのものを選んでください。他のプラットフォームのファイルを適応させるのは最後の手段です。変更した各オプションの記録と元ファイルの写しが必要です。
識別、経路、DNS を三つの別々の結果として検証してください。認証と経路は通るのに名前解決が壊れるプロファイルは、部分的に適応されたプロファイルであり、動作するものではありません。