Network Options
NetworkOptions.ca_roots
— Functionca_roots() :: Union{Nothing, String}
La fonction ca_roots()
indique à l'appelant où, le cas échéant, trouver un fichier ou un répertoire de racines d'autorité de certification encodées en PEM. Par défaut, sur des systèmes comme Windows et macOS où les moteurs TLS intégrés savent comment vérifier les hôtes en utilisant le mécanisme de vérification de certificat intégré du système, cette fonction renverra nothing
. Sur les systèmes UNIX classiques (à l'exception de macOS), les certificats racines sont généralement stockés dans un fichier dans /etc
: les emplacements courants pour le système UNIX actuel seront recherchés et si l'un de ces chemins existe, il sera renvoyé ; si aucun de ces chemins de certificats racines typiques n'existe, alors le chemin vers l'ensemble des certificats racines qui sont fournis avec Julia est renvoyé.
La valeur par défaut renvoyée par ca_roots()
peut être remplacée en définissant les variables d'environnement JULIA_SSL_CA_ROOTS_PATH
, SSL_CERT_DIR
ou SSL_CERT_FILE
, auquel cas cette fonction renverra toujours la valeur de la première de ces variables qui est définie (que le chemin existe ou non). Si JULIA_SSL_CA_ROOTS_PATH
est défini sur une chaîne vide, alors les autres variables sont ignorées (comme si elles n'étaient pas définies) ; si les autres variables sont définies sur une chaîne vide, elles se comportent comme si elles n'étaient pas définies.
NetworkOptions.ca_roots_path
— Functionca_roots_path() :: String
La fonction ca_roots_path()
est similaire à la fonction ca_roots()
sauf qu'elle renvoie toujours un chemin vers un fichier ou un répertoire de racines d'autorité de certification encodées en PEM. Lorsqu'elle est appelée sur un système comme Windows ou macOS, où les certificats racines système ne sont pas stockés dans le système de fichiers, elle renverra actuellement le chemin vers l'ensemble des certificats racines qui sont fournis avec Julia. (À l'avenir, cette fonction pourrait plutôt extraire les certificats racines du système et les enregistrer dans un fichier dont le chemin serait renvoyé.)
S'il est possible de configurer une bibliothèque qui utilise TLS pour utiliser les certificats système, cela est généralement préférable : c'est-à-dire qu'il est mieux d'utiliser ca_roots()
qui renvoie nothing
pour indiquer que les certificats système doivent être utilisés. La fonction ca_roots_path()
ne doit être utilisée que lors de la configuration de bibliothèques qui exigent un chemin vers un fichier ou un répertoire pour les certificats racines.
La valeur par défaut renvoyée par ca_roots_path()
peut être remplacée en définissant les variables d'environnement JULIA_SSL_CA_ROOTS_PATH
, SSL_CERT_DIR
ou SSL_CERT_FILE
, auquel cas cette fonction renverra toujours la valeur de la première de ces variables qui est définie (que le chemin existe ou non). Si JULIA_SSL_CA_ROOTS_PATH
est défini sur une chaîne vide, alors les autres variables sont ignorées (comme si elles n'étaient pas définies) ; si les autres variables sont définies sur une chaîne vide, elles se comportent comme si elles n'étaient pas définies.
NetworkOptions.ssh_dir
— Functionssh_dir() :: String
La fonction ssh_dir()
renvoie l'emplacement du répertoire où le programme ssh
conserve/recherche les fichiers de configuration. Par défaut, il s'agit de ~/.ssh
, mais cela peut être remplacé en définissant la variable d'environnement SSH_DIR
.
NetworkOptions.ssh_key_pass
— Functionssh_key_pass() :: String
La fonction ssh_key_pass()
renvoie la valeur de la variable d'environnement SSH_KEY_PASS
si elle est définie ou nothing
si elle ne l'est pas. À l'avenir, il se peut qu'elle puisse trouver un mot de passe par d'autres moyens, tels que le stockage sécurisé du système, donc les packages qui ont besoin d'un mot de passe pour déchiffrer une clé privée SSH devraient utiliser cette API au lieu de vérifier directement la variable d'environnement afin de bénéficier automatiquement de telles capacités lorsqu'elles sont ajoutées.
NetworkOptions.ssh_key_name
— Functionssh_key_name() :: String
La fonction ssh_key_name()
renvoie le nom de base des fichiers de clé que SSH doit utiliser lors de l'établissement d'une connexion. Il n'y a généralement aucune raison d'appeler cette fonction directement et les bibliothèques devraient généralement utiliser les fonctions ssh_key_path
et ssh_pub_key_path
pour obtenir des chemins complets. Si la variable d'environnement SSH_KEY_NAME
est définie, cette fonction renvoie celle-ci ; sinon, elle renvoie id_rsa
par défaut.
NetworkOptions.ssh_key_path
— Functionssh_key_path() :: String
La fonction ssh_key_path()
renvoie le chemin du fichier de clé privée SSH qui doit être utilisé pour les connexions SSH. Si la variable d'environnement SSH_KEY_PATH
est définie, elle renverra cette valeur. Sinon, elle renvoie par défaut
joinpath(ssh_dir(), ssh_key_name())
Cette valeur par défaut dépend à son tour des variables d'environnement SSH_DIR
et SSH_KEY_NAME
.
NetworkOptions.ssh_pub_key_path
— Functionssh_pub_key_path() :: String
La fonction ssh_pub_key_path()
renvoie le chemin du fichier de clé publique SSH qui doit être utilisé pour les connexions SSH. Si la variable d'environnement SSH_PUB_KEY_PATH
est définie, elle renverra cette valeur. Si cela n'est pas défini mais que SSH_KEY_PATH
est défini, elle renverra ce chemin avec le suffixe .pub
ajouté. Si aucun des deux n'est défini, elle renvoie par défaut
joinpath(ssh_dir(), ssh_key_name() * ".pub")
Cette valeur par défaut dépend à son tour des variables d'environnement SSH_DIR
et SSH_KEY_NAME
.
NetworkOptions.ssh_known_hosts_files
— Functionssh_known_hosts_files() :: Vector{String}
La fonction ssh_known_hosts_files()
renvoie un vecteur de chemins des fichiers de hôtes connus SSH qui doivent être utilisés lors de l'établissement des identités des serveurs distants pour les connexions SSH. Par défaut, cette fonction renvoie
[joinpath(ssh_dir(), "known_hosts"), bundled_known_hosts]
où bundled_known_hosts
est le chemin d'une copie d'un fichier d'hôtes connus qui est inclus avec ce package (contenant des clés d'hôtes connus pour github.com
et gitlab.com
). Si la variable d'environnement SSH_KNOWN_HOSTS_FILES
est définie, sa valeur est cependant divisée en chemins sur le caractère :
(ou sur ;
sous Windows) et ce vecteur de chemins est renvoyé à la place. Si un composant de ce vecteur est vide, il est étendu aux chemins d'hôtes connus par défaut.
Les packages qui utilisent ssh_known_hosts_files()
devraient idéalement rechercher des entrées correspondantes en comparant le nom d'hôte et les types de clés, considérant la première entrée dans l'un des fichiers qui correspond comme étant l'identité définitive de l'hôte. Si l'appelant ne peut pas comparer le type de clé (par exemple, parce qu'il a été haché), il doit approximer l'algorithme ci-dessus en recherchant toutes les entrées correspondantes pour un hôte dans chaque fichier : si un fichier a des entrées pour un hôte, alors l'une d'elles doit correspondre ; l'appelant ne doit continuer à rechercher d'autres fichiers d'hôtes connus que s'il n'y a pas d'entrées pour l'hôte en question dans un fichier antérieur.
NetworkOptions.ssh_known_hosts_file
— Functionssh_known_hosts_file() :: String
La fonction ssh_known_hosts_file()
renvoie un seul chemin d'un fichier d'hôtes connus SSH qui doit être utilisé lors de l'établissement des identités des serveurs distants pour les connexions SSH. Elle renvoie le premier chemin retourné par ssh_known_hosts_files
qui existe réellement. Les appelants qui peuvent consulter plus d'un fichier d'hôtes connus devraient utiliser ssh_known_hosts_files
à la place et rechercher des correspondances d'hôtes dans tous les fichiers retournés comme décrit dans la documentation de cette fonction.
NetworkOptions.verify_host
— Functionverify_host(url::AbstractString, [transport::AbstractString]) :: Bool
La fonction verify_host
indique à l'appelant si l'identité d'un hôte doit être vérifiée lors de la communication via des transports sécurisés comme TLS ou SSH. L'argument url
peut être :
- une URL correcte commençant par
proto://
- un nom d'hôte nu de style
ssh
ou un nom d'hôte précédé deuser@
- un hôte de style
scp
comme ci-dessus, suivi de:
et d'un emplacement de chemin
Dans chaque cas, la partie nom d'hôte est extraite et la décision de vérifier ou non est prise uniquement sur la base du nom d'hôte, sans tenir compte d'autre chose concernant l'URL d'entrée. En particulier, le protocole de l'URL n'a pas d'importance (plus de détails ci-dessous).
L'argument transport
indique le type de transport dont il est question. Les valeurs actuellement connues sont SSL
/ssl
(alias TLS
/tls
) et SSH
/ssh
. Si le transport est omis, la requête renverra true
uniquement si le nom d'hôte ne doit pas être vérifié, quel que soit le transport.
Le nom d'hôte est comparé aux modèles d'hôte dans les variables d'environnement pertinentes en fonction de la présence de transport
et de sa valeur :
JULIA_NO_VERIFY_HOSTS
— hôtes qui ne doivent pas être vérifiés pour aucun transportJULIA_SSL_NO_VERIFY_HOSTS
— hôtes qui ne doivent pas être vérifiés pour SSL/TLSJULIA_SSH_NO_VERIFY_HOSTS
— hôtes qui ne doivent pas être vérifiés pour SSHJULIA_ALWAYS_VERIFY_HOSTS
— hôtes qui doivent toujours être vérifiés
Les valeurs de chacune de ces variables sont une liste séparée par des virgules de modèles de noms d'hôtes avec la syntaxe suivante — chaque modèle est divisé sur .
en parties et chaque partie doit être l'une des suivantes :
- Un composant de nom de domaine littéral composé d'une ou plusieurs lettres ASCII, chiffres, tirets ou traits de soulignement (techniquement pas partie d'un nom d'hôte légal, mais parfois utilisé). Un composant de nom de domaine littéral ne correspond qu'à lui-même.
- Un
**
, qui correspond à zéro ou plusieurs composants de nom de domaine. - Un
*
, qui correspond à n'importe quel composant de nom de domaine.
Lors de la correspondance d'un nom d'hôte avec une liste de modèles dans l'une de ces variables, le nom d'hôte est divisé sur .
en composants et cette séquence de mots est comparée au modèle : un modèle littéral correspond exactement à un composant de nom d'hôte avec cette valeur ; un modèle *
correspond exactement à un composant de nom d'hôte avec n'importe quelle valeur ; un modèle **
correspond à n'importe quel nombre de composants de nom d'hôte. Par exemple :
**
correspond à n'importe quel nom d'hôte**.org
correspond à n'importe quel nom d'hôte dans le domaine de premier niveau.org
example.com
correspond uniquement au nom d'hôte exactexample.com
*.example.com
correspond àapi.example.com
mais pas àexample.com
ouv1.api.example.com
**.example.com
correspond à n'importe quel domaine sousexample.com
, y comprisexample.com
lui-même,api.example.com
etv1.api.example.com
```