Форум сайта python.su
0
Мне нужно генерировать пары rsa-ключей (открыйтый/закрытый), чтобы использоваться их в технологии DKIM (электронная почта).
Из консоли это советуют делать так:
openssl genrsa -out /etc/exim4/dkim/exmple.ru.key 1024
openssl rsa -in /etc/exim4/dkim/exmple.ru.key -out /etc/exim4/dkim/exmple.ru_pub.key -pubout
def generate_rsa_key_pair(bits=1024): import OpenSSL private_key = OpenSSL.crypto.PKey() private_key.generate_key(OpenSSL.crypto.TYPE_RSA, bits) # Закрытый (приватный) ключ в текстовом виде: private_key_text = OpenSSL.crypto.dump_privatekey(OpenSSL.crypto.FILETYPE_PEM, private_key) # Вывести ключ как текст: #print private_key_text cert = OpenSSL.crypto.X509() cert.set_pubkey(private_key) # Вывести сертификат как текст #print OpenSSL.crypto.dump_certificate(OpenSSL.crypto.FILETYPE_PEM, cert) public_key = cert.get_pubkey() public_key.generate_key(OpenSSL.crypto.TYPE_RSA, bits) # ... а чо дальше то?....
Отредактировано cutwater (Фев. 1, 2013 11:57:44)
Офлайн
25
m2crypto:
from os import urandom from M2Crypto import RSA, BIO, Rand, util def rsa_gen_keys(bits=1024): ''' @param: bits - Key length, in bits @return: Tuple of (secret, public) new RSA keys in PEM format ''' Rand.rand_seed(urandom(1024)) keys = RSA.gen_key(bits, 65537, util.quiet_genparam_callback) sec_key = BIO.MemoryBuffer() keys.save_key_bio(sec_key, None) pub_key = BIO.MemoryBuffer() keys.save_pub_key_bio(pub_key) return (sec_key.read(), pub_key.read())
Отредактировано s0rg (Фев. 1, 2013 13:30:08)
Офлайн
0
s0rg
Спасибо!!!! Как только поменял на Вашу функцию, сразу все заработало, получил заветные dkim=pass! Не знаю почему вариант с http://eth0.pro/post/9 не работал…
P.S.: Про urandom я догадался, спасибо)
Отредактировано morfair (Фев. 1, 2013 14:48:39)
Офлайн