CloudfrontSignUrl.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. @Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
  5. @AUTHOR: ASJRD018
  6. @NAME: Ansjer
  7. @software: PyCharm
  8. @DATE: 2018/5/31 11:19
  9. @Version: python3.6
  10. @MODIFY DECORD:ansjer dev
  11. @file: CloudfrontSignUrl.py
  12. @Contact: chanjunkai@163.com
  13. """
  14. from Ansjer.config import *
  15. import datetime
  16. from cryptography.hazmat.backends import default_backend
  17. from cryptography.hazmat.primitives import hashes
  18. from cryptography.hazmat.primitives import serialization
  19. from cryptography.hazmat.primitives.asymmetric import padding
  20. from botocore.signers import CloudFrontSigner
  21. def rsa_signer(message):
  22. with open(os.path.join(BASE_DIR,'Ansjer/file/pk-APKAINI6BNPKV54NHH7Q.pem'), 'rb') as key_file:
  23. private_key = serialization.load_pem_private_key(
  24. key_file.read(),
  25. password=None,
  26. backend=default_backend()
  27. )
  28. signer = private_key.signer(padding.PKCS1v15(), hashes.SHA1())
  29. signer.update(message)
  30. return signer.finalize()
  31. def CloudfrontSignUrl(url):
  32. key_id = 'APKAINI6BNPKV54NHH7Q'
  33. # url = 'http://d3om3d8c0l14oc.cloudfront.net/vod/2N1K3LE78TYJ38CE111A_99/1234.ts'
  34. expire_date = datetime.datetime.now() + datetime.timedelta(days=10)
  35. print(expire_date)
  36. cloudfront_signer = CloudFrontSigner(key_id, rsa_signer)
  37. signed_url = cloudfront_signer.generate_presigned_url(
  38. url, date_less_than=expire_date)
  39. return signed_url