Из консоли это советуют делать так:
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
Это работае. Но т.к. мне нужно сие делать автоматически (в Django) и раздавать пользователям, писал свое решение. Сначала сделал так: http://eth0.pro/post/9, вроде как все красиво, мой второй пчотовый сервер всё успешно свалидировал, но ни один другой открытый ключ не принимает, тест с сайта port25.com выдает ошибку, что не может прочитать ключ. Попробовал по закрытому ключу, что сгенерировал по статье http://eth0.pro/post/9, сделать открытый при помощи openssl (из консоли) - открытый ключ получился другой, нежели в библиотке import rsa.
Решил попробовать другой библиотекой. Нашел pyOpenSSL, но там я так и не понял как получить открытый ключ.
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) # ... а чо дальше то?....
Т.е. здесь я приватный ключ получил, могу его принтануть, но как получить открытый - не понимаю…
Подскажите нормальны способ генерации пары rsa-ключей, которые бы понимали все системы!!!