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, для использования системных сертификатов, это обычно предпочтительнее: т.е. лучше использовать 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
установлена в пустую строку, то другие переменные игнорируются (как если бы они не были установлены); если другие переменные установлены в пустую строку, они ведут себя так, как будто не установлены.
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()
, должны в идеале искать совпадающие записи, сравнивая имя хоста и типы ключей, считая первую запись в любом из файлов, которая совпадает, окончательной идентичностью хоста. Если вызывающая сторона не может сравнить тип ключа (например, потому что он был захеширован), то она должна приблизительно следовать вышеуказанному алгоритму, ища все совпадающие записи для хоста в каждом файле: если файл содержит какие-либо записи для хоста, то одна из них должна совпадать; вызывающая сторона должна продолжать искать дальше в файлах известных хостов только в том случае, если в предыдущем файле нет записей для рассматриваемого хоста.
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
может быть:
- корректным URL, начинающимся с
proto://
- именем хоста в стиле
ssh
или именем хоста, предваряемымuser@
- хостом в стиле
scp
, как указано выше, за которым следует:
и путь
В каждом случае часть с именем хоста извлекается, и решение о том, следует ли проверять или нет, принимается исключительно на основе имени хоста, а не на основе других аспектов входного URL. В частности, протокол URL не имеет значения (подробнее ниже).
Аргумент transport
указывает, о каком виде транспорта идет речь. В настоящее время известные значения — это SSL
/ssl
(псевдоним TLS
/tls
) и SSH
/ssh
. Если транспорт опущен, запрос вернет true
только в том случае, если имя хоста не должно быть проверено независимо от транспорта.
Имя хоста сопоставляется с шаблонами хостов в соответствующих переменных окружения в зависимости от того, указан ли transport
и каково его значение:
JULIA_NO_VERIFY_HOSTS
— хосты, которые не должны проверяться для любого транспортаJULIA_SSL_NO_VERIFY_HOSTS
— хосты, которые не должны проверяться для SSL/TLSJULIA_SSH_NO_VERIFY_HOSTS
— хосты, которые не должны проверяться для SSHJULIA_ALWAYS_VERIFY_HOSTS
— хосты, которые всегда должны проверяться
Значения каждой из этих переменных представляют собой список шаблонов имен хостов, разделенных запятыми, с следующим синтаксисом — каждый шаблон разбивается по .
на части, и каждая часть должна быть одной из:
- Литерал компонента доменного имени, состоящий из одной или нескольких букв ASCII, цифр, дефисов или подчеркиваний (технически не является частью законного имени хоста, но иногда используется). Литерал компонента доменного имени совпадает только с самим собой.
**
, который соответствует нулю или более компонентам доменного имени.*
, который соответствует любой одной компоненте доменного имени.
При сопоставлении имени хоста с списком шаблонов в одной из этих переменных имя хоста разбивается по .
на компоненты, и эта последовательность слов сопоставляется с шаблоном: литерал шаблона совпадает точно с одной компонентой имени хоста с этим значением; шаблон *
совпадает точно с одной компонентой имени хоста с любым значением; шаблон **
совпадает с любым количеством компонент имени хоста. Например:
**
соответствует любому имени хоста**.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
```