Tôi dường như không thể bắt tay làm việc đúng cách.Yêu cầu Python gửi chứng chỉ dưới dạng chuỗi
cert = 'path/to/cert_file.pem'
url = 'https://example.com/api'
requests.get(url, cert=cert, verify=True)
Điều này là tốt khi tôi sử dụng tại địa phương nơi tôi có tệp. Chúng tôi lưu trữ ứng dụng của chúng tôi trên heroku và sử dụng environvariables.
Mô-đun yêu cầu dường như không chấp nhận chứng chỉ dưới dạng chuỗi. ví dụ.
$ export CERTIFICATE="long-list-of-characters"
requests.get(url, cert=get_env('CERTIFICATE'), verify=True)
Tôi cũng đã thử một cái gì đó như thế này:
cert = tempfile.NamedTemporaryFile()
cert.write(CERTIFICATE)
cert.seek(0)
requests.get(url, cert=cert.name, verify=True)
Trước hết, nó hoạt động tại địa phương nhưng không phải trên Heroku. Dù sao, nó không cảm thấy như một giải pháp vững chắc. Tôi gặp lỗi bắt tay SSL.
Mọi đề xuất?
Có thể trùng lặp của [Làm thế nào để mở ssl socket bằng cách sử dụng chứng chỉ được lưu trữ trong các biến chuỗi trong python] (http://stackoverflow.com/questions/12336239/how -to-open-ssl-socket-using-certificate-được lưu-trong-chuỗi-biến-in-python) –
@Gelbander, người đã ký cert_file.pem? Nó có được ký tự bởi Cơ quan cấp chứng chỉ gốc/tùy chỉnh của bạn không? Bạn đã thử tải lên tệp pem của mình lên Heroku chưa, chỉ để chắc chắn rằng nó hoạt động thông qua đường dẫn đầy đủ của pem trong Heroku? –
Ngoài ra tôi không chắc chắn bằng cách sử dụng các biến env là cách ưa thích. Nó có thể tốt hơn bằng cách sử dụng "heroku certs: thêm server.crt server.key" –