Как скачивать OpenVPN чтобы минимизировать риски получить поддельный инсталяционный пакет.
Нужно выполнить несколько шагов.
Проверить что открывшийся URL зашифрован TLS1.1 и выше и подписан правильной подписью.
Для этого нужно посмотреть сертификат. На момент публикации статьи сертификат для домена *.openvpn.net подписан Go Daddy Secure Certificate Authority – G2 действительным до 03/05/2016. Отпечаток SHA1:BD:4B:30:9E:65:DC:3F:7B:59:52:46:4A:1C:19:D6:BE:E4:98:5B:5A
$ echo | openssl s_client -tls1_2 -showcerts -connect openvpn.net:443 2>/dev/null | openssl x509 -fingerprint | grep 'BD:4B:30:9E:65:DC:3F:7B:59:52:46:4A:1C:19:D6:BE:E4:98:5B:5A'
Проверить подпись загруженного исполняемого модуля.
Публичную бесплатную версию OpenVPN можно скачать здесь. Поскольку это средство шифрования и может быть атаковано провайдером необходимо проверить скачанный файл. На этой же странице размещены ссылки на подписи файлов. Для проверки понадобится стянуть и соответствующий файл подписи. Но для проверки подписи нужно импортировать публичную подпись. Публичных ключей несколько. Но для проверки OpenVPN последних версий нужен только один.
Samuli Seppänen’s PGP key (2.3_alpha2 и позже, отпечаток ключа 0330 0E11 FED1 6F59 715F 9996 C29D 97ED 198D 22A3)
$ gpg --import samuli_public_key.asc
Проверить список импортированных ключей можно с ключом –list-keys
$ gpg --list-keys /home/keyservice/.gnupg/pubring.gpg -------------------------------- pub 2048R/E158C569 2011-08-03 [expires: 2017-08-04] uid Samuli Seppänen (OpenVPN Technologies, Inc) <samuli@openvpn.net> sub 2048R/F5699905 2011-08-03 [expires: 2017-08-04] pub 1024D/198D22A3 2009-11-21 uid Samuli Seppänen <samuli.seppanen@gmail.com> sub 2048g/CF6D46CF 2009-11-21
И наконец проверка файла на соответствие подписи.
$ gpg --verify "openvpn-install-2.3.8-I601-x86_64.exe.asc" 2>&1 gpg: assuming signed data in `openvpn-install-2.3.8-I601-x86_64.exe' gpg: Signature made Tue 04 Aug 2015 07:32:45 PM CEST using DSA key ID 198D22A3 gpg: Good signature from "Samuli Seppänen <samuli.seppanen@gmail.com>" gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: 0330 0E11 FED1 6F59 715F 9996 C29D 97ED 198D 22A3
Предупреждение говорит о том, что подпись не имеет доверенной сигнатуры, и нет признаков что эта сигнатура принадлежит владельцу. Другими словами подпись является самоподписанной. Это указывает на то что нельзя безоговорочно доверять этой подписи. Поэтому необходимо позаботиться о безопасной альтернативной доставке и импорту подписи “Samuli Seppänen” на компьютер где проводится проверка.
Важно При просмотре этой страницы через https протокол используется самоподписанный сертификат который не может быть подтверждён ни одним центром сертификации. Это значит, что к процитированным отпечаткам на этой странице нельзя относиться с полным доверием, так как они могут быть изменены атакующим читателя человеком посредине (man-in-the-middle). Жду когда https://letsencrypt.org/ начнёт раздачу бесплатных сертификатов.