Как я могу загрузить защищенный паролем закрытый ключ из файла .pem с помощью M2Crypto?

У меня есть защищенный паролем закрытый ключ в файле .pem; Я хочу использовать его для подписи запросов на удаленный сервер. Я могу загрузить ключ и ввести кодовую фразу после запроса:

python
>>> import M2Crypto
>>> pk = M2Crypto.RSA.load_key('private.pem')
Enter passphrase:
>>>

Однако мне это нужно для серверного процесса, который перезапускается каждое утро, и поэтому парольная фраза должна каким-то образом передаваться автоматически. Метод load_key поддерживает аргумент обратного вызова для этой цели, поэтому я попробовал несколько вариантов:

>>> def gimmepw():
...     return 'mysecret'
...
>>> pk = M2Crypto.RSA.load_key('private.pem', gimmepw)
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "/usr/local/Plone/Python-2.4/.../M2Crypto/RSA.py", line 351, in load_key
    return load_key_bio(bio, callback)
  File "/usr/local/Plone/Python-2.4/.../M2Crypto/RSA.py", line 372, in load_key_bio
    rsa_error()
  File "/usr/local/Plone/Python-2.4/.../M2Crypto/RSA.py", line 302, in rsa_error
    raise RSAError, m2.err_reason_error_string(m2.err_get_error())
M2Crypto.RSA.RSAError: bad password read
>>>

(замените "..." на "lib/python2.4/site-packages")

Что я делаю неправильно?

5
задан Tobias 16 May 2012 в 08:54
поделиться