A resposta depende de com qual biblioteca SSL o wget está vinculado. Pode também depender da versão, mas entre o wget 1.13 e o 1.15 o comportamento não mudou.
Se o wget estiver ligado ao GnuTLS (por exemplo, Debian)
O Wget pode ler certificados de um arquivo ou dos arquivos em um diretório. Para desativar todas as CAs confiáveis padrão (em /etc/ssl/certs
), passe ambos --ca-certificate
e --ca-directory
.
wget -O- --ca-directory=/empty --ca-certificate=myservercert.pem https://www.google.com
(Crie /empty
para evitar uma mensagem de erro, mas o wget continua, mesmo que o diretório não exista de qualquer maneira.)
Se o wget estiver vinculado ao OpenSSL (por exemplo, Ubuntu)
O Wget verifica incondicionalmente os certificados no local padrão para o OpenSSL ( /usr/lib/ssl/certs
no Ubuntu, determinado em ./configure
time pela opção --openssldir
). O arquivo e o diretório especificados na linha de comando, se houver, são verificados além disso. Não há opção para desativar o local padrão.
O local padrão é verificado porque o wget chama a função SSL_CTX_set_default_verify_paths
do OpenSSL incondicionalmente. Você pode usar LD_PRELOAD
para anular a chamada.
$ cat no_openssl_default_verify_paths.c
int SSL_CTX_set_default_verify_paths(void *ctx) {
return 0;
}
$ gcc -Wall -fPIC -shared -o no_openssl_default_verify_paths.so no_openssl_default_verify_paths.c
$ wget -nv -O /dev/null https://www.google.com
2015-05-04 14:31:02 URL:https://www.google.fr/?gfe_rd=cr&ei=hmZHVa_DD5Tu8wex3IC4BQ [18613] -> "/dev/null" [1]
$ LD_PRELOAD=~/no_openssl_default_verify_paths.so wget -nv -O /dev/null https://www.google.com
ERROR: cannot verify www.google.com's certificate, issued by ‘/C=US/O=Google Inc/CN=Google Internet Authority G2’:
Unable to locally verify the issuer's authority.
To connect to www.google.com insecurely, use '--no-check-certificate'.