Network Options

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

ca_roots() fonksiyonu, çağırana PEM kodlu sertifika otoritesi köklerinin dosyasını veya dizinini nerede bulacağını söyler. Varsayılan olarak, sistemin yerleşik sertifika doğrulama mekanizmasını kullanarak ana bilgisayarları doğrulama yeteneğine sahip yerleşik TLS motorlarına sahip Windows ve macOS gibi sistemlerde, bu fonksiyon nothing döndürecektir. Klasik UNIX sistemlerinde (macOS hariç), kök sertifikaları genellikle /etc dizininde bir dosyada saklanır: mevcut UNIX sisteminin yaygın yerleri aranacak ve bu yollardan biri mevcutsa, o yol döndürülecektir; eğer bu tipik kök sertifika yollarından hiçbiri mevcut değilse, o zaman Julia ile birlikte gelen kök sertifikalarının setinin yolu döndürülecektir.

ca_roots() tarafından döndürülen varsayılan değer, JULIA_SSL_CA_ROOTS_PATH, SSL_CERT_DIR veya SSL_CERT_FILE ortam değişkenlerini ayarlayarak geçersiz kılınabilir; bu durumda bu fonksiyon, ayarlanmış olan bu değişkenlerden ilki ne olursa olsun, her zaman o değişkenin değerini döndürecektir (yol mevcut olup olmadığına bakılmaksızın). JULIA_SSL_CA_ROOTS_PATH boş bir dizeye ayarlandığında, diğer değişkenler göz ardı edilir (sanki ayarlanmamış gibi); diğer değişkenler boş bir dizeye ayarlandığında, ayarlanmamış gibi davranırlar.

source
NetworkOptions.ca_roots_pathFunction
ca_roots_path() :: String

ca_roots_path() fonksiyonu, ca_roots() fonksiyonuna benzer, ancak her zaman PEM kodlu sertifika otoritesi köklerinin bir dosya veya dizin yolunu döndürür. Windows veya macOS gibi dosya sisteminde sistem kök sertifikalarının saklanmadığı bir sistemde çağrıldığında, şu anda Julia ile birlikte paketlenmiş kök sertifikalarının setinin yolunu döndürecektir. (Gelecekte, bu fonksiyon sistemden kök sertifikalarını çıkartıp, yolunun döndürüleceği bir dosyaya kaydedebilir.)

TLS kullanan bir kütüphaneyi sistem sertifikalarını kullanacak şekilde yapılandırmak mümkünse, bu genellikle tercih edilir: yani, sistem sertifikalarının kullanılacağını belirtmek için nothing döndüren ca_roots() kullanmak daha iyidir. ca_roots_path() fonksiyonu yalnızca kök sertifikaları için bir dosya veya dizin yoluna gereksinim duyan kütüphaneleri yapılandırırken kullanılmalıdır.

ca_roots_path() tarafından döndürülen varsayılan değer, JULIA_SSL_CA_ROOTS_PATH, SSL_CERT_DIR veya SSL_CERT_FILE ortam değişkenlerini ayarlayarak geçersiz kılınabilir; bu durumda bu fonksiyon, ayarlanmış olan bu değişkenlerden ilki ne olursa olsun, her zaman o değişkenin değerini döndürecektir (yolun var olup olmadığına bakılmaksızın). JULIA_SSL_CA_ROOTS_PATH boş bir dizeye ayarlandığında, diğer değişkenler göz ardı edilir (sanki ayarlanmamış gibi); diğer değişkenler boş bir dizeye ayarlandığında, ayarlanmamış gibi davranırlar.

source
NetworkOptions.ssh_dirFunction
ssh_dir() :: String

ssh_dir() fonksiyonu, ssh programının yapılandırma dosyalarını sakladığı/baktığı dizinin konumunu döndürür. Varsayılan olarak bu ~/.ssh'dir, ancak bu, SSH_DIR ortam değişkenini ayarlayarak geçersiz kılınabilir.

source
NetworkOptions.ssh_key_passFunction
ssh_key_pass() :: String

