Проверка GnuPG подписи OpenVPN

Как скачивать 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)

другие ключи
James Yonan’s PGP key (для версии от 1.5.0 до 2.3_alpha1, отпечаток ключа C699 B264 0C6D 404E 6454 A9AD 1D0B 4996 1FBF 51F3)
Ключ подписи пакетов (отпечаток ключа 30EB F4E7 3CCE 63EE E124 DD27 8E6D A8B4 E158 C569)
Нужно загрузить ключ на компьютер, а затем импортировать.

$ 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/ начнёт раздачу бесплатных сертификатов.