2012-01-08 1 views
2

Hey, j'essaie de générer une URL signée en python. Fondamentalement, j'essaye d'accéder au contenu protégé d'Amazon Cloudfront à partir d'un serveur de Google App Engine. Amazon m'a fourni un fichier pem qui a un contenu qui ressemble à:Routines de chiffrement RSA pour Google App Engine Python

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

MIICWQf .... beaucoup plus de personnages ... 7bx8WiUk

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

Selon Getting started with secure AWS CloudFront streaming with Python, une url signée est générée par vice-président exécutif en tant que tel: key = EVP.load_key_string(priv_key_string). Le principal problème est que Google App Engine ne prend pas en charge from M2Crypto import EVP. J'ai essayé googling routines de cryptage RSA Google App Engine mais n'ai trouvé aucun module qui fonctionne. Un que j'ai trébuché, Signing a string with RSA private key on Google App Engine Python SDK, a dit que je pourrais utiliser from tlslite.utils import keyfactory. Pourtant, j'ai toujours une réponse qui dit No module named tlslite.utils. En résumé, je me demandais si quelqu'un sait si un module qui fait des routines de cryptage RSA sur Google App Engine. Merci, votre aide est grandement appréciée comme toujours

+1

Tant que le code source de la bibliothèque est en Python pur ou en Python compilé, vous pouvez l'inclure dans votre répertoire avant de déployer votre application. – bossylobster

+1

Par exemple, voir la section "Utilisation de la bibliothèque gdata-python-client" dans http://code.google.com/appengine/articles/python/retrieving_gdata_feeds.html – bossylobster

+0

Il semble que tlslite soit natif en Python: http: // tlslite. cvs.sourceforge.net/viewvc/tlslite/tlslite/ – bossylobster

Répondre

1

Comme bossylobster l'a fait remarquer, ce que vous pouvez faire est d'inclure le paquet RSA dont vous avez besoin dans votre application en copiant le code source du paquet comme un sous-répertoire dans votre application. structure de répertoire. Cela est téléchargé dans le service App Engine en tant qu'autre partie de votre application. Tant que le package utilise uniquement les modules de bibliothèque standard fournis par app-engine en production, il s'exécute comme prévu. La structure du répertoire ressemblerait à ceci:

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

merci, tlslite peut être importé maintenant. J'ai une question rapide ... J'ai essayé d'importer M2Crypto (le dossier contient le dossier de __init__.py). Cependant, le fichier EVP.py nécessite un fichier dans un sous-répertoire au même niveau que M2Crypto (un dossier appelé SWIG). Pour cette raison, l'importation de l'EVP entraîne une erreur indiquant que le fichier est introuvable. Des pensées? – mrmo123

+0

J'ai fait des recherches plus sur pourquoi je ne peux pas importer le module EVP et réaliser que c'est un peu hors de portée ici. Merci pour votre aide si ... J'ai été en mesure de faire fonctionner tlslite. Malheureusement, la signature du module tlslite ne fonctionne pas pour amazon cloudfront. – mrmo123

+0

Malheureusement, il semble que M2Crypto n'est pas un pur python - le dossier SWIG est plein de code C - donc il n'y a aucune chance qu'il fonctionne comme sur app-engine. Utilisez plutôt la version de PyCrypto fournie par le moteur d'application, http://code.google.com/appengine/docs/python/tools/libraries.html#PyCrypto, disponible dans l'environnement de l'application. – philofinfinitejest