ssh_key_pass() fonksiyonu, ayarlanmışsa SSH_KEY_PASS ortam değişkeninin değerini döndürür veya ayarlanmamışsa nothing döndürür. Gelecekte, bu, güvenli sistem depolaması gibi diğer yollarla bir şifre bulma yeteneğine sahip olabilir, bu nedenle bir SSH özel anahtarını şifrelemek için bir şifreye ihtiyaç duyan paketler, ortam değişkenini doğrudan kontrol etmek yerine bu API'yi kullanmalıdır, böylece eklendiklerinde bu yetenekleri otomatik olarak kazanırlar.

source
NetworkOptions.ssh_key_nameFunction
ssh_key_name() :: String

ssh_key_name() fonksiyonu, SSH'nin bir bağlantı kurarken kullanması gereken anahtar dosyalarının temel adını döndürür. Bu fonksiyonun doğrudan çağrılması için genellikle bir neden yoktur ve kütüphaneler genellikle tam yolları almak için ssh_key_path ve ssh_pub_key_path fonksiyonlarını kullanmalıdır. Eğer SSH_KEY_NAME ortam değişkeni ayarlanmışsa, bu fonksiyon onu döndürür; aksi takdirde varsayılan olarak id_rsa döndürür.

source
NetworkOptions.ssh_key_pathFunction
ssh_key_path() :: String

ssh_key_path() fonksiyonu, SSH bağlantıları için kullanılacak SSH özel anahtar dosyasının yolunu döndürür. Eğer SSH_KEY_PATH ortam değişkeni ayarlanmışsa, o değeri döndürecektir. Aksi takdirde, varsayılan olarak şunu döndürür:

joinpath(ssh_dir(), ssh_key_name())

Bu varsayılan değer, SSH_DIR ve SSH_KEY_NAME ortam değişkenlerine bağlıdır.

source
NetworkOptions.ssh_pub_key_pathFunction
ssh_pub_key_path() :: String

ssh_pub_key_path() fonksiyonu, SSH bağlantıları için kullanılacak olan SSH genel anahtar dosyasının yolunu döndürür. Eğer SSH_PUB_KEY_PATH ortam değişkeni ayarlanmışsa, o değeri döndürecektir. Eğer bu ayarlanmamışsa ama SSH_KEY_PATH ayarlanmışsa, o yolun sonuna .pub ekleyerek döndürecektir. Eğer ikisi de ayarlanmamışsa, varsayılan olarak

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

değerini döndürür. Bu varsayılan değer, SSH_DIR ve SSH_KEY_NAME ortam değişkenlerine bağlıdır.

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

ssh_known_hosts_files() fonksiyonu, SSH bağlantıları için uzak sunucuların kimliklerini belirlerken kullanılacak SSH bilinen anahtar dosyalarının yollarının bir vektörünü döndürür. Varsayılan olarak bu fonksiyon şunları döndürür:

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

