Network Options

NetworkOptions.ca_rootsFunction
ca_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.

source
NetworkOptions.ca_roots_pathFunction
ca_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.

source
NetworkOptions.ssh_dirFunction
ssh_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.

source
NetworkOptions.ssh_key_passFunction
ssh_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.

source
NetworkOptions.ssh_key_nameFunction
ssh_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.

source
NetworkOptions.ssh_key_pathFunction
ssh_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.

source
NetworkOptions.ssh_pub_key_pathFunction
ssh_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.

source
NetworkOptions.ssh_known_hosts_filesFunction
ssh_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]

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.

source
NetworkOptions.ssh_known_hosts_fileFunction
ssh_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.

source
NetworkOptions.verify_hostFunction
verify_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 :

  1. une URL correcte commençant par proto://
  2. un nom d'hôte nu de style ssh ou un nom d'hôte précédé de user@
  3. 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 transport
  • JULIA_SSL_NO_VERIFY_HOSTS — hôtes qui ne doivent pas être vérifiés pour SSL/TLS
  • JULIA_SSH_NO_VERIFY_HOSTS — hôtes qui ne doivent pas être vérifiés pour SSH
  • JULIA_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 :

  1. 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.
  2. Un **, qui correspond à zéro ou plusieurs composants de nom de domaine.
  3. 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 exact example.com
  • *.example.com correspond à api.example.com mais pas à example.com ou v1.api.example.com
  • **.example.com correspond à n'importe quel domaine sous example.com, y compris example.com lui-même, api.example.com et v1.api.example.com

```

source