Network Options

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

ca_roots() 함수는 호출자에게 PEM 인코딩된 인증 기관 루트의 파일 또는 디렉토리를 찾을 수 있는 위치를 알려줍니다. 기본적으로 Windows 및 macOS와 같은 시스템에서는 내장 TLS 엔진이 시스템의 내장 인증서 검증 메커니즘을 사용하여 호스트를 검증하는 방법을 알고 있기 때문에 이 함수는 nothing을 반환합니다. 고전 UNIX 시스템(맥OS 제외)에서는 루트 인증서가 일반적으로 /etc의 파일에 저장됩니다: 현재 UNIX 시스템의 일반적인 위치가 검색되며, 이러한 경로 중 하나가 존재하면 반환됩니다. 이러한 일반적인 루트 인증서 경로가 존재하지 않으면 Julia와 함께 번들된 루트 인증서 세트의 경로가 반환됩니다.

ca_roots()가 반환하는 기본 값은 JULIA_SSL_CA_ROOTS_PATH, SSL_CERT_DIR 또는 SSL_CERT_FILE 환경 변수를 설정하여 재정의할 수 있으며, 이 경우 이 함수는 설정된 변수 중 첫 번째 변수의 값을 항상 반환합니다(경로가 존재하는지 여부에 관계없이). JULIA_SSL_CA_ROOTS_PATH가 빈 문자열로 설정되면 다른 변수는 무시됩니다(설정되지 않은 것처럼); 다른 변수가 빈 문자열로 설정되면 설정되지 않은 것처럼 동작합니다.

source
NetworkOptions.ca_roots_pathFunction
ca_roots_path() :: String

ca_roots_path() 함수는 ca_roots() 함수와 유사하지만 항상 PEM 인코딩된 인증 기관 루트의 파일 또는 디렉토리 경로를 반환합니다. Windows 또는 macOS와 같이 시스템 루트 인증서가 파일 시스템에 저장되지 않는 시스템에서 호출될 경우, 현재 Julia와 함께 번들된 루트 인증서 세트의 경로를 반환합니다. (앞으로 이 함수는 시스템에서 루트 인증서를 추출하고 그 경로를 반환하는 파일에 저장할 수 있습니다.)

TLS를 사용하는 라이브러리를 구성할 수 있는 경우 시스템 인증서를 사용하는 것이 일반적으로 바람직합니다. 즉, 시스템 인증서를 사용해야 함을 나타내기 위해 nothing을 반환하는 ca_roots()를 사용하는 것이 더 좋습니다. ca_roots_path() 함수는 루트 인증서에 대한 파일 또는 디렉토리 경로가 필수인 라이브러리를 구성할 때만 사용해야 합니다.

ca_roots_path()가 반환하는 기본 값은 JULIA_SSL_CA_ROOTS_PATH, SSL_CERT_DIR 또는 SSL_CERT_FILE 환경 변수를 설정하여 재정의할 수 있으며, 이 경우 이 함수는 설정된 변수 중 첫 번째 변수의 값을 항상 반환합니다(경로가 존재하든 아니든). JULIA_SSL_CA_ROOTS_PATH가 빈 문자열로 설정되면 다른 변수는 무시됩니다(설정되지 않은 것처럼); 다른 변수가 빈 문자열로 설정되면 설정되지 않은 것처럼 동작합니다.

source
NetworkOptions.ssh_dirFunction
ssh_dir() :: String

ssh_dir() 함수는 ssh 프로그램이 구성 파일을 저장/찾는 디렉토리의 위치를 반환합니다. 기본적으로 이는 ~/.ssh이지만, 환경 변수 SSH_DIR을 설정하여 이를 재정의할 수 있습니다.

source
NetworkOptions.ssh_key_passFunction
ssh_key_pass() :: String

ssh_key_pass() 함수는 환경 변수 SSH_KEY_PASS가 설정되어 있으면 그 값을 반환하고, 설정되어 있지 않으면 nothing을 반환합니다. 미래에는 보안 시스템 저장소와 같은 다른 방법으로 비밀번호를 찾을 수 있을 것으로 예상되므로, SSH 개인 키를 복호화하는 데 비밀번호가 필요한 패키지는 환경 변수를 직접 확인하는 대신 이 API를 사용해야 하며, 이를 통해 추가될 때 자동으로 이러한 기능을 얻을 수 있습니다.

source
NetworkOptions.ssh_key_nameFunction
ssh_key_name() :: String

ssh_key_name() 함수는 SSH가 연결을 설정할 때 사용해야 하는 키 파일의 기본 이름을 반환합니다. 일반적으로 이 함수를 직접 호출할 이유는 없으며, 라이브러리는 일반적으로 전체 경로를 얻기 위해 ssh_key_pathssh_pub_key_path 함수를 사용해야 합니다. 환경 변수 SSH_KEY_NAME이 설정되어 있으면 이 함수는 해당 값을 반환하고, 그렇지 않으면 기본적으로 id_rsa를 반환합니다.

source
NetworkOptions.ssh_key_pathFunction
ssh_key_path() :: String

