2016-06-25 3 views
5

Я работаю в среде исполнения приложений для Google App Engine (GAE) 2.7.Могу ли я подписывать сертификат X509 полностью на Python?

мне нужен знак (и, возможно, также генерировать) сертификат X509 (.csr)

Я нашел несколько guides, которые полагаются на PyOpenSSL.

Как я понимаю, PyOpenSSL является оболочкой OpenSSL и недоступен в App Engine.
Pycrypto доступен, но у него нет четкого заранее подготовленного метода подписи для X509.

Как я могу подписать X509 .csr, используя только python?

+1

https://www.dlitz.net/software/pycrypto/api/current/Crypto.Signature.PKCS1_v1_5-module.html может быть то, что вы ищете? ... im not sure, если это то же самое, что и x509 ... но похоже, что спецификации реализации являются общедоступными, поэтому вы можете реализовать их ... но это будет болезненно. –

+0

Это помогает вам каким-либо образом? http://stackoverflow.com/questions/23103878/sign-csr-from-client-using-ca-root-certificate-in-python –

+1

Python поддерживает среду Go lang, и вы можете создать модуль, который использует https: // golang .org/pkg/crypto/x509/- и называть его через REST API. –

ответ

2

Могу ли я подписать сертификат X509 полностью в Python?

Почти наверняка, но я не думаю, что существуют существующие чистые реализации Python. Самое близкое, что я мог найти, это oscrypto, но наличие подписи сертификата X509 зависит от наличия модуля ctypes.

Автор также написал модуль под названием certbuilder, который утверждает, что является «библиотекой Python для генерации и подписания сертификатов X.509», но зависит от модуля oscrypto.

Однако, вопрос звучит как ...

Могу ли я подписать сертификат X509 на Google App Engine Python Standard окружающей среды?

В этом случае oscrypto модуль, вероятно, не поможет, так как, согласно документации, среда не позволяет использование в ctypes модуля.

У вас есть доступ к PyCrypto модулю, и хотя есть a Python example чтения сертификата X509, используя его, и C++ example верификации сертификата X509, привязок Python, кажется, не имеют полную поддержку кодирования и декодирования ASN.1. Возможно, вы сможете комбинировать PyCrypto с asn1crypto от того же автора, что и oscrypto для полной поддержки ASN.1.

Если ни одно из этих решений не имеют никакой пользы, то либо GAE Python Flexible Environment или GAE Custom Runtime должен позволить вам установить PyOpenSSL пакет, но вы должны обратиться в службу поддержки технологий, чтобы узнать.

+1

oscrypto будет использовать либо ctypes, либо cffi для вызова криптографической библиотеки операционной системы для шифрования, дешифрования, подписания и проверки. Он не содержит чип-криптографические примитивы Python. – wbond

+0

@wbond Было маловероятно, что это обеспечило бы чистую реализацию Python для подписания X509, но спасибо за подтверждение. Обновите ответ. – Aya

2

я, возможно, нашли решение:

Cryptography.io полностью питон основе и даже предлагает учебник о том, как самостоятельно подписать сертификат.

С радостью услышать другие ответы.

+0

Как я копаю глубже .. похоже, что они полагаются на OpenSSL в качестве бэкэнд. Я оставлю этот ответ здесь как хлеб, но в настоящее время похоже, что это не сработает. –

+0

Подробнее Breadcrumbs - Похоже, M2crypto может это сделать, но я не уверен, что он полагается на OpenSSL https://gist.github.com/eskil/2338529 –

+1

M2Crypto - самая полная оболочка Python для OpenSSL, поэтому нет - он полагайтесь на openssl тоже. Я действительно не думаю, что в мире существует такой сумасшедший человек, который будет port openssl на чистый питон, не может видеть никакого смысла. В этом случае вы можете создать службу сертификата на обычном хосте и использовать его с GAE – Reishin

1

Это не будет прямой ответ, потому что я никогда не использую C и Cython, но, возможно, для этой задачи можно использовать некоторую библиотеку C.

От Cython site:

Все это делает Cython идеальный язык для упаковки выносного C библиотеки, вложение CPython в существующие приложения, а также для быстрого модулей C, ускоряющих выполнение кода Python.

Кажется, не самый простой и не самые лучшие решения, но кто знают :)

+0

К сожалению, Appengine требует, чтобы весь код был написан на Python, а не на C-коде. –

Смежные вопросы