Network Options

NetworkOptions.ca_rootsFunction
ca_roots() :: Union{Nothing, String}

ca_roots() 関数は、呼び出し元に PEM エンコードされた証明書機関のルートのファイルまたはディレクトリを見つける場所を教えます。デフォルトでは、Windows や macOS のようなシステムでは、組み込みの TLS エンジンがシステムの組み込み証明書検証メカニズムを使用してホストを検証する方法を知っているため、この関数は nothing を返します。従来の UNIX システム(macOS を除く)では、ルート証明書は通常 /etc のファイルに保存されます。現在の UNIX システムの一般的な場所が検索され、これらのパスのいずれかが存在する場合はそれが返されます。これらの典型的なルート証明書パスのいずれも存在しない場合は、Julia にバンドルされているルート証明書のセットへのパスが返されます。

ca_roots() によって返されるデフォルト値は、JULIA_SSL_CA_ROOTS_PATHSSL_CERT_DIR、または SSL_CERT_FILE 環境変数を設定することで上書きできます。この場合、この関数は設定されているこれらの変数のうち最初のものの値を常に返します(パスが存在するかどうかにかかわらず)。JULIA_SSL_CA_ROOTS_PATH が空文字列に設定されている場合、他の変数は無視されます(設定されていないかのように)。他の変数が空文字列に設定されている場合、それらは設定されていないかのように振る舞います。

source
NetworkOptions.ca_roots_pathFunction
ca_roots_path() :: String

ca_roots_path() 関数は ca_roots() 関数に似ていますが、常に PEM 形式でエンコードされた証明書機関のルートのファイルまたはディレクトリへのパスを返します。Windows や macOS のように、システムのルート証明書がファイルシステムに保存されていないシステムで呼び出された場合、現在は Julia にバンドルされているルート証明書のセットへのパスを返します。(将来的には、この関数がシステムからルート証明書を抽出し、そのパスを返すファイルに保存するかもしれません。)

TLS を使用するライブラリを構成してシステム証明書を使用することが可能な場合は、一般的にそれが好ましいです。つまり、システム証明書を使用することを示すために nothing を返す ca_roots() を使用する方が良いです。ca_roots_path() 関数は、ルート証明書のファイルまたはディレクトリへのパスを 必要とする ライブラリを構成する場合にのみ使用するべきです。

ca_roots_path() によって返されるデフォルト値は、JULIA_SSL_CA_ROOTS_PATHSSL_CERT_DIR、または SSL_CERT_FILE 環境変数を設定することで上書きできます。この場合、この関数は設定されているこれらの変数のうち最初のものの値を常に返します(パスが存在するかどうかにかかわらず)。JULIA_SSL_CA_ROOTS_PATH が空文字列に設定されている場合、他の変数は無視されます(未設定のように)。他の変数が空文字列に設定されている場合、それらは未設定のように振る舞います。

source
NetworkOptions.ssh_dirFunction
ssh_dir() :: String

ssh_dir() 関数は、ssh プログラムが設定ファイルを保持/検索するディレクトリの場所を返します。デフォルトでは ~/.ssh ですが、環境変数 SSH_DIR を設定することで上書きすることができます。

source
NetworkOptions.ssh_key_passFunction
ssh_key_pass() :: String

ssh_key_pass() 関数は、環境変数 SSH_KEY_PASS が設定されている場合はその値を返し、設定されていない場合は nothing を返します。将来的には、セキュアなシステムストレージなど、他の手段でパスワードを見つけることができるようになるかもしれません。そのため、SSH プライベートキーを復号化するためにパスワードが必要なパッケージは、環境変数を直接チェックするのではなく、この API を使用するべきです。そうすることで、追加された際に自動的にそのような機能を得ることができます。

source
NetworkOptions.ssh_key_nameFunction
ssh_key_name() :: String

ssh_key_name() 関数は、SSH が接続を確立する際に使用すべきキー ファイルのベース名を返します。この関数を直接呼び出す理由は通常なく、ライブラリは一般的に ssh_key_path および ssh_pub_key_path 関数を使用してフルパスを取得すべきです。環境変数 SSH_KEY_NAME が設定されている場合、この関数はそれを返します。そうでない場合は、デフォルトで id_rsa を返します。

source
NetworkOptions.ssh_key_pathFunction
ssh_key_path() :: String

ssh_key_path() 関数は、SSH 接続に使用すべき SSH プライベートキー ファイルのパスを返します。SSH_KEY_PATH 環境変数が設定されている場合は、その値を返します。そうでない場合は、次の値を返します。

joinpath(ssh_dir(), ssh_key_name())

このデフォルト値は、SSH_DIR および SSH_KEY_NAME 環境変数に依存します。

source
NetworkOptions.ssh_pub_key_pathFunction
ssh_pub_key_path() :: String

ssh_pub_key_path() 関数は、SSH 接続に使用すべき SSH 公開鍵ファイルのパスを返します。SSH_PUB_KEY_PATH 環境変数が設定されている場合は、その値を返します。それが設定されていないが SSH_KEY_PATH が設定されている場合は、そのパスに .pub サフィックスを追加して返します。どちらも設定されていない場合は、デフォルトで次の値を返します。

joinpath(ssh_dir(), ssh_key_name() * ".pub")

