# 構成

> 内蔵の OPC UA サーバーのアプリケーション名、待ち受けポート、ネットワーク名、クライアントの認証と、それらを保存して効かせる「適用」です。

構成は、Connector の OPC UA サーバーのパネルの 2 枚目のカードです。その欄は下書きです。編集できるのはサーバーが待ち受けていない間（オフのときか、オンでも直前の起動が拒まれたとき）で、**適用** が下書きを保存するまで、何も変わりません。サーバーがオフなら、下書きは次にオンにするときのために保たれます（「OPC UA サーバーの構成を保存しました。次に有効化したとき、この構成で起動します。」）。サーバーがオンの間、ボタンは **適用して再起動** になり、その構成でサーバーを立ち上げ直します。カードはボタンの下でそう述べます。「endpoint を編集するにはサーバーを無効化してください。変更は次の起動時に反映されます。」Connector の表示はこのカードを読み、Connector の構成はそれを編集します。サーバーをオフにするのは [コマンドバー](connector-opcua-server#the-commands) の無効化です。

## 欄 {#the-fields}

| 欄 | 何であるか | 値と既定 | 効き方 |
| --- | --- | --- | --- |
| アプリケーション名 | サーバーがクライアントに知らせる名前で、サーバー自身のアプリケーション証明書のサブジェクトでもあります。 | 任意の文字です。既定は **GanterLab OPC UA Server** です。空の名前は既定として保存され、前後の空白は落とされます。 | クライアントには、サーバーのアプリケーション名として見えます。endpoint のアドレスの一部ではありません。ネットワーク名を変えたときと同じく、名前を変えるとサーバー自身の証明書は入れ替わるので、クライアントは新しい証明書を信頼してから接続し直します。このサーバーを設備として読んでいるステーションは読むのをやめ、その [現場設備へのアクセス](driver-opc-ua#equipment-access) に「証明書が変わりました：`<名前>`」を出し、そこで新しい証明書が承認されるまで待ちます。 |
| 待ち受けポート | サーバーが待ち受ける TCP のポートです。 | 1 から 65535 です。既定は **4840** です。数値でない文字は入力の途中で無視され、範囲の外の数は、桁がいくつであっても、欄の下の「待ち受けポートは 1 から 65535 の間で指定してください。」で拒否されて、欄は効いているポートに戻ります。このステーションのほかのサービスのポートと、別のプログラムが押さえているポートは、適用を押したときに拒否されます（下記）。 | クライアントアクセスの接続アドレスの下の 2 つのアドレスを変え、そこで新しいファイアウォールの許可を求めます。Windows の規則はポートに結び付いているからです。 |
| ネットワーク名 | endpoint のアドレスが運ぶ名前です。クライアントが本当に届く名前でステーションに接続できるようにします。クライアントが接続に使う DNS 名や、名前をネットワークが解決できないコンピューターのアドレスです。 | 既定では空で、空はこのコンピューター自身の名前を意味します。それ以外はホスト名です。英字、数字、ハイフン、アンダースコア、ドット、またはアドレスで、前に opc.tcp:// を付けず、ポートもパスも書きません。欄は、フォーカスが外れたときか Enter で確定します。ほかの書き方は欄の下で、ホスト名ではないと言って拒否され、欄は効いている名前に戻ります。 | 次の起動から、クライアントアクセスの接続アドレスの下のネットワークのアドレスがこの名前を運び、サーバー自身の証明書も `localhost` と並んでこの名前を保証します。名前を変えるとその証明書は入れ替わるので、クライアントは新しい証明書を信頼してから接続し直します。 |
| クライアントの認証 | 証明書が信頼されたあと、サーバーがどのセッションを受け入れるかです。 | **匿名**（既定）。資格情報のないセッションを受け入れ、ユーザー名のセッションを拒みます。**ユーザー名とパスワード**。設定した 1 組だけを受け入れ、匿名のセッションを拒みます。 | 次の起動で当たります。サーバーはいつでも両方のトークンの方式を知らせ、セッションが有効になるときに、この選択を守らせます。すべてのセッションを拒むには、サーバーをオフにします。 |
| ユーザー名 | 受け入れるただ 1 つのユーザー名です。 | 1 から 64 文字で、前後の空白は落とされます。編集できるのはユーザー名とパスワードのときだけです。 | パスワードとともに、サインインできるただ 1 つの資格情報です。 |
| パスワード | 受け入れるパスワードです。この欄は書き込み専用で、何が保存されていても空のまま開き、どちらの状態かはラベルが言います。**パスワード（保存済み）** か **パスワード（未保存）** です。**パスワードを表示** の切り替えは、ここで入力したものだけを見せます。 | 8 から 128 文字で、空にはできません。空のままにすると保存済みのパスワードがそのまま残り、保存済みのものがあるときは欄の下の行がそう言います。「空のままにすると、保存済みのパスワードをそのまま使います。」編集できるのはユーザー名とパスワードのときだけです。長さの決まりも欄の下に書かれています。「ユーザー名：1～64 文字。パスワード：8～128 文字。」 | Windows のユーザーと機械に結び付いた暗号文として保存されます（下を参照）。 |

ラジオボタンと 3 つの文字の欄は、サーバーが待ち受けている間（「endpoint を変えるには、OPC UA サーバーを無効化してください。」）、サーバーの別のコマンドが動いている間、そしてユニットが実行中の間、灰色になります。下書きは、パネルが開いたときに保存された構成から種を得て、構成がよそで変わったとき、ユニットがステーションを取ったとき、ランタイムが止まったときに、保存していない編集を落として種を取り直します。パスワードだけは別で、毎回空で種を得ます。保存されたものがブラウザーに渡ることは決してないからです。

## 適用 {#apply}

| コマンド | 何をするか | 灰色になるとき（状況） | 描かれないとき（ロール） |
| --- | --- | --- | --- |
| 適用 / 適用して再起動 | 下書きを確かめ、保存します。これはひとつながりのエンジニアリングの操作です。サーバーがオフのときボタンは **適用** で、「OPC UA サーバーの構成を保存しています…」のあと「OPC UA サーバーの構成を保存しました。次に有効化したとき、この構成で起動します。」です。サーバーがオンのときは **適用して再起動** で、新しい値でサーバーを起動し直します。「新しい構成で OPC UA サーバーを再起動しています…」のあと「OPC UA サーバーの構成を適用しました。`<endpoint>` で待ち受けています。」です。アプリケーション名やネットワーク名を変えると、ステーション自身の証明書が変わります。[OPC UA ドライバー](driver-opc-ua) もこの証明書で機器を読むので、サーバーがオンでもオフでも Connector 全体を再起動し、機器は少しあとに読み直します。それ以外の変更はサーバーだけに関わり、その間も Connector は読み続けます。 | サーバーが待ち受けている間、サーバーの別のコマンドが動いている間、ユニットが実行中の間、そして保存された構成を読み取れなかった間。 | **Connector の構成** を持たないロールのとき。 |

確かめは、何かが保存される前に、この順で起きます。ポート（「待ち受けポートは 1 から 65535 の間で指定してください。」）、今効いているポートと違うポートなら続けて、[リモートアクセス](remote-access) で設定する Web サーバーのポート（「ポート N はすでに Web サーバーが使っています。別のポートを選ぶか、先に Web サーバーを移してください。」）、[エージェント](agent) ページでエージェントアクセスに設定したポート、エージェントアクセスが入でも切でも（「ポート N はすでにエージェントアクセスが使っています。別のポートを選ぶか、先にエージェントアクセスを移してください。」）、Connector のページにある [Modbus サーバー](connector-modbus-server) のポート、サーバーがオンでもオフでも（「ポート N はすでに Modbus サーバーが使っています。別のポートを選ぶか、先に Modbus サーバーを移してください。」）、Connector のページにある [MQTT ブローカー](connector-mqtt-broker) のポート、ブローカーがオンでもオフでも（「ポート N はすでに MQTT ブローカーが使っています。別のポートを選ぶか、先に MQTT ブローカーを移してください。」）、このコンピューターでほかの何かがすでに押さえているポート（「ポート N はこのコンピューターで使用中です。使っているものを閉じるか、別のポートを選んでください。」）で、どれも範囲の外の数と同じく待ち受けポートの欄の下に出て、欄は今効いているポートに戻ります。次にネットワーク名で、これもネットワーク名の欄の下に出て、欄は効いている名前に戻ります。続いてユーザー名とパスワードのときは、ユーザー名（「ユーザー名は 1～64 文字にしてください。」）、欄が空で保つべき保存済みのパスワードもないこと（「パスワードはまだ保存されていないので、適用する前に入力してください。」）、パスワードの長さ（「パスワードは 8～128 文字にしてください。」）、そして空のパスワード（「パスワードは空にできません。」）です。拒否された下書きは、何も保存しません。サーバーが停止したままになる再起動、たいていは適用して再起動が確かめ直さない今効いているポートを別のプログラムが持っている場合ですが、これは「OPC UA サーバーを開始できませんでした。ポート N を確保できていない可能性があります。ログを確認してください。」として伝えられます。構成は保存されているので、原因を直してコマンドバーの再起動を押してください。停止したまま戻るのではなくエラーで失敗した開始は、「OPC UA サーバーのエラー：…」として伝えられます。何が起きても、そのあと欄は保存された値を読み直します。

## 保存された構成を読み取れなかったとき {#when-the-stored-configuration-could-not-be-read}

起動のときに構成のデータベースがサーバーの行を返せなかった場合、カードは通知から始まります。「保存されたサーバーの構成を読み取れませんでした。下の値はこの起動時の既定値です。保存された構成を上書きしないよう、保存は無効にしてあります。診断ログを確認してから、アプリケーションを再起動してください。」その起動の間、サーバーは既定で動き、適用は灰色になり、押しても同じ文がステータスバーに返ります。

## 起動時にサーバーがポートを開けないとき {#when-the-server-cannot-open-its-port-at-start}

ステーションの起動時に、ほかのプログラムがすでに使っている（産業用コンピューターでは 4840 がふさがっていることがよくあります）か、Windows が拒む（Hyper-V、WSL、Docker が予約した範囲の中のポート）ために、サーバーが待ち受けポートを開けないと、停止したままになるのはサーバーだけです。Connector は機器を読み、Logic と記録も続きます。カードが理由を述べます。「サーバーを起動できませんでした」、続いて「ポート 4840 はこのコンピューターで別のアプリがすでに使用しているため、OPC UA サーバーは停止したままです。別の待ち受けポートを選び、サーバーをもう一度開始してください。」です。カードにはボタンが 2 つあります。

| コマンド | 何をするか | 灰色になるとき（状況） | 描かれないとき（ロール） |
| --- | --- | --- | --- |
| ポート N を使用する | N を待ち受けポートとして保存し、そのポートでサーバーを開始します。これはひとつながりのエンジニアリングの操作です。N は、拒まれたポートより上で、待ち受けポートの欄が受け付ける最初のポートです。いまこの機械で空いていて、Web サーバーのポートでも、エージェントアクセスのポートでも、Modbus サーバーのポートでもないものです。そのあとカードはサーバーがどこで待ち受けているかを述べます。これからは OPC UA クライアントがそのポートに接続するからです。「OPC UA サーバーはポート 4841 で待ち受けています。OPC UA クライアントは `<endpoint>` に接続します。」サーバーの開始までに N もふさがっていた場合は、同じカードが次のポートを示して戻ってきます。 | ユニットが実行中の間、ランタイムが停止している間、そして保存された構成を読み取れなかった間。 | **Connector の構成** を持たないロールのとき。 |
| Connector を開く | Connector を OPC UA サーバーの行で開きます。その構成のカードで待ち受けポートを設定します。 | ありません。 | **Connector の表示** を持たないロールのとき。 |

ポートが変わるのは、だれかが「ポート 4841 を使用する」のようなボタンを押したときだけです。サーバーが自分から別のポートに移ることはありません。ポートと関係のない失敗では、開始が示した理由の下に Connector を開く だけが残ります。ステーションがトレイに隠れて起動したときは、Windows の通知がカードのタイトルと理由を繰り返します。通知にはボタンがなく、カードはウィンドウの中で待っています。

## パスワードとその置き場 {#the-password-and-where-it-lives}

パスワードは、どの機器の秘密とも同じく、ユーザーごとの DPAPI の暗号文として保存されます。別の機械や Windows アカウントで開いた構成の [バックアップ](settings-backups) には、それが入っていません。そのときサーバーは、ユーザー名とパスワードが入で、照らすパスワードのない状態で起動し、すべてのサインインを拒み、その理由を記録します（「ユーザー名とパスワードによる認証が有効ですが、この Windows アカウントでは OPC UA サーバーのパスワードを読み取れません … Connector の OPC UA サーバーの構成でもう一度入力してください。」）。ここでもう一度入力してください。保存されたパスワードが逆に戻ることはありません。欄は空で開き、あるかどうかをラベルが言うだけなので、リモートのブラウザーが受け取るページに資格情報は入っていません。平文の HTTP のリモート接続では、このページで入力するユーザー名とパスワードはネットワークを平文で渡ります。[リモートアクセス](remote-access) を参照してください。

## この節がしないこと {#what-this-section-does-not-do}

証明書の信頼は別の確かめで、[クライアントアクセス](connector-opcua-client-access) で決めます。信頼したアプリケーションも、ここで選んだやり方でサインインしなければなりませんし、証明書が信頼されていない相手を、ユーザー名がサインインさせることはありません。ユーザー名とパスワードは 1 組であって名簿ではなく、クライアントごとの権利もありません。アドレスの経路 `/UA/GanterLab` とセキュリティの方式は設定できず、ネットワーク名が持つのは一覧ではなく 1 つの名前なので、endpoint はその名前と、隣に `localhost` だけを知らせます。Logic のアドレス空間は、サーバーのポイントを読み取り専用で見せ、その「Connector を開く」のボタンは、サーバーの行に着地します。
