Network Options

NetworkOptions.ca_rootsFunction
ca_roots() :: Union{Nothing, String}

La función ca_roots() indica al llamador dónde, si es que hay algún lugar, encontrar un archivo o directorio de raíces de autoridad de certificación codificadas en PEM. Por defecto, en sistemas como Windows y macOS donde los motores TLS integrados saben cómo verificar hosts utilizando el mecanismo de verificación de certificados integrado del sistema, esta función devolverá nothing. En sistemas UNIX clásicos (excluyendo macOS), los certificados raíz se almacenan típicamente en un archivo en /etc: se buscarán los lugares comunes para el sistema UNIX actual y si uno de estos caminos existe, se devolverá; si ninguno de estos caminos típicos de certificados raíz existe, entonces se devolverá la ruta al conjunto de certificados raíz que están empaquetados con Julia.

El valor predeterminado devuelto por ca_roots() puede ser anulado configurando las variables de entorno JULIA_SSL_CA_ROOTS_PATH, SSL_CERT_DIR o SSL_CERT_FILE, en cuyo caso esta función siempre devolverá el valor de la primera de estas variables que esté configurada (ya sea que la ruta exista o no). Si JULIA_SSL_CA_ROOTS_PATH se establece en la cadena vacía, entonces se ignoran las otras variables (como si no estuvieran configuradas); si las otras variables se establecen en la cadena vacía, se comportan como si no estuvieran configuradas.

source
NetworkOptions.ca_roots_pathFunction
ca_roots_path() :: String

La función ca_roots_path() es similar a la función ca_roots(), excepto que siempre devuelve una ruta a un archivo o directorio de raíces de autoridad de certificación codificadas en PEM. Cuando se llama en un sistema como Windows o macOS, donde los certificados raíz del sistema no se almacenan en el sistema de archivos, actualmente devolverá la ruta al conjunto de certificados raíz que están empaquetados con Julia. (En el futuro, esta función podría extraer los certificados raíz del sistema y guardarlos en un archivo cuya ruta se devolvería).

Si es posible configurar una biblioteca que use TLS para utilizar los certificados del sistema, eso es generalmente preferible: es decir, es mejor usar ca_roots() que devuelve nothing para indicar que se deben usar los certificados del sistema. La función ca_roots_path() solo debe usarse al configurar bibliotecas que requieren una ruta a un archivo o directorio para los certificados raíz.

El valor predeterminado devuelto por ca_roots_path() puede ser anulado configurando las variables de entorno JULIA_SSL_CA_ROOTS_PATH, SSL_CERT_DIR o SSL_CERT_FILE, en cuyo caso esta función siempre devolverá el valor de la primera de estas variables que esté configurada (ya sea que la ruta exista o no). Si JULIA_SSL_CA_ROOTS_PATH se establece en la cadena vacía, entonces se ignoran las otras variables (como si no estuvieran configuradas); si las otras variables se establecen en la cadena vacía, se comportan como si no estuvieran configuradas.

source
NetworkOptions.ssh_dirFunction
ssh_dir() :: String

La función ssh_dir() devuelve la ubicación del directorio donde el programa ssh guarda/busca archivos de configuración. Por defecto, esto es ~/.ssh, pero se puede anular configurando la variable de entorno SSH_DIR.

source
NetworkOptions.ssh_key_passFunction
ssh_key_pass() :: String

La función ssh_key_pass() devuelve el valor de la variable de entorno SSH_KEY_PASS si está configurada o nothing si no está configurada. En el futuro, esto podría ser capaz de encontrar una contraseña por otros medios, como almacenamiento seguro del sistema, por lo que los paquetes que necesiten una contraseña para descifrar una clave privada SSH deberían usar esta API en lugar de verificar directamente la variable de entorno para que obtengan tales capacidades automáticamente cuando se añadan.

source
NetworkOptions.ssh_key_nameFunction
ssh_key_name() :: String

La función ssh_key_name() devuelve el nombre base de los archivos de clave que SSH debería usar al establecer una conexión. Por lo general, no hay razón para que esta función se llame directamente y las bibliotecas deberían usar generalmente las funciones ssh_key_path y ssh_pub_key_path para obtener rutas completas. Si la variable de entorno SSH_KEY_NAME está establecida, entonces esta función devuelve eso; de lo contrario, devuelve id_rsa por defecto.

source
NetworkOptions.ssh_key_pathFunction
ssh_key_path() :: String

La función ssh_key_path() devuelve la ruta del archivo de clave privada SSH que debe usarse para las conexiones SSH. Si la variable de entorno SSH_KEY_PATH está configurada, entonces devolverá ese valor. De lo contrario, por defecto devolverá

joinpath(ssh_dir(), ssh_key_name())

Este valor por defecto, a su vez, depende de las variables de entorno SSH_DIR y SSH_KEY_NAME.

source
NetworkOptions.ssh_pub_key_pathFunction
ssh_pub_key_path() :: String

La función ssh_pub_key_path() devuelve la ruta del archivo de clave pública SSH que debe usarse para las conexiones SSH. Si la variable de entorno SSH_PUB_KEY_PATH está establecida, entonces devolverá ese valor. Si no está establecida pero SSH_KEY_PATH está configurada, devolverá esa ruta con el sufijo .pub añadido. Si ninguna de las dos está establecida, por defecto devolverá