このデフォルト値は、SSH_DIR および SSH_KEY_NAME 環境変数に依存します。

source
NetworkOptions.ssh_known_hosts_filesFunction
ssh_known_hosts_files() :: Vector{String}

ssh_known_hosts_files() 関数は、SSH 接続のためにリモートサーバーのアイデンティティを確立する際に使用すべき SSH 知られたホストファイルのパスのベクターを返します。デフォルトでは、この関数は次のように返します。

[joinpath(ssh_dir(), "known_hosts"), bundled_known_hosts]

ここで bundled_known_hosts は、このパッケージにバンドルされている知られたホストファイルのコピーのパスです(github.comgitlab.com の知られたホストキーを含む)。ただし、環境変数 SSH_KNOWN_HOSTS_FILES が設定されている場合、その値は : 文字(Windows では ;)でパスに分割され、このパスのベクターが代わりに返されます。このベクターのいずれかの要素が空である場合、デフォルトの知られたホストパスに展開されます。

ssh_known_hosts_files() を使用するパッケージは、理想的にはホスト名とキータイプを比較して一致するエントリを探し、いずれかのファイルで一致する最初のエントリをホストの決定的なアイデンティティと見なすべきです。呼び出し元がキータイプを比較できない場合(例えば、ハッシュ化されているため)、上記のアルゴリズムを近似する必要があります。すなわち、各ファイル内のホストに対するすべての一致するエントリを探します:ファイルにホストに対するエントリがある場合、そのうちの1つは一致する必要があります。呼び出し元は、以前のファイルにそのホストに対するエントリがない場合にのみ、さらに知られたホストファイルを検索し続けるべきです。

source
NetworkOptions.ssh_known_hosts_fileFunction
ssh_known_hosts_file() :: String

ssh_known_hosts_file() 関数は、SSH 接続のためにリモートサーバーのアイデンティティを確立する際に使用すべき SSH 知られたホストファイルの単一のパスを返します。実際に存在する ssh_known_hosts_files によって返された最初のパスを返します。複数の知られたホストファイルを確認できる呼び出し元は、代わりに ssh_known_hosts_files を使用し、その関数のドキュメントに記載されているように、返されたすべてのファイルでホストの一致を探すべきです。

source
NetworkOptions.verify_hostFunction
verify_host(url::AbstractString, [transport::AbstractString]) :: Bool

verify_host 関数は、TLS や SSH のような安全なトランスポートを介して通信する際に、ホストのアイデンティティを検証すべきかどうかを呼び出し元に伝えます。url 引数は次のいずれかです:

  1. proto:// で始まる適切な URL
  2. ssh スタイルのベアホスト名または user@ で接頭辞が付けられたホスト名
  3. 上記の scp スタイルのホストに続いて : とパスの位置

各ケースでホスト名部分が解析され、検証するかどうかの決定はホスト名のみに基づいて行われ、入力 URL の他の要素には依存しません。特に、URL のプロトコルは重要ではありません(詳細は以下)。

transport 引数は、クエリがどのトランスポートに関するものであるかを示します。現在知られている値は SSL/ssl(エイリアス TLS/tls)と SSH/ssh です。トランスポートが省略された場合、クエリはホスト名がトランスポートに関係なく検証されるべきでない場合にのみ true を返します。

ホスト名は、transport が提供されているかどうかとその値に応じて、関連する環境変数のホストパターンに対して照合されます:

  • JULIA_NO_VERIFY_HOSTS — どのトランスポートに対しても検証されるべきでないホスト
  • JULIA_SSL_NO_VERIFY_HOSTS — SSL/TLS に対して検証されるべきでないホスト
  • JULIA_SSH_NO_VERIFY_HOSTS — SSH に対して検証されるべきでないホスト
  • JULIA_ALWAYS_VERIFY_HOSTS — 常に検証されるべきホスト

これらの変数の各値は、次の構文を持つホスト名パターンのカンマ区切りリストです — 各パターンは . で分割され、各部分は次のいずれかでなければなりません:

  1. 1 つ以上の ASCII 文字、数字、ハイフン、またはアンダースコアからなるリテラルドメイン名コンポーネント(技術的には合法的なホスト名の一部ではありませんが、時々使用されます)。リテラルドメイン名コンポーネントは自分自身にのみ一致します。
  2. ** は、ゼロまたはそれ以上のドメイン名コンポーネントに一致します。
  3. * は、任意の 1 つのドメイン名コンポーネントに一致します。

これらの変数のパターンリストに対してホスト名を照合する際、ホスト名は . で分割され、コンポーネントのシーケンスがパターンに対して照合されます:リテラルパターンはその値を持つホスト名コンポーネントに正確に一致し、* パターンは任意の値を持つホスト名コンポーネントに正確に一致し、** パターンは任意の数のホスト名コンポーネントに一致します。例えば:

  • ** は任意のホスト名に一致します
  • **.org.org トップレベルドメイン内の任意のホスト名に一致します
  • example.com は正確にホスト名 example.com のみに一致します
  • *.example.comapi.example.com に一致しますが、example.comv1.api.example.com には一致しません
  • **.example.comexample.com 自体、api.example.com、および v1.api.example.com を含む example.com の下の任意のドメインに一致します

```

source