Сетевые параметры
#
NetworkOptions.ca_roots — Function
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 присвоена пустая строка, остальные переменные игнорируются (будто они не заданы); если остальным переменным присвоены пустые строки, считается, что они не заданы.
#
NetworkOptions.ca_roots_path — Function
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 присвоена пустая строка, остальные переменные игнорируются (будто они не заданы); если остальным переменным присвоены пустые строки, считается, что они не заданы.
#
NetworkOptions.ssh_dir — Function
ssh_dir() :: String
Функция ssh_dir() возвращает расположение каталога, в котором программа ssh хранит или ищет файлы конфигурации. По умолчанию это каталог ~/.ssh, но его можно переопределить, задав переменную среды SSH_DIR.
#
NetworkOptions.ssh_key_pass — Function
ssh_key_pass() :: String
Функция ssh_key_pass() возвращает значение переменной среды SSH_KEY_PASS, если она задана, или nothing в противном случае. В будущем, возможно, будет реализован поиск пароля другими способами, например посредством защищенного системного хранилища, поэтому пакеты, которым нужен пароль для расшифровки закрытого ключа SSH, должны использовать этот API вместо обращения к переменной среды напрямую. Это позволит им автоматически использовать такую возможность после ее добавления.
#
NetworkOptions.ssh_key_name — Function
ssh_key_name() :: String
Функция ssh_key_name() возвращает базовое имя файлов ключей, которые протокол SSH должен использовать при установлении подключения. Обычно эту функцию не требуется вызывать напрямую, и для получения полных путей библиотеки должны использовать функции ssh_key_path и ssh_pub_key_path. Если переменная среды SSH_KEY_NAME задана, эта функция возвращает ее значение; в противном случае она по умолчанию возвращает id_rsa.
#
NetworkOptions.ssh_key_path — Function
ssh_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 — Function
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.
#
NetworkOptions.ssh_known_hosts_files — Function
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(), в идеале должны искать соответствующие записи путем сравнения имени узла и типов ключей и принимать первую запись в любом из соответствующих файлов в качестве удостоверения узла. Если вызывающая сторона не может сравнить тип ключа (например, потому что он хэширован), она должна аппроксимировать описанный выше алгоритм путем поиска всех соответствующих записей для узла в каждом файле: если в файле есть записи для узла, одна из них должна совпадать. Вызывающая сторона должна продолжать поиск в следующих файлах известных узлов, только если в предыдущих файлах нет записей для нужного узла.
#
NetworkOptions.ssh_known_hosts_file — Function
ssh_known_hosts_file() :: String
Функция ssh_known_hosts_file() возвращает один путь к файлу известных узлов SSH, который следует использовать при проверке удостоверений удаленных серверов для установления подключений SSH. Она возвращает первый существующий путь, возвращаемый функцией ssh_known_hosts_files. Вызывающие стороны, которые могут выполнять поиск в более чем одном файле известных узлов, должны вместо этого использовать функцию ssh_known_hosts_files и искать совпадающие узлы во всех возвращаемых файлах, как описано в документации к этой функции.
#
NetworkOptions.verify_host — Function
verify_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 и TLS; -
JULIA_SSH_NO_VERIFY_HOSTS— узлы, которые не должны проверяться для SSH; -
JULIA_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.