Ошибки с SSL-сертификатами - PullRequest
0 голосов
/ 25 мая 2019

Мне нужно использовать сертификаты SSl для установления безопасного соединения между клиентом и сервером.

Для создания сертификатов я использовал команды:

openssl genrsa -out root.key 2048
openssl req -x509 -new -nodes -key root.key -sha256 -days 365 -out root.pem
openssl genrsa -out client.key 2048
openssl genrsa -out server.key 2048
openssl req -new -nodes -key client.key -sha256 -days 365 -out client.csr
openssl req -new -nodes -key server.key -sha256 -days 365 -out server.csr
openssl x509 -req -in client.csr -CA root.pem -CAkey root.key -CAcreateserial -out client.crt -days 365 -sha256
openssl x509 -req -in server.csr -CA root.pem -CAkey root.key -CAcreateserial -out server.crt -days 365 -sha256

Эти команды создали файлы:

  • client.csr
  • client.key
  • root.key
  • root.pem
  • root.srl
  • server.csr
  • server.key

Мой клиент имеет код:

s= requests.session()
s.cert= ("../certificates/client.csr" , "../certificates/client.key")
s.verify = "../certificates/root.pem"

urllib3.disable_warnings()

resp = s.post('https://localhost:5000/', json = token)

Возвращает ошибку:

(...)
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:645)
(...)
requests.packages.urllib3.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:645)
(...)
requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:645)

И мой сервер имеет код:

context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
context.load_cert_chain('../certificates/server.crt', '../certificates/server.key')
context.load_verify_locations('../certificates/root.pem')
context.verify_mode= ssl.CERT_REQUIRED

(...)

if __name__ == "__main__":
    app.run(debug=False, ssl_context=context, threaded=True)

Что мне делать?

1 Ответ

0 голосов
/ 25 мая 2019

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

requests.post('XXXXXXX', verify=False)
...