wget: не вызовите сертификаты по умолчанию

Linux Mint 17 по умолчанию устанавливает Vixie Cron. Таким образом, вы можете положить следующее в вашем Crontab:

@reboot /path/to/script

, как описано в Человек 5 Crontab . CRON обычно начинается до назначения экрана входа в систему.

0
03.05.2015, 02:35
1 ответ

Оказывается, ответ зависит от того, с какой SSL-библиотекой связан wget. Он также может зависеть от версии, но между версиями wget 1.13 и 1.15 поведение не изменилось.

Если wget связан с GnuTLS (например, Debian)

Wget может читать сертификаты из файла или из файлов в каталоге. Чтобы отключить все стандартные доверенные центры сертификации (в /etc/ssl/certs), передайте оба --ca-сертификата и --ca-директорию.

wget -O- --ca-directory=/empty --ca-certificate=myservercert.pem https://www.google.com

(Создайте /пустую , чтобы избежать сообщения об ошибке, но wget будет продолжать работать, даже если каталога все равно не существует)

Если wget связан с OpenSSL (например Ubuntu)

Wget безоговорочно проверяет сертификаты в месте расположения OpenSSL по умолчанию (/usr/lib/ssl/certs на Ubuntu, определенном по времени ./configure опцией --openssldir). В дополнение к этому проверяются файл и каталог, указанные в командной строке, если таковые имеются. Нет возможности отключить место по умолчанию.

Местоположение по умолчанию проверяется, так как wget безоговорочно вызывает функцию SSL_CTX_set_default_verify_paths из OpenSSL. Вы можете использовать LD_PRELOAD для аннулирования вызова.

$ 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'.
2
28.01.2020, 02:36

Теги

Похожие вопросы