joinpath(ssh_dir(), ssh_key_name() * ".pub")

Este valor por defecto, a su vez, depende de las variables de entorno SSH_DIR y SSH_KEY_NAME.

source
NetworkOptions.ssh_known_hosts_filesFunction
ssh_known_hosts_files() :: Vector{String}

La función ssh_known_hosts_files() devuelve un vector de rutas de archivos de hosts conocidos de SSH que deben ser utilizados al establecer las identidades de los servidores remotos para conexiones SSH. Por defecto, esta función devuelve

[joinpath(ssh_dir(), "known_hosts"), bundled_known_hosts]

donde bundled_known_hosts es la ruta de una copia de un archivo de hosts conocidos que está empaquetado con este paquete (que contiene claves de hosts conocidos para github.com y gitlab.com). Sin embargo, si la variable de entorno SSH_KNOWN_HOSTS_FILES está configurada, su valor se divide en rutas en el carácter : (o en ; en Windows) y este vector de rutas se devuelve en su lugar. Si algún componente de este vector está vacío, se expande a las rutas de hosts conocidos por defecto.

Los paquetes que utilizan ssh_known_hosts_files() deberían idealmente buscar entradas coincidentes comparando el nombre del host y los tipos de clave, considerando la primera entrada en cualquiera de los archivos que coincida como la identidad definitiva del host. Si el llamador no puede comparar el tipo de clave (por ejemplo, porque ha sido hasheada), entonces debe aproximar el algoritmo anterior buscando todas las entradas coincidentes para un host en cada archivo: si un archivo tiene alguna entrada para un host, entonces una de ellas debe coincidir; el llamador solo debe continuar buscando en otros archivos de hosts conocidos si no hay entradas para el host en cuestión en un archivo anterior.

source
NetworkOptions.ssh_known_hosts_fileFunction
ssh_known_hosts_file() :: String

La función ssh_known_hosts_file() devuelve una única ruta de un archivo de hosts conocidos de SSH que debe utilizarse al establecer las identidades de los servidores remotos para conexiones SSH. Devuelve la primera ruta devuelta por ssh_known_hosts_files que realmente existe. Los llamadores que pueden buscar en más de un archivo de hosts conocidos deben usar ssh_known_hosts_files en su lugar y buscar coincidencias de hosts en todos los archivos devueltos, como se describe en la documentación de esa función.

source
NetworkOptions.verify_hostFunction
verify_host(url::AbstractString, [transport::AbstractString]) :: Bool

La función verify_host indica al llamador si se debe verificar la identidad de un host al comunicarse a través de transportes seguros como TLS o SSH. El argumento url puede ser:

  1. una URL adecuada que comience con proto://
  2. un nombre de host desnudo al estilo ssh o un nombre de host precedido por user@
  3. un host al estilo scp como se mencionó anteriormente, seguido de : y una ubicación de ruta

En cada caso, la parte del nombre del host se extrae y la decisión sobre si verificar o no se toma únicamente en función del nombre del host, no de nada más sobre la URL de entrada. En particular, el protocolo de la URL no importa (más abajo).

El argumento transport indica el tipo de transporte sobre el que se realiza la consulta. Los valores actualmente conocidos son SSL/ssl (alias TLS/tls) y SSH/ssh. Si se omite el transporte, la consulta devolverá true solo si el nombre del host no debe ser verificado independientemente del transporte.

El nombre del host se compara con los patrones de host en las variables de entorno relevantes dependiendo de si se proporciona transport y cuál es su valor:

  • JULIA_NO_VERIFY_HOSTS — hosts que no deben ser verificados para ningún transporte
  • JULIA_SSL_NO_VERIFY_HOSTS — hosts que no deben ser verificados para SSL/TLS
  • JULIA_SSH_NO_VERIFY_HOSTS — hosts que no deben ser verificados para SSH
  • JULIA_ALWAYS_VERIFY_HOSTS — hosts que siempre deben ser verificados

Los valores de cada una de estas variables son una lista separada por comas de patrones de nombres de host con la siguiente sintaxis: cada patrón se divide en . en partes y cada parte debe ser una de:

  1. Un componente de nombre de dominio literal que consiste en una o más letras ASCII, dígitos, guiones o guiones bajos (técnicamente no es parte de un nombre de host legal, pero a veces se usa). Un componente de nombre de dominio literal coincide solo consigo mismo.
  2. Un **, que coincide con cero o más componentes de nombre de dominio.
  3. Un *, que coincide con cualquier componente de nombre de dominio.

Al comparar un nombre de host con una lista de patrones en una de estas variables, el nombre del host se divide en . en componentes y esa secuencia de palabras se compara con el patrón: un patrón literal coincide exactamente con un componente de nombre de host con ese valor; un patrón * coincide exactamente con un componente de nombre de host con cualquier valor; un patrón ** coincide con cualquier número de componentes de nombre de host. Por ejemplo:

  • ** coincide con cualquier nombre de host
  • **.org coincide con cualquier nombre de host en el dominio de nivel superior .org
  • example.com coincide solo con el nombre de host exacto example.com
  • *.example.com coincide con api.example.com pero no con example.com o v1.api.example.com
  • **.example.com coincide con cualquier dominio bajo example.com, incluyendo example.com mismo, api.example.com y v1.api.example.com

```

source