burada bundled_known_hosts, bu paketle birlikte gelen (github.com ve gitlab.com için bilinen anahtarları içeren) bir bilinen anahtar dosyasının kopyasının yoludur. Ancak, SSH_KNOWN_HOSTS_FILES ortam değişkeni ayarlanmışsa, değeri : karakterine (veya Windows'ta ; karakterine) göre yollar olarak ayrılır ve bu yolların vektörü döndürülür. Bu vektörün herhangi bir bileşeni boşsa, varsayılan bilinen anahtar yollarına genişletilir.

ssh_known_hosts_files() kullanan paketler, ideal olarak, ana bilgisayar adı ve anahtar türlerini karşılaştırarak eşleşen girişleri aramalıdır; eşleşen ilk giriş, ana bilgisayarın kesin kimliği olarak kabul edilir. Çağrıcı anahtar türünü karşılaştıramazsa (örneğin, çünkü hashlenmişse), yukarıdaki algoritmayı, her dosyada bir ana bilgisayar için tüm eşleşen girişleri arayarak yaklaşık olarak uygulamalıdır: bir dosyada bir ana bilgisayar için herhangi bir giriş varsa, bunlardan biri eşleşmelidir; çağrıcı, daha önceki bir dosyada söz konusu ana bilgisayar için hiçbir giriş yoksa, daha fazla bilinen anahtar dosyalarında aramaya devam etmelidir.

source
NetworkOptions.ssh_known_hosts_fileFunction
ssh_known_hosts_file() :: String

ssh_known_hosts_file() fonksiyonu, SSH bağlantıları için uzak sunucuların kimliklerini belirlerken kullanılacak bir SSH bilinen anahtarlar dosyasının tek bir yolunu döndürür. Gerçekten var olan ssh_known_hosts_files tarafından döndürülen ilk yolu döndürür. Birden fazla bilinen anahtarlar dosyasında arama yapabilen çağrıcılar, bunun belgelerinde açıklandığı gibi döndürülen tüm dosyalarda anahtar eşleşmeleri aramak için ssh_known_hosts_files'ı kullanmalıdır.

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

verify_host fonksiyonu, bir hostun kimliğinin güvenli taşıma yöntemleri (TLS veya SSH gibi) üzerinden iletişim kurarken doğrulanıp doğrulanmayacağını çağırana bildirir. url argümanı şunlardan biri olabilir:

  1. proto:// ile başlayan düzgün bir URL
  2. ssh tarzı çıplak bir host adı veya user@ ile önceden tanımlanmış bir host adı
  3. Yukarıdaki gibi bir scp tarzı host, ardından : ve bir yol konumu

Her durumda, host adı kısmı ayrıştırılır ve doğrulama yapılıp yapılmayacağı kararı yalnızca host adına dayanarak verilir, giriş URL'sinin başka bir yönü dikkate alınmaz. Özellikle, URL'nin protokolü önemli değildir (aşağıda daha fazla bilgi).

transport argümanı, sorgunun hangi tür taşıma ile ilgili olduğunu belirtir. Şu anda bilinen değerler SSL/ssl (takma adı TLS/tls) ve SSH/sshdir. Eğer taşıma belirtilmezse, sorgu yalnızca host adının taşıma ne olursa olsun doğrulanmaması gerektiği durumunda true dönecektir.

Host adı, transport sağlanıp sağlanmadığına ve değerine bağlı olarak ilgili ortam değişkenlerindeki host desenleriyle eşleştirilir:

  • JULIA_NO_VERIFY_HOSTS — herhangi bir taşıma için doğrulanmaması gereken hostlar
  • JULIA_SSL_NO_VERIFY_HOSTS — SSL/TLS için doğrulanmaması gereken hostlar
  • JULIA_SSH_NO_VERIFY_HOSTS — SSH için doğrulanmaması gereken hostlar
  • JULIA_ALWAYS_VERIFY_HOSTS — her zaman doğrulanması gereken hostlar

Bu değişkenlerin her birinin değerleri, aşağıdaki sözdizimine sahip host adı desenlerinin virgülle ayrılmış bir listesidir — her desen . ile parçalara ayrılır ve her parça aşağıdakilerden biri olmalıdır:

  1. Bir veya daha fazla ASCII harfi, rakam, tire veya alt çizgi içeren bir literal alan adı bileşeni (teknik olarak yasal bir host adı parçası değildir, ancak bazen kullanılır). Bir literal alan adı bileşeni yalnızca kendisiyle eşleşir.
  2. **, sıfır veya daha fazla alan adı bileşenini eşleştirir.
  3. *, herhangi bir alan adı bileşenini eşleştirir.

Bir host adını bu değişkenlerden birindeki desen listesiyle eşleştirirken, host adı . ile bileşenlere ayrılır ve bu kelime dizisi desenle eşleştirilir: bir literal desen, o değere sahip bir host adı bileşeniyle tam olarak eşleşir; bir * deseni, herhangi bir değere sahip bir host adı bileşeniyle tam olarak eşleşir; bir ** deseni, herhangi bir sayıda host adı bileşeniyle eşleşir. Örneğin:

  • ** herhangi bir host adını eşleştirir
  • **.org .org üst düzey alanındaki herhangi bir host adını eşleştirir
  • example.com yalnızca tam olarak example.com host adını eşleştirir
  • *.example.com api.example.com ile eşleşir ancak example.com veya v1.api.example.com ile eşleşmez
  • **.example.com example.com dahil olmak üzere example.com altındaki herhangi bir alanı, api.example.com ve v1.api.example.com ile eşleştirir
source