Hướng dẫn python requests cert and key - python yêu cầu chứng chỉ và khóa

Tôi có một bài tập về nhà, nơi tôi phải giao tiếp với một máy chủ. Tôi đang làm nhiệm vụ cuối cùng, nhưng tôi không thể làm cho nó hoạt động. Nhiệm vụ là như sau:

  • Kết nối với http: // [máy chủ IP] và tải xuống các tệp cert.php và key.php.
  • Sau đó, sử dụng các tệp này để nhận https: // [máy chủ IP].
  • Nếu yêu cầu HTTPS thành công, máy chủ sẽ trả lời bằng cờ duy nhất. (Giải pháp của HW)

Tôi có thể tải xuống các tệp không có vấn đề gì, nhưng khi tôi cố gắng sử dụng chúng, tôi nhận được lỗi:

Traceback (most recent call last):
  File "C:\Users\user\PycharmProjects\pythonProject\venv\lib\site-packages\urllib3\connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "C:\Users\user\PycharmProjects\pythonProject\venv\lib\site-packages\urllib3\connectionpool.py", line 382, in _make_request
    self._validate_conn(conn)
  File "C:\Users\user\PycharmProjects\pythonProject\venv\lib\site-packages\urllib3\connectionpool.py", line 1010, in _validate_conn
    conn.connect()
  File "C:\Users\user\PycharmProjects\pythonProject\venv\lib\site-packages\urllib3\connection.py", line 411, in connect
    self.sock = ssl_wrap_socket(
  File "C:\Users\user\PycharmProjects\pythonProject\venv\lib\site-packages\urllib3\util\ssl_.py", line 432, in ssl_wrap_socket
    ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls)
  File "C:\Users\user\PycharmProjects\pythonProject\venv\lib\site-packages\urllib3\util\ssl_.py", line 474, in _ssl_wrap_socket_impl
    return ssl_context.wrap_socket(sock)
  File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\ssl.py", line 500, in wrap_socket
    return self.sslsocket_class._create(
  File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\ssl.py", line 1040, in _create
    self.do_handshake()
  File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\ssl.py", line 1309, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate (_ssl.c:1122)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\user\PycharmProjects\pythonProject\venv\lib\site-packages\requests\adapters.py", line 439, in send
    resp = conn.urlopen(
  File "C:\Users\user\PycharmProjects\pythonProject\venv\lib\site-packages\urllib3\connectionpool.py", line 755, in urlopen
    retries = retries.increment(
  File "C:\Users\user\PycharmProjects\pythonProject\venv\lib\site-packages\urllib3\util\retry.py", line 574, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='152.66.249.144', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate (_ssl.c:1122)')))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\user\PycharmProjects\pythonProject\HF\hf_script.py", line 195, in <module>
    final_conn = requests.get(url_https,
  File "C:\Users\user\PycharmProjects\pythonProject\venv\lib\site-packages\requests\api.py", line 76, in get
    return request('get', url, params=params, **kwargs)
  File "C:\Users\user\PycharmProjects\pythonProject\venv\lib\site-packages\requests\api.py", line 61, in request
    return session.request(method=method, url=url, **kwargs)
  File "C:\Users\user\PycharmProjects\pythonProject\venv\lib\site-packages\requests\sessions.py", line 542, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Users\user\PycharmProjects\pythonProject\venv\lib\site-packages\requests\sessions.py", line 655, in send
    r = adapter.send(request, **kwargs)
  File "C:\Users\user\PycharmProjects\pythonProject\venv\lib\site-packages\requests\adapters.py", line 514, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='152.66.249.144', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate (_ssl.c:1122)')))

Process finished with exit code 1

Tôi cũng đã thử lưu các tệp với tiện ích mở rộng .pem, tôi thậm chí không biết nếu điều đó có ý nghĩa, nhưng không hoạt động. Hơn nữa, tôi đã cố gắng sử dụng ssl và tạo ra một bối cảnh chưa được xác minh, nhưng nó nói Cannot find reference '_create_unverified_context' in 'ssl.pyi'

Đây là mã tôi làm việc với:

# Creating request with session cookie
s = requests.session()
r = s.post(url, data=data)

# Downloading the cert
cert = s.get(cert_url)
open('cert.php', 'wb').write(cert.content)

# Downloading the key
key = s.get(key_url)
open('key.php', 'wb').write(key.content)

final_conn = requests.get(url_https,
                          cert=('C:/Users/user/PycharmProjects/pythonProject/HF/cert.php',
                                'C:/Users/user/PycharmProjects/pythonProject/HF/key.php'))
print(final_conn.text)

Làm cách nào để bỏ qua chứng chỉ SSL trong HTTP Yêu cầu Python?

Phương pháp 1: Truyền xác minh = Sai để yêu cầu Phương thức với URL cũng chuyển tham số xác minh = sai cho phương thức để vô hiệu hóa kiểm tra bảo mật.Passing verify=False to request method Along with the URL also pass the verify=False parameter to the method in order to disable the security checks.

Yêu cầu Python chứng chỉ SSL là gì?

Yêu cầu xác minh chứng chỉ SSL cho các yêu cầu HTTPS, giống như trình duyệt web.Chứng chỉ SSL là các tệp dữ liệu nhỏ liên kết kỹ thuật số khóa mật mã với chi tiết của một tổ chức.Thông thường, một trang web có chứng chỉ SSL được gọi là trang web an toàn.small data files that digitally bind a cryptographic key to an organization's details. Often, a website with a SSL certificate is termed as secure website.

Làm cách nào để sửa lỗi chứng chỉ SSL trong Python?

Giải pháp cho vấn đề của bạn:..
Tải xuống chứng chỉ xác thực tên miền là *.Tệp CRT hoặc *PEM ..
Mở tệp trong trình chỉnh sửa và sao chép nội dung của nó vào bảng tạm ..
Tìm cacert của bạn.Vị trí PEM: Từ yêu cầu.....
Chỉnh sửa cacert.....
Lưu tệp và thưởng thức các yêu cầu !.

Yêu cầu có sử dụng certifi không?

Yêu cầu sử dụng chứng chỉ từ Chứng nhận gói.Điều này cho phép người dùng cập nhật chứng chỉ đáng tin cậy của họ mà không thay đổi phiên bản yêu cầu.Trước phiên bản 2.16, các yêu cầu đã gói một bộ CAS gốc mà nó tin cậy, có nguồn gốc từ cửa hàng Mozilla Trust.. This allows for users to update their trusted certificates without changing the version of Requests. Before version 2.16, Requests bundled a set of root CAs that it trusted, sourced from the Mozilla trust store.