ruslanstep1 писал(а):вопрос как сделать эти ключи public-key.crt'; /private.key';

Гхм...
Ну там такая же технология как и в HTTPS.
Читайте здесь:
http://security.ncsa.illinois.edu/resea ... enssl.html
или
http://www.madboa.com/geek/openssl/#cert-self
ключики чтоб побаловаться можете генернуть здесь в онлайн
http://www.mobilefish.com/services/ssl_ ... icates.php
Технология в общем то простая.
Есть центры сертификаци, так называемые CA( - certificate authority ) их задача подтвердить, как третье лицо валидность того, что ключи принадлежат действительно тому, кому они выданы(в зависимости от типа сертификата, валидность может проверяться от банальной проверки по eMail и вплоть до того, что надо будет показать свой паспорт и еще кучу ксив)
Как это работает:
Вы генерируете свой приватный ключ(контент которого никто и никогда не должен увидеть), на его базе генерируется CSR - это как бы будущий ваш публичный ключ и отправляете его в СА, где они за денюшку подпишут его своим ключом, предварительно проверив who you are, после чего вышлют вам подписанный ими ваш публичный ключ, который не есть секрет и может быть расположен публично, но использовать его для раскодировки сможете только вы.
(Грубо говоря это как типа взять рубль, разорвать его на миллиард маленьких клочков, тщательно перемешать и половину оставить у себя, а вторую половину выставить на показ. В этом случае любой может закодировать сообщение вашим публичным ключом, но раскодировать его сможете только вы, так как только у вас есть вторая половина огрызков рубля, которые слепив вместе, можно раскодировать сообщение.)
Т.е. один из ключевых моментов технологии является наличие третьей стороны, подписавшей сертификат. Перед тем как вам отправить сообщение, ваш публичный ключ проверяется с СА, на предмет того, что он действительно принадлежит вам.
Есть два других варианта:
1. Вы не хотите платить до сотни баксов в год, только за то, чтоб СА подписал ваш публичный ключ, тогда вы генерируете self signed сертификат, т.е. вы сами себе становитесь СА и сами же себя подтверждаете. Такой публичный ключ не считается доверяемым, т.к. его никто не перепроверил, а значит его можно в теории подменить.(К сожалению масса российских почтовых серверов работают именно с такими сертификатами, из-за чего приходится пропускать почту с любых таких серваков или поименно заносит их в белые листы)
2. Второй вариант - воспользоваться бесплатным СА, который распознается во всех почтовых клиентах и браузерах. Находится он здесь:
http://cert.startcom.org/
Хотя если вы будете использовать сертификаты в замкнутой приватной конторе, то можно обойтись и само-подписанными сертификатами, в этом случае все абоненты просто должны добавить ваш публичный ключ полученный из рук в руки(и под подпись

) и добавить его в почтовые клиенты или браузеры вручную как исключение. Если же у вас просто задача - подписывать сообщения, то вам надо просто нагенерировать пары ключей(public/private) для всех абонетов), публичные ключи оставить на централизованном месте(на серваке ?), а приватные ключи раздать клиентам на флэшках(если я правильно понял вашу задачу)
Ну вообщем это все так, - вкраце о несимметричной криптографии ака SSL/TLS, там еще есть прибамбасы и нюансы в виде CRL и прочей херни