2.1.4.2 Проверка подписи с помощью GnuPG
Другой метод проверки целостности и подлинности пакета — использование криптографических подписей. Это более надёжный способ, чем использование контрольных сумм MD5, но требует больше усилий.
Мы подписываем загружаемые пакеты MySQL с помощью GnuPG (GNU Privacy Guard). GnuPG — это открытый аналог известного шифрования Pretty Good Privacy (PGP) от Фила Циммермана. Большинство дистрибутивов Linux по умолчанию поставляют GnuPG. В противном случае, для получения дополнительной информации о GnuPG и о том, как его получить и установить, посетите http://www.gnupg.org/.
Для проверки подписи конкретного пакета, сначала необходимо получить копию нашего открытого ключа GPG, который можно загрузить с http://pgp.mit.edu/. Ключ, который нужно получить, называется mysql-build@oss.oracle.com. Идентификатор ключа (keyID) для пакетов MySQL 8.0.36 и выше, и MySQL 8.3.0 и выше, равен A8D3785C. После получения этого ключа, перед использованием для проверки пакетов MySQL, вы должны сравнить его со значением, указанным ниже. В качестве альтернативы, вы можете скопировать и вставить ключ непосредственно из текста ниже.
Открытый ключ GPG для более ранних релизов MySQL (keyID 5072E1F5 или 3A79BD29) см. в разделе 2.1.4.5, «Открытый ключ GPG для архивированных пакетов».
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: SKS 1.1.6
Comment: Hostname: pgp.mit.edu
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
cAZUlaj3id3TxquAlud4lWDz
=h5nH
-----END PGP PUBLIC KEY BLOCK-----
Чтобы импортировать ключ в личный открытый keyring GPG, используйте команду gpg --import. Например, если вы сохранили ключ в файле с именем mysql_pubkey.asc, команда импорта будет выглядеть следующим образом:
$> gpg --import mysql_pubkey.asc
gpg: key B7B3B788A8D3785C: public key "MySQL Release Engineering
<mysql-build@oss.oracle.com>" imported
gpg: Total number processed: 1
gpg: imported: 1
Вы также можете загрузить ключ с открытого сервера ключей, используя идентификатор открытого ключа A8D3785C:
$> gpg --recv-keys A8D3785C
gpg: requesting key A8D3785C from hkp server keys.gnupg.net
gpg: key A8D3785C: "MySQL Release Engineering <mysql-build@oss.oracle.com>"
1 new user ID
gpg: key A8D3785C: "MySQL Release Engineering <mysql-build@oss.oracle.com>"
53 new signatures
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg: new user IDs: 1
gpg: new signatures: 53
Если вы хотите импортировать ключ в конфигурацию RPM для проверки пакетов RPM, вы можете импортировать ключ напрямую:
$> rpm --import mysql_pubkey.asc
Если у вас возникнут проблемы или потребуется информация, специфичная для RPM, см. раздел 2.1.4.4, «Проверка подписи с помощью RPM».
После загрузки и импорта открытого ключа, загрузите необходимый пакет MySQL и соответствующую подпись, которые также доступны на странице загрузки. Файл подписи имеет то же имя, что и файл дистрибутива, с расширением .asc, как показано в следующей таблице.
Таблица 2.1 Файлы пакета MySQL и подписи для исходных файлов
| Тип файла | Имя файла |
|---|---|
| Файл дистрибутива | mysql-8.4.4-linux-glibc2.28-x86_64.tar.xz |
| Файл подписи | mysql-8.4.4-linux-glibc2.28-x86_64.tar.xz.asc |
Убедитесь, что оба файла хранятся в одной папке, а затем выполните следующую команду для проверки подписи файла дистрибутива:
$> gpg --verify package_name.asc
Если загруженный пакет действителен, вы увидите сообщение Good signature, подобное этому:
$> gpg --verify mysql-8.4.4-linux-glibc2.28-x86_64.tar.xz.asc
gpg: Signature made Fri 15 Dec 2023 06:55:13 AM EST
gpg: using RSA key BCA43417C3B485DD128EC6D4B7B3B788A8D3785C
gpg: Good signature from "MySQL Release Engineering <mysql-build@oss.oracle.com>"
Сообщение Good signature указывает, что подпись файла действительна при сравнении с подписью на нашем сайте. Однако вы также можете увидеть предупреждения, такие как:
$> gpg --verify mysql-8.4.4-linux-glibc2.28-x86_64.tar.xz.asc
gpg: Signature made Fri 15 Dec 2023 06:55:13 AM EST
gpg: using RSA key BCA43417C3B485DD128EC6D4B7B3B788A8D3785C
gpg: Good signature from "MySQL Release Engineering <mysql-build@oss.oracle.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: BCA4 3417 C3B4 85DD 128E C6D4 B7B3 B788 A8D3 785C
Это нормально, так как они зависят от вашей системы и конфигурации. Вот пояснения к этим предупреждениям:
gpg: no ultimately trusted keys found: Это означает, что конкретный ключ не является «безусловно надёжным» для вас или вашей сети доверия, что приемлемо для проверки подписи файла.
WARNING: This key is not certified with a trusted signature! There is no indication that the signature belongs to the owner.: Это относится к уровню доверия, который вы имеете, считая, что у вас есть наш реальный открытый ключ. Это личное решение. В идеале, разработчик MySQL передал бы вам ключ лично, но чаще всего вы загружаете его. Была ли загрузка скомпрометирована? Вероятно, нет, но это ваше решение. Создание сети доверия — один из способов доверять им.
Для получения дополнительной информации о работе с открытыми ключами см. документацию GPG.
© 2025 Oracle
Licensed under the GPLv2 License.