2012-01-08 17 views
2

ちょっと、私はPythonで署名付きのURLを生成しようとしています。基本的には、Google App Engineサーバーから保護されたAmazon Cloudfrontコンテンツにアクセスしようとしています。 7bx8WiUk ... ....Google App Engine PythonのRSA暗号化ルーチン

----- RSA PRIVATE KEY -----

MIICWQfをBEGIN、より多くの文字を:Amazonはのように見えるコンテンツを持っているPEMファイルを提供してくれましたkey = EVP.load_key_string(priv_key_string)

----- END RSA PRIVATE KEY -----

Getting started with secure AWS CloudFront streaming with Pythonによると、署名されたURLは、次のようなEVPを介して生成されます。主な問題は、Google App Engineがfrom M2Crypto import EVPをサポートしていないことです。私はグーグルでRSA暗号化ルーチンGoogle App Engineを試しましたが、動作するモジュールが見つかりませんでした。 1つは私がつまずいたSigning a string with RSA private key on Google App Engine Python SDK、私はfrom tlslite.utils import keyfactoryを使用できると述べた。しかし、私はまだNo module named tlslite.utilsという応答を得ています。

要約すれば、Google App EngineでRSA暗号化ルーチンを実行するモジュールがあるかどうかは知りません。ご協力ありがとうございます。

+1

ライブラリのソースコードが純粋なPythonまたはコンパイルされたPythonであれば、アプリケーションをデプロイする前にそのディレクトリに含めることができます。 – bossylobster

+1

たとえば、http://code.google.com/appengine/articles/python/retrieving_gdata_feeds.htmlの「gdata-python-clientライブラリの使用」を参照してください。 – bossylobster

+0

tlsliteはネイティブPythonのようです:http:// tlslite。 cvs.sourceforge.net/viewvc/tlslite/tlslite/ – bossylobster

答えて

1

bossylobsterが指摘しているように、アプリケーションの一部として必要なRSAパッケージには、アプリケーションの中でサブディレクトリとしてパッケージのソースコードをコピーすることが含まれますディレクトリ構造。これはアプリの別の部分としてアプリエンジンサービスにアップロードされます。パッケージがプロダクションで提供する標準ライブラリモジュールのみを使用する限り、期待どおりに動作します。ディレクトリ構造は次のようなものになります。

mysite/ 
    app.yaml 
    main.py 
    urls.py 
    ... 
    tlslite/ 
     __init__.py 
     ... 
+0

ありがとう、tlsliteは今インポートすることができます。簡単な質問が1つあります。私はM2Cryptoをインポートしようとしています(このフォルダには__init__.pyファイルが含まれています)。しかし、そこのEVP.pyは、サブディレクトリにあるファイルがM2Crypto(SWIGというフォルダ)と同じレベルにあることを要求します。そのため、EVPをインポートすると、ファイルが見つからないというエラーが発生します。何かご意見は? – mrmo123

+0

私はEVPモジュールをインポートすることができない理由についてもっと研究しており、ここでは範囲外です。あなたの助けをありがとう...私はtlsliteを働かせることができました。残念ながら、tlsliteモジュールの署名はamazon cloudfrontでは機能しません。 – mrmo123

+0

残念ながら、M2Cryptoは純粋なpythonではないようです - SWIGフォルダはCコードでいっぱいです。したがって、app-engine上で動作する可能性はありません。代わりに、app-engine環境で使用できるPyCryptoのバージョン(http://code.google.com/appengine/docs/python/tools/libraries.html#PyCrypto)を使用します。 – philofinfinitejest