2016-06-25 3 views
5

Google App Engine(GAE)のPython 2.7ランタイムで作業しています。PythonでX509証明書を完全に署名することはできますか?

私はX509証明書(.csrです)

私はPyOpenSSLに依存していること、guidesいくつかを発見した記号を必要とする(そして潜在的にも発生します)。

私が理解しているように、PyOpenSSLはOpenSSLのラッパーであり、App Engineでは利用できません。
Pycryptoが利用可能ですが、X509用に事前に構築された署名方法はありません。

Pythonのみを使用してX509 .csrに署名するにはどうすればよいですか?

+1

https://www.dlitz.net/software/pycrypto/api/current/Crypto.Signature.PKCS1_v1_5-module.htmlがお探しのものでしょうか? ...これは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

することは、私はPythonで完全にX509証明書に署名することはできますか?

ほとんどの場合、純粋なPython実装が利用可能であるとは思えません。私が見つけた最も近いものはoscryptoですが、X509証明書に署名できるかどうかは、​​モジュールを利用できるかどうかによって決まります。

著者は、certbuilderというモジュールを作成しました。これは、「X.509証明書を生成して署名するためのPythonライブラリ」ですが、oscryptoモジュールに依存しています。

はしかし、本当の問題は

は、私はGoogle App EngineのPython標準環境上のX509証明書に署名することができます...もっとように聞こえますか?この場合

oscryptoモジュールはおそらくドキュメントによると、環境が​​モジュールの使用を許可しない、以来、助けにはなりません。

あなたはPyCryptoモジュールへのアクセスを持っているし、それを使用してX509証明書を読み取るa Python example、およびX509証明書を検証するC++ exampleがあるが、Pythonバインディングは、エンコードとデコードを完全にサポートしていないようですASN.1。 PyCryptoasn1cryptoを組み合わせると、完全なASN.1サポートのためにoscryptoと同じ著者が結合できます。

これらのソリューションのどれもがいずれかの使用をしない場合、GAE Python Flexible EnvironmentまたはGAE Custom Runtimeのいずれかを使用すると、PyOpenSSLパッケージをインストールできるようにするべきだが、あなたは見つけるために彼らの技術サポートチームに連絡する必要があると思います。

+1

oscryptoは、ctypesまたはcffiのいずれかを使用して、オペレーティングシステムの暗号化ライブラリを呼び出して、暗号化、復号化、署名および検証を行います。これは純粋なPython暗号プリミティブを提供しません。 – wbond

+0

@wbond X509に署名するための純粋なPython実装を提供することは考えにくいようですが、確認のおかげです。答えを更新しました。 – Aya

2

私は解決策を発見したことがあります。

Cryptography.ioはすべてPythonベースであっても自己証明書に署名する方法についてのチュートリアルを提供しています。

他の回答をお待ちしております。

+0

もっと深く掘り下げていくと、OpenSSLをバックエンドとして利用しているように見えます。この回答をブレッドクラムとして残しておきますが、現時点ではこれはうまくいかないようです。 –

+0

多くのブレッドクラム - M2cryptoのように見えるが、OpenSSLに依存しているかどうかわからないhttps://gist.github.com/eskil/2338529 –

+1

M2CryptoはOpenSSL用の最も完全なPythonラッパーなので、 opensslにも頼っている。私は本当に、世界では、純粋なpythonにopensslを移植するので、怒っている人が存在するとは思わない、何か意味を参照することはできません。あなたの場合、通常のホストで証明書サービスを作成し、彼をGAE – Reishin

1

私は決してCとCythonを使用しないので、それは直接的な答えではありませんが、おそらくこのタスクにはCライブラリを使用することができます。 Cython siteから

このすべてがCython既存のアプリケーションにはCPythonを埋め込む、外部のC ライブラリをラップするため、およびPythonコードの実行を高速化、高速 Cモジュールのための理想的な言語になります。

最適なソリューション単純ではないではないように思えるが、誰が知っている:)

+0

から使用することができます。残念ながら、AppengineはすべてのコードをPythonで書かなければなりません。 –

関連する問題