ssh_key_path() 함수는 SSH 연결에 사용해야 하는 SSH 개인 키 파일의 경로를 반환합니다. SSH_KEY_PATH 환경 변수가 설정되어 있으면 해당 값을 반환합니다. 그렇지 않으면 기본적으로 다음을 반환합니다.

joinpath(ssh_dir(), ssh_key_name())

이 기본 값은 SSH_DIRSSH_KEY_NAME 환경 변수에 따라 달라집니다.

source
NetworkOptions.ssh_pub_key_pathFunction
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_DIRSSH_KEY_NAME 환경 변수에 따라 달라집니다.

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

ssh_known_hosts_files() 함수는 SSH 연결을 위한 원격 서버의 신원을 설정할 때 사용해야 하는 SSH 알려진 호스트 파일의 경로 벡터를 반환합니다. 기본적으로 이 함수는 다음을 반환합니다.

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

여기서 bundled_known_hosts는 이 패키지와 함께 번들된 알려진 호스트 파일의 경로입니다(여기에는 github.comgitlab.com의 알려진 호스트 키가 포함되어 있습니다). 그러나 환경 변수 SSH_KNOWN_HOSTS_FILES가 설정된 경우, 그 값은 : 문자(또는 Windows에서는 ;로)로 경로를 분할하여 이 경로 벡터가 대신 반환됩니다. 이 벡터의 어떤 구성 요소가 비어 있으면 기본 알려진 호스트 경로로 확장됩니다.

ssh_known_hosts_files()를 사용하는 패키지는 이상적으로 호스트 이름과 키 유형을 비교하여 일치하는 항목을 찾아야 하며, 일치하는 파일의 첫 번째 항목을 호스트의 결정적인 신원으로 간주해야 합니다. 호출자가 키 유형을 비교할 수 없는 경우(예: 해시가 되었기 때문에) 각 파일에서 호스트에 대한 모든 일치하는 항목을 찾아 위 알고리즘을 근사해야 합니다: 파일에 호스트에 대한 항목이 있는 경우 그 중 하나는 일치해야 하며, 호출자는 이전 파일에 해당 호스트에 대한 항목이 없을 경우에만 추가 알려진 호스트 파일을 계속 검색해야 합니다.

source
NetworkOptions.ssh_known_hosts_fileFunction
ssh_known_hosts_file() :: String

ssh_known_hosts_file() 함수는 SSH 연결을 위한 원격 서버의 신원을 설정할 때 사용해야 하는 SSH 알려진 호스트 파일의 단일 경로를 반환합니다. 실제로 존재하는 ssh_known_hosts_files에 의해 반환된 첫 번째 경로를 반환합니다. 여러 알려진 호스트 파일을 확인할 수 있는 호출자는 대신 ssh_known_hosts_files를 사용하고 해당 함수의 문서에 설명된 대로 반환된 모든 파일에서 호스트 일치를 찾아야 합니다.

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

verify_host 함수는 TLS 또는 SSH와 같은 보안 전송을 통해 통신할 때 호스트의 신원을 확인해야 하는지 여부를 호출자에게 알려줍니다. url 인수는 다음과 같을 수 있습니다:

  1. proto://로 시작하는 적절한 URL
  2. ssh 스타일의 일반 호스트 이름 또는 user@로 접두사가 붙은 호스트 이름
  3. 위와 같은 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 — 항상 확인해야 하는 호스트

각 변수의 값은 다음 구문을 가진 호스트 이름 패턴의 쉼표로 구분된 목록입니다 — 각 패턴은 .에서 부분으로 나뉘며 각 부분은 다음 중 하나여야 합니다:

  1. 하나 이상의 ASCII 문자, 숫자, 하이픈 또는 밑줄로 구성된 리터럴 도메인 이름 구성 요소(법적 호스트 이름의 일부는 아니지만 때때로 사용됨). 리터럴 도메인 이름 구성 요소는 자신만 일치합니다.
  2. **, 이는 0개 이상의 도메인 이름 구성 요소와 일치합니다.
  3. *, 이는 임의의 하나의 도메인 이름 구성 요소와 일치합니다.

이 변수 중 하나의 패턴 목록에 대해 호스트 이름을 일치시킬 때, 호스트 이름은 .에서 구성 요소로 나뉘고 그 단어의 순서는 패턴과 일치합니다: 리터럴 패턴은 해당 값으로 정확히 하나의 호스트 이름 구성 요소와 일치합니다; * 패턴은 임의의 값으로 정확히 하나의 호스트 이름 구성 요소와 일치합니다; ** 패턴은 임의의 수의 호스트 이름 구성 요소와 일치합니다. 예를 들어:

  • **는 모든 호스트 이름과 일치합니다.
  • **.org.org 최상위 도메인에 있는 모든 호스트 이름과 일치합니다.
  • example.com은 정확히 호스트 이름 example.com과만 일치합니다.
  • *.example.comapi.example.com과 일치하지만 example.com이나 v1.api.example.com과는 일치하지 않습니다.
  • **.example.comexample.com 자체, api.example.comv1.api.example.com을 포함하여 example.com 아래의 모든 도메인과 일치합니다.
source