Netflix / lemur-docker

Docker files for the Lemur certificate orchestration tool
170 stars 88 forks source link

When downloading certs, got error "ERROR in schema: initializer for ctype 'char[]' must be a str or list or tuple, not unicode" #13

Closed clement-splk closed 6 years ago

clement-splk commented 7 years ago

Looks like it is related to PyOpenSSL issue: https://github.com/pyca/pyopenssl/issues/15

The following is the traceback -

Downloading certs [2017-02-24 23:39:05,752] ERROR in schema: initializer for ctype 'char[]' must be a str or list or tuple, not unicode Traceback (most recent call last): File "/www/lemur/lemur/common/schema.py", line 158, in decorated_function resp = f(*args, kwargs) File "/www/lemur/lemur/certificates/views.py", line 272, in post return service.create(data) File "/www/lemur/lemur/certificates/service.py", line 244, in create cert = Certificate(kwargs) File "", line 4, in init File "/www/lemur/local/lib/python2.7/site-packages/sqlalchemy/orm/state.py", line 414, in _initialize_instance manager.dispatch.init_failure(self, args, kwargs) File "/www/lemur/local/lib/python2.7/site-packages/sqlalchemy/util/langhelpers.py", line 60, in exit compat.reraise(exc_type, exc_value, exc_tb) File "/www/lemur/local/lib/python2.7/site-packages/sqlalchemy/orm/state.py", line 411, in _initialize_instance return manager.original_init(*mixed[1:], *kwargs) File "/www/lemur/lemur/certificates/models.py", line 123, in init cert = lemur.common.utils.parse_certificate(kwargs['body']) File "/www/lemur/lemur/common/utils.py", line 50, in parse_certificate return x509.load_pem_x509_certificate(body, default_backend()) File "/www/lemur/local/lib/python2.7/site-packages/cryptography/x509/base.py", line 43, in load_pem_x509_certificate return backend.load_pem_x509_certificate(data) File "/www/lemur/local/lib/python2.7/site-packages/cryptography/hazmat/backends/multibackend.py", line 341, in load_pem_x509_certificate return b.load_pem_x509_certificate(data) File "/www/lemur/local/lib/python2.7/site-packages/cryptography/hazmat/backends/openssl/backend.py", line 1169, in load_pem_x509_certificate mem_bio = self._bytes_to_bio(data) File "/www/lemur/local/lib/python2.7/site-packages/cryptography/hazmat/backends/openssl/backend.py", line 490, in _bytes_to_bio data_char_p = self._ffi.new("char[]", data) TypeError: initializer for ctype 'char[]' must be a str or list or tuple, not unicode initializer for ctype 'char[]' must be a str or list or tuple, not unicode Traceback (most recent call last): File "/www/lemur/lemur/common/schema.py", line 158, in decorated_function resp = f(args, kwargs) File "/www/lemur/lemur/certificates/views.py", line 272, in post return service.create(data) File "/www/lemur/lemur/certificates/service.py", line 244, in create cert = Certificate(kwargs) File "", line 4, in init File "/www/lemur/local/lib/python2.7/site-packages/sqlalchemy/orm/state.py", line 414, in _initialize_instance manager.dispatch.init_failure(self, args, kwargs) File "/www/lemur/local/lib/python2.7/site-packages/sqlalchemy/util/langhelpers.py", line 60, in exit compat.reraise(exc_type, exc_value, exc_tb) File "/www/lemur/local/lib/python2.7/site-packages/sqlalchemy/orm/state.py", line 411, in _initialize_instance return manager.original_init(*mixed[1:], **kwargs) File "/www/lemur/lemur/certificates/models.py", line 123, in init cert = lemur.common.utils.parse_certificate(kwargs['body']) File "/www/lemur/lemur/common/utils.py", line 50, in parse_certificate return x509.load_pem_x509_certificate(body, default_backend()) File "/www/lemur/local/lib/python2.7/site-packages/cryptography/x509/base.py", line 43, in load_pem_x509_certificate return backend.load_pem_x509_certificate(data) File "/www/lemur/local/lib/python2.7/site-packages/cryptography/hazmat/backends/multibackend.py", line 341, in load_pem_x509_certificate return b.load_pem_x509_certificate(data) File "/www/lemur/local/lib/python2.7/site-packages/cryptography/hazmat/backends/openssl/backend.py", line 1169, in load_pem_x509_certificate mem_bio = self._bytes_to_bio(data) File "/www/lemur/local/lib/python2.7/site-packages/cryptography/hazmat/backends/openssl/backend.py", line 490, in _bytes_to_bio data_char_p = self._ffi.new("char[]", data) TypeError: initializer for ctype 'char[]' must be a str or list or tuple, not unicode

kevgliss commented 7 years ago

I've seen this error when running under python27. Can you trying changing the command from python to python3 in https://github.com/Netflix/lemur-docker/blob/master/web/api-start.sh#L44 to see if that resolves your issue?