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() :: String
ca_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() :: String
ssh_dir()
関数は、ssh
プログラムが設定ファイルを保持/検索するディレクトリの場所を返します。デフォルトでは ~/.ssh
ですが、環境変数 SSH_DIR
を設定することで上書きすることができます。
NetworkOptions.ssh_key_pass
— Functionssh_key_pass() :: String
ssh_key_pass()
関数は、環境変数 SSH_KEY_PASS
が設定されている場合はその値を返し、設定されていない場合は nothing
を返します。将来的には、セキュアなシステムストレージなど、他の手段でパスワードを見つけることができるようになるかもしれません。そのため、SSH プライベートキーを復号化するためにパスワードが必要なパッケージは、環境変数を直接チェックするのではなく、この API を使用するべきです。そうすることで、追加された際に自動的にそのような機能を得ることができます。
NetworkOptions.ssh_key_name
— Functionssh_key_name() :: String
ssh_key_name()
関数は、SSH が接続を確立する際に使用すべきキー ファイルのベース名を返します。この関数を直接呼び出す理由は通常なく、ライブラリは一般的に ssh_key_path
および ssh_pub_key_path
関数を使用してフルパスを取得すべきです。環境変数 SSH_KEY_NAME
が設定されている場合、この関数はそれを返します。そうでない場合は、デフォルトで id_rsa
を返します。
NetworkOptions.ssh_key_path
— Functionssh_key_path() :: String
ssh_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() :: 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
環境変数に依存します。
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() :: String
ssh_known_hosts_file()
関数は、SSH 接続のためにリモートサーバーのアイデンティティを確立する際に使用すべき SSH 知られたホストファイルの単一のパスを返します。実際に存在する ssh_known_hosts_files
によって返された最初のパスを返します。複数の知られたホストファイルを確認できる呼び出し元は、代わりに ssh_known_hosts_files
を使用し、その関数のドキュメントに記載されているように、返されたすべてのファイルでホストの一致を探すべきです。
NetworkOptions.verify_host
— Functionverify_host(url::AbstractString, [transport::AbstractString]) :: Bool
verify_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
の下の任意のドメインに一致します
```