сертификат https веб-сервера Python - PullRequest
0 голосов
/ 09 июля 2019

Я хочу запустить веб-сервер Python в Linux (RedHat или CentOS), используя https. Я получил (внутренний) сертификат и получил необходимые промежуточные и корневые сертификаты. Я собрал их всех в один файл server.pem.

Вот мой код:

    httpd = BaseHTTPServer.HTTPServer(('localhost', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)
    cf = '/home/degenaro/workspace/certs/server.pem'
    httpd.socket = ssl.wrap_socket (httpd.socket, certfile=cf, server_side=True)
    httpd.serve_forever()

Вот результат:

Traceback (последний последний вызов):

  File "/home/degenaro/workspace/web.py", line 66, in <module>
    main()
  File "/home/degenaro/workspace/web.py", line 56, in main
    httpd.socket = ssl.wrap_socket (httpd.socket, certfile=cf, server_side=True)
  File "/usr/lib64/python2.7/ssl.py", line 934, in wrap_socket
    ciphers=ciphers)
  File "/usr/lib64/python2.7/ssl.py", line 547, in __init__
    self._context.load_cert_chain(certfile, keyfile)
ssl.SSLError: [PEM] ASN1 lib (_ssl.c:2574)

Что я не так делаю?

Ответы [ 2 ]

0 голосов
/ 09 июля 2019

Прежде всего, было бы полезно, если бы вы могли предоставить версии выпуска используемого вами питона, а также библиотеку OpenSSL.

Кажется, что ошибка в формате .pemфайл.имеет ли он следующую структуру?( как описано здесь )

-----BEGIN CERTIFICATE-----
... (certificate for your server)...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
... (the certificate for the CA)...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
... (the root certificate for the CA's issuer)...
-----END CERTIFICATE-----

также из комментариев, которые я понял, что сертификат сервера недействителен, возможно, из-за неправильной кодировки.пожалуйста попробуйте:

openssl x509 -информировать DER -in [current_server_cert.pem] -out [new_server_cert.pem] [как показано здесь] 2

0 голосов
/ 09 июля 2019

Эта ошибка говорит о том, что SSL_CTX_check_private_key не удалось;таким образом, закрытый ключ неверен.

Убедитесь, что:

  • ваши ключи верны;
  • разрешение закрытого ключа 600;
  • ваш порт открыт и сервер сертификации доступен
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...