2008-12-12 5 views
2

Вчера я провел несколько часов, пытаясь в цифровой форме подписать короткий файл, используя сертификат X509 (один из сертификатов «freemail» от thawte). Я, наконец, получил openssl, чтобы подписывать его как сообщение SMIME, но я не могу его успешно проверить. И он находится в формате SMIME. У меня нет доступа к программе «sendmail», которая может фактически отправить файл SMIME.Как использовать сертификаты X509 (чтобы подписать файл с простой проверкой и другими вопросами)

Я просто хочу, чтобы создать какой-то файл, который «excerptable» через равнину вырезать & пасты, как:

===BEGIN SIGNED DOCUMENT=== 
===BEGIN DOCUMENT=== 
blah blah blah this is the plaintext ... 
===END DOCUMENT=== 
===BEGIN SIGNATURE=== 
AFab12121abadAF ... 
===END SIGNATURE=== 
===END SIGNED DOCUMENT=== 

В качестве альтернативы я предполагаю, что я мог бы сделать .zip файл, содержащий исходный файл, а также подпись ,

, так что я думаю, мои требования:

  1. ввода открытого текста = произвольный файл
  2. вход signkey = от X509 сертификата
  3. выход = что-то я легко могу отправить кому-либо путем вырезать & пасты или есть один файл .zip
  4. program = что-то бесплатное & с открытым исходным кодом, например openssl или gpg
  5. program! = a magic GU I, где я не понимаю, что происходит
  6. способность легко использовать программу для генерации вывода из входов
  7. способность легко извлекать открытый текст с выхода (например, либо непосредственно в виде глаз, либо как компонент файла .zip)
  8. Возможность проверить, что открытый текст был подписан получателем сертификата X509 (т.е. меня) и что лицо, предоставляющее право (CA) сертификата, Известный СА ... полагая, что я разумный человек, который держит сертификат в безопасности от использования другими сторонами (иначе кто-то мог бы подписывать такие вещи, как я).

Есть ли хороший учебник для сертификатов X509 &, как они используются на практике для этого материала? У меня есть 2-е издание «Прикладной криптографии» Шнайера & имеют большой опыт работы с криптографическими алгоритмами + протоколами, но мало что знают о X509, и я очень смущен тем, что на самом деле имеет сертификат , (Иными словами, «сертификат является криптографическим утверждением уполномоченным ЦС стороны-эмитента, что сторона X, указанная в сертификате, является идентификатором, известным ЦС?» И «сертификат позволяет его владельцу на _____»)

Когда Я получаю один из них, который отображается на вкладке «Ваши сертификаты» Firefox в диспетчере сертификатов, и я могу экспортировать его и прочитать его с помощью openssl, но я хочу убедиться, что он не хранится никоим образом, что кто-то другой может его использовать w/o зная сертификат. passphrase - и я действительно запутался, потому что кажется, что некоторые сертификаты имеют только открытый ключ & другие зашифрованные секретные ключи.

Есть ли хорошая простая графическая оболочка вокруг openssl, которая позволяет вам объяснить, что она делает?


редактировать: Thawte легко не позволяет использовать запросы на получение сертификатов напрямую; вместо этого он разговаривает с веб-браузерами (я использую Firefox) &, который генерирует закрытый ключ и обрабатывает весь протокол сертификата.Поэтому я могу экспортировать это как файл PKCS12, но я точно не знаю, как это использовать.

ответ

1

Прежде всего, вам, вероятно, нужно прочитать разницу между закрытым ключом, открытым ключом и сертификатом. Сертификат - это подпись с закрытым ключом CA в заявлении «Открытый ключ XX принадлежит лицу YY». Если вы подписываете что-то своим личным ключом, подпись может быть проверена с помощью вашего открытого ключа, а третья сторона, которая доверяет ЦС, может заключить, что подпись была подписана вами.

Если вы создаете сообщение S/MIME и прикрепляете его как файл с расширением .p7s, большинство почтовых программ, вероятно, смогут его проверить.

Если вам нужен полный контроль над тем, что вы делаете, мой опыт в том, что инструмент вокруг PGP-формата дает вам лучший контроль (по сравнению с почтовыми программами, реализующими протокол S/MIME).

2

Поэтому я могу экспортировать это как файл PKCS12, но не совсем уверен, как его использовать.

Если вы используете инструмент OpenSSL, вы можете использовать команду

openssl pkcs12 -in file.p12 -out file.pem 

, чтобы преобразовать его в PEM-формат.

EDIT:

У меня возникли проблемы выяснить, что PEM и PKCS12, и все эти вещи делают по-разному друг от друга

PKCS # 12 файл просто контейнер для сертификаты и ключи. Если вы хотите увидеть, что он содержит (по крайней мере, за исключением зашифрованных частей), вы можете использовать такой инструмент, как dumpasn1. Файл PKCS # 12, который вы экспортируете из своего браузера, будет содержать ваш закрытый ключ в зашифрованном формате, вашем сертификате, а также сертификаты CA, необходимые для формирования цепочки до доверенного центра сертификации.

Аналогично, файл PEM может содержать сертификаты и ключи. В файле PEM сертификаты и ключи кодируются base64 и помещаются в некоторые разделители текста (файл PKCS # 12 использует двоичную кодировку с именем ASN.1 для структурирования файла - вы можете рассматривать ASN.1 как двоичную форму XML. Большинство криптографических структур, с которыми вы сталкиваетесь, будут закодированы с использованием ASN.1). Кроме того, единственная реальная разница между форматами заключается в том, что PKCS # 12 содержит проверку целостности - в противном случае форматы эквивалентны.

OpenSSL работает лучше всего с PEM, в то время как большинство браузеров и почтовых приложений ожидают PKCS # 12, но вы можете свободно конвертировать между форматами.

+0

Я понял это, но мне трудно понять, что такое PEM и PKCS12, и все это происходит иначе друг от друга. Это похоже на то, чтобы поместить петлю в круглые круги и узлы. Я могу понять, как сделать индивидуальные соединения, но большая картина сбивает с толку. – 2008-12-16 23:54:05