NetworkOptions
#
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
.