Network Options
NetworkOptions.ca_roots — Functionca_roots() :: Union{Nothing, String}ca_roots() 関数は、呼び出し元に PEM エンコードされた証明書機関のルートのファイルまたはディレクトリを見つける場所を教えます。デフォルトでは、Windows や macOS のようなシステムでは、組み込みの TLS エンジンがシステムの組み込み証明書検証メカニズムを使用してホストを検証する方法を知っているため、この関数は nothing を返します。従来の UNIX システム(macOS を除く)では、ルート証明書は通常 /etc のファイルに保存されます。現在の UNIX システムの一般的な場所が検索され、これらのパスのいずれかが存在する場合はそれが返されます。これらの典型的なルート証明書パスのいずれも存在しない場合は、Julia にバンドルされているルート証明書のセットへのパスが返されます。
ca_roots() によって返されるデフォルト値は、JULIA_SSL_CA_ROOTS_PATH、SSL_CERT_DIR、または SSL_CERT_FILE 環境変数を設定することで上書きできます。この場合、この関数は設定されているこれらの変数のうち最初のものの値を常に返します(パスが存在するかどうかにかかわらず)。JULIA_SSL_CA_ROOTS_PATH が空文字列に設定されている場合、他の変数は無視されます(設定されていないかのように)。他の変数が空文字列に設定されている場合、それらは設定されていないかのように振る舞います。
NetworkOptions.ca_roots_path — Functionca_roots_path() :: Stringca_roots_path() 関数は ca_roots() 関数に似ていますが、常に PEM エンコードされた証明書機関のルートのファイルまたはディレクトリへのパスを返します。Windows や macOS のように、システムのルート証明書がファイルシステムに保存されていないシステムで呼び出された場合、現在は Julia にバンドルされているルート証明書のセットへのパスを返します。(将来的には、この関数がシステムからルート証明書を抽出し、そのパスを返すファイルに保存するかもしれません。)
TLS を使用するライブラリを構成してシステム証明書を使用することが可能な場合は、一般的にそれが好ましいです。つまり、システム証明書を使用することを示すために nothing を返す ca_roots() を使用する方が良いです。ca_roots_path() 関数は、ルート証明書のファイルまたはディレクトリへのパスを 必要とする ライブラリを構成する場合にのみ使用するべきです。
ca_roots_path() によって返されるデフォルト値は、JULIA_SSL_CA_ROOTS_PATH、SSL_CERT_DIR、または SSL_CERT_FILE 環境変数を設定することで上書きできます。この場合、この関数は設定されているこれらの変数のうち最初のものの値を常に返します(パスが存在するかどうかにかかわらず)。JULIA_SSL_CA_ROOTS_PATH が空文字列に設定されている場合、他の変数は無視されます(未設定のように);他の変数が空文字列に設定されている場合、それらは未設定のように振る舞います。
NetworkOptions.ssh_dir — Functionssh_dir() :: Stringssh_dir() 関数は、ssh プログラムが設定ファイルを保持/検索するディレクトリの場所を返します。デフォルトでは ~/.ssh ですが、環境変数 SSH_DIR を設定することで上書きすることができます。
NetworkOptions.ssh_key_pass — Functionssh_key_pass() :: Stringssh_key_pass() 関数は、環境変数 SSH_KEY_PASS が設定されている場合はその値を返し、設定されていない場合は nothing を返します。将来的には、セキュアなシステムストレージなど、他の手段でパスワードを見つけることができるようになるかもしれません。そのため、SSH プライベートキーを復号化するためにパスワードが必要なパッケージは、環境変数を直接チェックするのではなく、この API を使用するべきです。そうすることで、追加されたときに自動的にそのような機能を得ることができます。
NetworkOptions.ssh_key_name — Functionssh_key_name() :: Stringssh_key_name() 関数は、SSH が接続を確立する際に使用すべきキー ファイルのベース名を返します。この関数を直接呼び出す理由は通常なく、ライブラリは一般的に ssh_key_path および ssh_pub_key_path 関数を使用してフルパスを取得するべきです。環境変数 SSH_KEY_NAME が設定されている場合、この関数はそれを返します。そうでない場合は、デフォルトで id_rsa を返します。
NetworkOptions.ssh_key_path — Functionssh_key_path() :: Stringssh_key_path() 関数は、SSH 接続に使用すべき SSH プライベートキー ファイルのパスを返します。SSH_KEY_PATH 環境変数が設定されている場合は、その値を返します。そうでない場合は、次の値を返すのがデフォルトです。
joinpath(ssh_dir(), ssh_key_name())このデフォルト値は、SSH_DIR および SSH_KEY_NAME 環境変数に依存します。
NetworkOptions.ssh_pub_key_path — Functionssh_pub_key_path() :: Stringssh_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 環境変数に依存します。
NetworkOptions.ssh_known_hosts_files — Functionssh_known_hosts_files() :: Vector{String}ssh_known_hosts_files() 関数は、SSH 接続のためにリモートサーバーのアイデンティティを確立する際に使用すべき SSH 知られたホストファイルのパスのベクターを返します。デフォルトでは、この関数は次のように返します。
[joinpath(ssh_dir(), "known_hosts"), bundled_known_hosts]ここで bundled_known_hosts は、このパッケージにバンドルされている知られたホストファイルのコピーのパスです(github.com と gitlab.com の知られたホストキーを含む)。ただし、環境変数 SSH_KNOWN_HOSTS_FILES が設定されている場合、その値は : 文字(Windows では ;)でパスに分割され、このパスのベクターが代わりに返されます。このベクターのいずれかのコンポーネントが空である場合、デフォルトの知られたホストパスに展開されます。
ssh_known_hosts_files() を使用するパッケージは、理想的にはホスト名とキータイプを比較して一致するエントリを探し、いずれかのファイルで一致する最初のエントリをホストの決定的なアイデンティティと見なすべきです。呼び出し元がキータイプを比較できない場合(例:ハッシュ化されているため)、各ファイル内のホストに対するすべての一致するエントリを探すことによって上記のアルゴリズムを近似する必要があります:ファイルにホストに対するエントリがある場合、そのうちの1つは一致する必要があります。呼び出し元は、以前のファイルにそのホストに対するエントリがない場合にのみ、さらに知られたホストファイルを検索し続けるべきです。
NetworkOptions.ssh_known_hosts_file — Functionssh_known_hosts_file() :: Stringssh_known_hosts_file() 関数は、SSH 接続のためにリモートサーバーのアイデンティティを確立する際に使用すべき SSH 知られたホストファイルの単一のパスを返します。実際に存在する ssh_known_hosts_files によって返された最初のパスを返します。複数の知られたホストファイルを確認できる呼び出し元は、代わりに ssh_known_hosts_files を使用し、その関数のドキュメントに記載されているように、返されたすべてのファイルでホストの一致を探すべきです。
NetworkOptions.verify_host — Functionverify_host(url::AbstractString, [transport::AbstractString]) :: Boolverify_host 関数は、TLS や SSH のような安全なトランスポートを介して通信する際に、ホストのアイデンティティを検証すべきかどうかを呼び出し元に伝えます。url 引数は次のいずれかです:
proto://で始まる適切な URLsshスタイルのベアホスト名またはuser@で接頭辞が付けられたホスト名- 上記の
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 つ以上の ASCII 文字、数字、ハイフン、またはアンダースコアからなるリテラルドメイン名コンポーネント(技術的には合法的なホスト名の一部ではありませんが、時々使用されます)。リテラルドメイン名コンポーネントは自分自身にのみ一致します。
**は、ゼロまたはそれ以上のドメイン名コンポーネントに一致します。*は、任意の 1 つのドメイン名コンポーネントに一致します。
これらの変数のいずれかのパターンリストに対してホスト名を照合する際、ホスト名は . で分割され、コンポーネントに分けられ、その単語のシーケンスがパターンと照合されます:リテラルパターンはその値を持つホスト名コンポーネントに正確に一致し、* パターンは任意の値を持つホスト名コンポーネントに正確に一致し、** パターンは任意の数のホスト名コンポーネントに一致します。例えば:
**は任意のホスト名に一致します**.orgは.orgトップレベルドメイン内の任意のホスト名に一致しますexample.comは正確にホスト名example.comのみに一致します*.example.comはapi.example.comに一致しますが、example.comやv1.api.example.comには一致しません**.example.comはexample.com自体、api.example.comおよびv1.api.example.comを含むexample.comの下の任意のドメインに一致します