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_PATH, SSL_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, для использования системных сертификатов, это обычно предпочтительнее: т.е. лучше использовать ca_roots(), который возвращает nothing, чтобы указать, что следует использовать системные сертификаты. Функцию ca_roots_path() следует использовать только при настройке библиотек, которые требуют путь к файлу или каталогу для корневых сертификатов.

Значение по умолчанию, возвращаемое ca_roots_path(), может быть переопределено путем установки переменных окружения JULIA_SSL_CA_ROOTS_PATH, SSL_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.com и gitlab.com). Если переменная окружения SSH_KNOWN_HOSTS_FILES установлена, то ее значение разбивается на пути по символу : (или ; в Windows), и вместо этого возвращается этот вектор путей. Если любой компонент этого вектора пуст, он расширяется до путей по умолчанию для известных хостов.

Пакеты, которые используют ssh_known_hosts_files(), должны в идеале искать совпадающие записи, сравнивая имя хоста и типы ключей, считая первую запись в любом из файлов, которая совпадает, окончательной идентичностью хоста. Если вызывающая сторона не может сравнить тип ключа (например, потому что он был захеширован), то она должна приблизительно следовать вышеуказанному алгоритму, ища все совпадающие записи для хоста в каждом файле: если файл содержит какие-либо записи для хоста, то одна из них должна совпадать; вызывающая сторона должна продолжать искать дальше в файлах известных хостов только в том случае, если в предыдущем файле нет записей для рассматриваемого хоста.

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. корректным URL, начинающимся с proto://
  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. Литерал компонента доменного имени, состоящий из одной или нескольких букв ASCII, цифр, дефисов или подчеркиваний (технически не является частью законного имени хоста, но иногда используется). Литерал компонента доменного имени совпадает только с самим собой.
  2. **, который соответствует нулю или более компонентам доменного имени.
  3. *, который соответствует любой одной компоненте доменного имени.

При сопоставлении имени хоста с списком шаблонов в одной из этих переменных имя хоста разбивается по . на компоненты, и эта последовательность слов сопоставляется с шаблоном: литерал шаблона совпадает точно с одной компонентой имени хоста с этим значением; шаблон * совпадает точно с одной компонентой имени хоста с любым значением; шаблон ** совпадает с любым количеством компонент имени хоста. Например:

  • ** соответствует любому имени хоста
  • **.org соответствует любому имени хоста в верхнем уровне домена .org
  • example.com соответствует только точному имени хоста example.com
  • *.example.com соответствует api.example.com, но не example.com или v1.api.example.com
  • **.example.com соответствует любому домену под example.com, включая само example.com, api.example.com и v1.api.example.com

```

source