Вопрос или проблема
Я пытаюсь настроить подписанные сообщения в Mutt, но пока не получается.
Что я сделал:
– Я получил PKSC12 файл от Actalis, содержащий закрытый ключ, конечный сертификат, промежуточный сертификат и корневой сертификат. Они были выданы для моего адреса электронной почты, который нужно было подтвердить.
– Я извлек закрытый ключ и сертификаты в отдельные файлы и создал новый PKCS12 файл, содержащий их, чтобы избавиться от оригинального пароля и также иметь возможность использовать флаг “-legacy” (импорт в базу данных gpgsm не сработал при попытке использовать хранилище ключей, не созданное таким образом):
openssl pkcs12 -export -inkey pvtkey_smime.key -in smime_cert.crt -out key_cert_combo.p12 -legacy
Импорт прошел успешно, вот список, который это доказывает:
miso@swissknife:~/SMIME$ gpgsm --list-keys
gpgsm: enabled compatibility flags:
/home/miso/.gnupg/pubring.kbx
-----------------------------
ID: 0xC1825A92
S/N: 17103EDE3D8A1CB5CA065193E7CA436B
(dec): 30656595769882679830981759075080618859
Issuer: /CN=Actalis Authentication Root CA/O=Actalis S.p.A.\x2f03358520967/L=Milan/C=IT
Subject: /CN=Actalis Client Authentication CA G3/O=Actalis S.p.A./L=Ponte San Pietro/ST=Bergamo/C=IT
validity: 2020-07-06 08:45:47 through 2030-09-22 11:22:02
key type: 4096 bit RSA
key usage: certSign crlSign
ext key usage: clientAuth (suggested), emailProtection (suggested)
policies: 2.5.29.32.0:N:
chain length: unlimited
fingerprint: 79:FC:AC:1F:8D:21:6E:EB:D6:D0:C8:F1:15:CF:42:DE:C1:82:5A:92
sha2 fpr: BB:4D:3E:E6:61:E5:02:94:09:DB:67:40:B9:95:14:94:A7:F2:2A:7B:C0:FD:C1:A1:90:0C:07:A4:78:1F:14:19
ID: 0x44521E04
S/N: 6191BFC0FA3C3A9F8882C9E2482F9168
(dec): 129691887865109954730248104301124620648
Issuer: /CN=Actalis Client Authentication CA G3/O=Actalis S.p.A./L=Ponte San Pietro/ST=Bergamo/C=IT
Subject: /[email protected]
aka: [email protected]
validity: 2025-01-19 10:57:45 through 2026-01-19 10:57:45
key type: 2048 bit RSA
key usage: digitalSignature keyEncipherment
ext key usage: clientAuth (suggested), emailProtection (suggested)
policies: 1.3.159.16.1.1:N:,2.23.140.1.5.1.1:N:
fingerprint: 16:97:A0:FA:5D:78:F7:77:78:4C:F6:81:B9:44:BB:5A:44:52:1E:04
sha2 fpr: 19:B2:00:D5:69:0D:D2:C0:24:5E:05:FB:42:31:85:CC:D5:59:26:0D:5A:C1:D7:4B:01:ED:15:58:BB:C6:BC:36
ID: 0xC78E9CAC
S/N: 570A119742C4E3CC
(dec): 6271844772424770508
Issuer: /CN=Actalis Authentication Root CA/O=Actalis S.p.A.\x2f03358520967/L=Milan/C=IT
Subject: /CN=Actalis Authentication Root CA/O=Actalis S.p.A.\x2f03358520967/L=Milan/C=IT
validity: 2011-09-22 11:22:02 through 2030-09-22 11:22:02
key type: 4096 bit RSA
key usage: certSign crlSign
chain length: unlimited
fingerprint: F3:73:B3:87:06:5A:28:84:8A:F2:F3:4A:CE:19:2B:DD:C7:8E:9C:AC
sha2 fpr: 55:92:60:84:EC:96:3A:64:B9:6E:2A:BE:01:CE:0B:A8:6A:64:FB:FE:BC:C7:AA:B5:AF:C1:55:B3:7F:D7:60:66
miso@swissknife:~/SMIME$ gpgsm --list-secret-keys
gpgsm: enabled compatibility flags:
/home/miso/.gnupg/pubring.kbx
-----------------------------
ID: 0x44521E04
S/N: 6191BFC0FA3C3A9F8882C9E2482F9168
(dec): 129691887865109954730248104301124620648
Issuer: /CN=Actalis Client Authentication CA G3/O=Actalis S.p.A./L=Ponte San Pietro/ST=Bergamo/C=IT
Subject: /[email protected]
aka: [email protected]
validity: 2025-01-19 10:57:45 through 2026-01-19 10:57:45
key type: 2048 bit RSA
key usage: digitalSignature keyEncipherment
ext key usage: clientAuth (suggested), emailProtection (suggested)
policies: 1.3.159.16.1.1:N:,2.23.140.1.5.1.1:N:
fingerprint: 16:97:A0:FA:5D:78:F7:77:78:4C:F6:81:B9:44:BB:5A:44:52:1E:04
sha2 fpr: 19:B2:00:D5:69:0D:D2:C0:24:5E:05:FB:42:31:85:CC:D5:59:26:0D:5A:C1:D7:4B:01:ED:15:58:BB:C6:BC:36
Мой gpgsm.conf выглядит так:
miso@swissknife:~/.gnupg$ cat gpgsm.conf
verbose
default-key 16:97:A0:FA:5D:78:F7:77:78:4C:F6:81:B9:44:BB:5A:44:52:1E:04
disable-crl-checks
и trustlist.txt выглядит так:
miso@swissknife:~/.gnupg$ cat trustlist.txt
# CN=Actalis Authentication Root CA
# O=Actalis S.p.A.\x2f03358520967
# L=Milan
# C=IT
F3:73:B3:87:06:5A:28:84:8A:F2:F3:4A:CE:19:2B:DD:C7:8E:9C:AC S relax
# CN=Actalis Client Authentication CA G3
79:FC:AC:1F:8D:21:6E:EB:D6:D0:C8:F1:15:CF:42:DE:C1:82:5A:92 S relax
miso@swissknife:~/.gnupg$
Я также могу подписать файл с помощью “gpgsm –sign”:
miso@swissknife:~/SMIME$ gpgsm --sign -o signed_file2.p7m input_file.txt
gpgsm: enabled compatibility flags:
gpgsm: failed to open '/home/miso/.gnupg/policies.txt': No such file or directory
gpgsm: Note: non-critical certificate policy not allowed
gpgsm: certificate is good
gpgsm: failed to open '/home/miso/.gnupg/policies.txt': No such file or directory
gpgsm: Note: non-critical certificate policy not allowed
gpgsm: root certificate is good
gpgsm: CRLs not checked due to --disable-crl-checks option
gpgsm: validation model used: shell
gpgsm: hash algorithm used for signer 0: SHA256 (2.16.840.1.101.3.4.2.1)
gpgsm: DBG: adding certificates at level -2
gpgsm: signature created
Однако я не могу заставить Mutt подписывать исходящее письмо, я всегда получаю:
error signing data: Unusable secret key?
Мой .muttrc выглядит так:
miso@swissknife:~$ cat .muttrc
set from = "[email protected]"
set realname = "Michal"
set smtp_url = "smtp://smtp.gmail.com:587"
set smtp_pass = "************"
# Enable S/MIME
set crypt_use_gpgme = yes
set smime_is_default = yes
set smime_default_key = "1697A0FA5D78F777784CF681B944BB5A44521E04"
set smime_sign_as = "1697A0FA5D78F777784CF681B944BB5A44521E04"
set smime_ca_location = "~/.mutt/ssl/smime_CA_chain.pem"
Можете ли вы помочь здесь, пожалуйста?
С уважением,
Михал
Ответ или решение
Конфигурация почтового клиента Mutt для отправки подписанных S/MIME сообщений может быть сложной задачей, особенно если учесть все шаги, необходимые для обеспечения корректной работы этого процесса. Давайте рассмотрим теорию, пример и применение для решения вашей проблемы.
Теория
S/MIME (Secure/Multipurpose Internet Mail Extensions) — это протокол, который используется для шифрования и подписи электронных писем с использованием сертификатов X.509. Подпись писем с использованием S/MIME обеспечивает подлинность отправителя и сохранность содержимого.
Для успешной конфигурации Mutt на отправку подписанных S/MIME сообщений необходимо правильно настроить несколько аспектов:
- Импорт сертификатов и ключей: Необходим частный ключ отправителя и цепочка сертификатов, включающая корневой и промежуточный сертификаты.
- Конфигурация GnuPG и GpgSM: GpgSM — это инструмент, обеспечивающий поддержку S/MIME в GnuPG, отвечает за работу с сертификатами и ключами.
- Конфигурация Mutt: Mutt должен быть настроен так, чтобы правильно использовать сертификаты и ключи для подписания сообщений.
Пример
Из вашего описания видно, что вы выполнили следующие шаги:
- Вы извлекли и объединили ключи и сертификаты в формате PKCS#12.
- Успешно импортировали их в GpgSM.
- Настроили файлы конфигурации
gpgsm.conf
иtrustlist.txt
для управления ключами и сертификатами. - Убедились, что подпись файла с помощью команды
gpgsm --sign
выполняется без ошибок.
Однако, несмотря на успешный процесс подписания файла через gpgsm
, ошибка в Mutt свидетельствует о проблемах с интеграцией Mutt и ваши конфигурации S/MIME.
Применение
-
Проверка наличия ошибок в конфигурации GpgSM:
- Убедитесь, что основной ключ указан правильно в
gpgsm.conf
. Ваш ключ, указанный вsmime_default_key
иsmime_sign_as
, должен соответствоватьdefault-key
вgpgsm.conf
. - Также учитывайте, что путь к файлам должен правильно указываться без ошибок в синтаксисе.
- Убедитесь, что основной ключ указан правильно в
-
Проверка конфигурации Mutt:
- Убедитесь, что
set crypt_use_gpgme
включен. Это позволит Mutt использовать интерфейс произвольного криптографического модуля для работы с ключами и сертификатами S/MIME. - Перепроверьте относительно правильности выставленных путей к файл здания доверия и S/MIME ключам в настройках Mutt.
- Важно, чтобы все указанные идентификаторы ключей совпадали с теми, которые вы видите при выполнении команды
gpgsm --list-secret-keys
.
- Убедитесь, что
-
Особенности конфигурации первичного ключа:
- Проверьте, что GpgSM и Mutt совместимо работают с указанным ключом и сертификатом.
- Попробуйте использовать команду
gpgsm --verify
для файла, подписанного Mutt, чтобы проверить любую возможную несовместимость.
-
Проблемы прав доступа:
- Убедитесь, что все файлы, в особенности ассеты, с которыми работают GpgSM и Mutt, имеют необходимые права доступа и доступны для чтения и записи.
-
Отсутствие файла policies.txt:
- Поиск решений для предупреждений, в которых GpgSM не находит файл
policies.txt
, так как это может повлиять на процесс апробации политики сертификата.
- Поиск решений для предупреждений, в которых GpgSM не находит файл
Возможно, потребуется внести небольшие изменения в ваши файлы конфигурации и перепроверить каждый шаг. Определение корректности конфигурации GpgSM и Mutt, а также тщательная их интеграция, поможет в решении вашей проблемы. Если проблема продлится, рекомендуется выполнить чистую настройку Mutt и GnuPG, следуя документации по использованию S/MIME в рамках этих инструментов.