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

Mô-đun này cung cấp quyền truy cập vào các phương tiện xác thực ngang hàng và mã hóa Bảo mật tầng vận chuyển [thường được gọi là “Lớp cổng bảo mật”] cho các ổ cắm mạng, cả phía máy khách và phía máy chủ. Mô-đun này sử dụng thư viện OpenSSL. Nó có sẵn trên tất cả các hệ thống Unix hiện đại, Windows, macOS và có thể là các nền tảng bổ sung, miễn là OpenSSL được cài đặt trên nền tảng đó

Ghi chú

Một số hành vi có thể phụ thuộc vào nền tảng, vì các cuộc gọi được thực hiện tới các API socket của hệ điều hành. Phiên bản OpenSSL đã cài đặt cũng có thể gây ra các biến thể trong hành vi. Ví dụ: TLSv1. 3 với OpenSSL phiên bản 1. 1. 1

Cảnh báo

Không sử dụng mô-đun này khi chưa đọc Cân nhắc về bảo mật . Làm như vậy có thể dẫn đến cảm giác bảo mật sai lầm, vì cài đặt mặc định của mô-đun ssl không nhất thiết phải phù hợp với ứng dụng của bạn.

Tính khả dụng . không phải Emscripten, không phải WASI.

Mô-đun này không hoạt động hoặc không khả dụng trên nền tảng WebAssembly

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
6 và
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
7. Xem Nền tảng WebAssugging để biết thêm thông tin.

Phần này ghi lại các đối tượng và chức năng trong mô-đun

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
5;

Mô-đun này cung cấp một lớp,

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
9, bắt nguồn từ loại
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
0 và cung cấp một trình bao bọc giống ổ cắm cũng mã hóa và giải mã dữ liệu đi qua ổ cắm bằng SSL. Nó hỗ trợ các phương thức bổ sung như
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
1, truy xuất chứng chỉ của phía bên kia của kết nối và
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
2, truy xuất mật mã được sử dụng cho kết nối an toàn

Đối với các ứng dụng tinh vi hơn, lớp

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
3 giúp quản lý các cài đặt và chứng chỉ, sau đó có thể được kế thừa bởi các ổ cắm SSL được tạo thông qua phương pháp
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
4

Đã thay đổi trong phiên bản 3. 5. 3. Đã cập nhật để hỗ trợ liên kết với OpenSSL 1. 1. 0

Đã thay đổi trong phiên bản 3. 6. OpenSSL 0. 9. 8, 1. 0. 0 và 1. 0. 1 không được dùng nữa và không còn được hỗ trợ. Trong tương lai, mô-đun ssl sẽ yêu cầu ít nhất OpenSSL 1. 0. 2 hoặc 1. 1. 0.

Đã thay đổi trong phiên bản 3. 10. PEP 644 đã được triển khai. Mô-đun ssl yêu cầu OpenSSL 1. 1. 1 hoặc mới hơn.

Việc sử dụng các hằng số và hàm không dùng nữa dẫn đến cảnh báo không dùng nữa

Hàm, hằng số và ngoại lệ¶

Tạo ổ cắm¶

Kể từ Python 3. 2 và 2. 7. 9, nên sử dụng

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
4 của một thể hiện
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
6 để bọc ổ cắm dưới dạng đối tượng
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
7. Hàm trợ giúp
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
8 trả về ngữ cảnh mới với cài đặt mặc định an toàn. Hàm
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
9 cũ không được dùng nữa vì nó vừa không hiệu quả vừa không hỗ trợ chỉ báo tên máy chủ [SNI] và khớp tên máy chủ

Ví dụ về ổ cắm máy khách với ngữ cảnh mặc định và ngăn xếp kép IPv4/IPv6

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
4

Ví dụ về ổ cắm máy khách với ngữ cảnh tùy chỉnh và IPv4

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
5

Ví dụ ổ cắm máy chủ đang nghe trên localhost IPv4

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
6

Tạo ngữ cảnh¶

Một chức năng tiện lợi giúp tạo các đối tượng

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
6 cho các mục đích chung

ssl. create_default_context[mục đích=Mục đích. SERVER_AUTH , cafile=Không có, capath=None, cadata=None]

Trả về một đối tượng

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
6 mới với cài đặt mặc định cho mục đích nhất định. Các cài đặt được chọn bởi mô-đun
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
5 và thường thể hiện mức độ bảo mật cao hơn so với khi gọi trực tiếp hàm tạo
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
6

cafile, capath, cadata đại diện cho các chứng chỉ CA tùy chọn đáng tin cậy để xác minh chứng chỉ, như trong

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
14. Nếu cả ba đều là
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
15, chức năng này có thể chọn tin cậy các chứng chỉ CA mặc định của hệ thống để thay thế

Các cài đặt là.

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
16 hoặc
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
17,
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
18 và
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
19 với bộ mật mã mã hóa cao không có RC4 và không có bộ mật mã không được xác thực. Chuyển
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
70 vì mục đích đặt
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
71 thành
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
72 và tải chứng chỉ CA [khi ít nhất một trong các cafile, capath hoặc cadata được cung cấp] hoặc sử dụng
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
73 để tải chứng chỉ CA mặc định

Khi

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
74 được hỗ trợ và biến môi trường
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
75 được đặt, thì
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
8 sẽ bật ghi nhật ký khóa

Ghi chú

Giao thức, tùy chọn, mật mã và các cài đặt khác có thể thay đổi thành các giá trị hạn chế hơn bất cứ lúc nào mà không cần phản đối trước. Các giá trị thể hiện sự cân bằng hợp lý giữa khả năng tương thích và bảo mật

Nếu ứng dụng của bạn cần các cài đặt cụ thể, bạn nên tạo một

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
6 và tự áp dụng các cài đặt đó

Ghi chú

Nếu bạn thấy rằng khi một số máy khách hoặc máy chủ cũ hơn cố gắng kết nối với một

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
6 được tạo bởi chức năng này và chúng gặp lỗi cho biết “Bộ giao thức hoặc bộ mật mã không khớp”, thì có thể chúng chỉ hỗ trợ SSL3. 0 mà chức năng này loại trừ bằng cách sử dụng
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
19. SSL3. 0 được coi là hoàn toàn bị phá vỡ. Nếu bạn vẫn muốn tiếp tục sử dụng chức năng này nhưng vẫn cho phép SSL 3. 0 kết nối, bạn có thể kích hoạt lại chúng bằng cách sử dụng

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3

Mới trong phiên bản 3. 4

Đã thay đổi trong phiên bản 3. 4. 4. RC4 đã bị xóa khỏi chuỗi mật mã mặc định.

Đã thay đổi trong phiên bản 3. 6. ChaCha20/Poly1305 đã được thêm vào chuỗi mật mã mặc định.

3DES đã bị xóa khỏi chuỗi mật mã mặc định

Đã thay đổi trong phiên bản 3. 8. Đã thêm hỗ trợ ghi khóa vào

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
75.

Đã thay đổi trong phiên bản 3. 10. Bối cảnh hiện sử dụng giao thức

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
16 hoặc
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
17 thay vì chung chung
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
13.

Ngoại lệ¶

ngoại lệ ssl. Lỗi SSL

Tăng lên để báo hiệu lỗi từ việc triển khai SSL cơ bản [hiện do thư viện OpenSSL cung cấp]. Điều này biểu thị một số vấn đề trong lớp xác thực và mã hóa cấp cao hơn được đặt chồng lên kết nối mạng bên dưới. Lỗi này là một loại phụ của

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
14. Mã lỗi và thông báo của phiên bản
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
15 được cung cấp bởi thư viện OpenSSL

Đã thay đổi trong phiên bản 3. 3. ______415 từng là một kiểu phụ của

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
17.

thư viện

Một chuỗi ghi nhớ chỉ định mô hình con OpenSSL xảy ra lỗi, chẳng hạn như

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
18,
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
19 hoặc
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
80. Phạm vi của các giá trị có thể tùy thuộc vào phiên bản OpenSSL

Mới trong phiên bản 3. 3

lý do

Một chuỗi ghi nhớ chỉ định lý do xảy ra lỗi này, ví dụ:

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
81. Phạm vi của các giá trị có thể tùy thuộc vào phiên bản OpenSSL

Mới trong phiên bản 3. 3

ngoại lệ ssl. SSLZeroReturnError

Một lớp con của

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
15 được nâng lên khi cố gắng đọc hoặc ghi và kết nối SSL đã bị đóng hoàn toàn. Lưu ý rằng điều này không có nghĩa là phương tiện vận chuyển cơ bản [đọc TCP] đã bị đóng

Mới trong phiên bản 3. 3

ngoại lệ ssl. SSLWantReadError

Một lớp con của

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
15 được tạo ra bởi ổ cắm SSL không chặn khi cố gắng đọc hoặc ghi dữ liệu nhưng cần nhận thêm dữ liệu .

Mới trong phiên bản 3. 3

ngoại lệ ssl. Lỗi SSLWantWrite

Một lớp con của

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
15 được tạo ra bởi ổ cắm SSL không chặn khi cố gắng đọc hoặc ghi dữ liệu nhưng cần gửi thêm dữ liệu .

Mới trong phiên bản 3. 3

ngoại lệ ssl. Lỗi SSLSyscall

Một lớp con của

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
15 xuất hiện khi gặp phải lỗi hệ thống trong khi cố gắng thực hiện thao tác trên ổ cắm SSL. Thật không may, không có cách nào dễ dàng để kiểm tra số errno ban đầu

Mới trong phiên bản 3. 3

ngoại lệ ssl. SSLEOFLỗi

Một lớp con của

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
15 được nâng lên khi kết nối SSL bị ngắt đột ngột. Nói chung, bạn không nên cố gắng sử dụng lại quá trình vận chuyển cơ bản khi gặp phải lỗi này

Mới trong phiên bản 3. 3

ngoại lệ ssl. Lỗi SSLCertVerification

Một lớp con của

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
15 được nâng lên khi xác thực chứng chỉ không thành công

Mới trong phiên bản 3. 7

verify_code

Một số lỗi số biểu thị lỗi xác minh

verify_message

Một chuỗi có thể đọc được của con người về lỗi xác minh

ngoại lệ ssl. Lỗi chứng chỉ

Bí danh cho

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
88

Đã thay đổi trong phiên bản 3. 7. Ngoại lệ hiện là bí danh cho

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
88.

Tạo ngẫu nhiên¶

ssl. RAND_byte[num]

Trả về num byte giả ngẫu nhiên mạnh về mật mã. Tăng

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
15 nếu PRNG chưa được tạo đủ dữ liệu hoặc nếu hoạt động không được hỗ trợ bởi phương thức RAND hiện tại.
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
91 có thể được sử dụng để kiểm tra trạng thái của PRNG và
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
92 có thể được sử dụng để tạo PRNG

Đối với hầu hết tất cả các ứng dụng, nên sử dụng

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
93

Đọc bài viết trên Wikipedia, Trình tạo số giả ngẫu nhiên an toàn bằng mật mã [CSPRNG], để biết các yêu cầu của trình tạo mã hóa mạnh

Mới trong phiên bản 3. 3

ssl. RAND_pseudo_byte[num]

Trả về [byte, is_cryptographic]. byte là num byte giả ngẫu nhiên, is_cryptographic là

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
94 nếu byte được tạo mạnh về mặt mật mã. Tăng một
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
15 nếu hoạt động không được hỗ trợ bởi phương thức RAND hiện tại

Các chuỗi byte giả ngẫu nhiên được tạo sẽ là duy nhất nếu chúng có đủ độ dài, nhưng không nhất thiết là không thể đoán trước. Chúng có thể được sử dụng cho các mục đích phi mã hóa và cho các mục đích nhất định trong các giao thức mã hóa, nhưng thường không dùng để tạo khóa, v.v.

Đối với hầu hết tất cả các ứng dụng, nên sử dụng

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
93

Mới trong phiên bản 3. 3

Không dùng nữa kể từ phiên bản 3. 6. OpenSSL đã ngừng sử dụng

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
97, thay vào đó hãy sử dụng
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
98.

ssl. RAND_status[]

Trả lại

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
94 nếu trình tạo số giả ngẫu nhiên SSL đã được chọn với tính ngẫu nhiên 'đủ' và nếu không thì trả lại
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
500. Bạn có thể sử dụng
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
501 và
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
502 để tăng tính ngẫu nhiên của trình tạo số giả ngẫu nhiên

ssl. RAND_add[byte , entropy]

Trộn các byte đã cho vào trình tạo số giả ngẫu nhiên SSL. Tham số entropy [số float] là giới hạn dưới của entropy chứa trong chuỗi [vì vậy bạn luôn có thể sử dụng

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
503]. Xem RFC 1750 để biết thêm thông tin về các nguồn entropy

Đã thay đổi trong phiên bản 3. 5. Có thể ghi đối tượng giống như byte hiện đã được chấp nhận.

Xử lý chứng chỉ¶

ssl. match_hostname[cert , hostname]

Xác minh rằng chứng chỉ [ở định dạng đã giải mã được trả về bởi

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
504] khớp với tên máy chủ đã cho. Các quy tắc được áp dụng là những quy tắc để kiểm tra danh tính của máy chủ HTTPS như được nêu trong RFC 2818, RFC 5280 và RFC 6125. Ngoài HTTPS, chức năng này phải phù hợp để kiểm tra danh tính của máy chủ trong các giao thức dựa trên SSL khác nhau như FTPS, IMAPS, POPS và các giao thức khác

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
505 được nâng lên khi thất bại. Khi thành công, chức năng không trả về gì

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'

Mới trong phiên bản 3. 2

Đã thay đổi trong phiên bản 3. 3. 3. Chức năng hiện tuân theo RFC 6125, phần 6. 4. 3 và không khớp với nhiều ký tự đại diện [e. g.

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
506 hoặc
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
507] hoặc ký tự đại diện bên trong đoạn tên miền quốc tế hóa [IDN]. Các nhãn IDN A như
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
508 vẫn được hỗ trợ, nhưng
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
509 không còn khớp với
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
510.

Đã thay đổi trong phiên bản 3. 5. Tính năng khớp địa chỉ IP, khi xuất hiện trong trường tên chủ thể của chứng chỉ, hiện đã được hỗ trợ.

Đã thay đổi trong phiên bản 3. 7. Chức năng này không còn được sử dụng cho các kết nối TLS. Kết hợp tên máy chủ hiện được thực hiện bởi OpenSSL.

Cho phép ký tự đại diện khi nó ở ngoài cùng bên trái và là ký tự duy nhất trong phân đoạn đó. Các ký tự đại diện một phần như

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
511 không còn được hỗ trợ

Không dùng nữa kể từ phiên bản 3. 7

ssl. cert_time_to_seconds[cert_time]

Trả về thời gian tính bằng giây kể từ Epoch, được cung cấp chuỗi

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
512 đại diện cho ngày “not Before” hoặc “not After” từ chứng chỉ ở định dạng strptime
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
513 [ngôn ngữ C]

Đây là một ví dụ

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
1

Ngày “not Before” hoặc “not After” phải sử dụng GMT [RFC 5280]

Đã thay đổi trong phiên bản 3. 5. Hiểu thời gian đầu vào là thời gian tính theo UTC như được chỉ định bởi múi giờ ‘GMT’ trong chuỗi đầu vào. Múi giờ địa phương đã được sử dụng trước đây. Trả về một số nguyên [không có phân số của giây ở định dạng đầu vào]

ssl. get_server_certificate[addr , ssl_version, ca_certs=None[, timeout]]

Cung cấp địa chỉ

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
514 của máy chủ được bảo vệ SSL, dưới dạng một cặp [tên máy chủ, số cổng], tìm nạp chứng chỉ của máy chủ và trả về dưới dạng chuỗi được mã hóa PEM. Nếu
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
515 được chỉ định, hãy sử dụng phiên bản giao thức SSL đó để cố gắng kết nối với máy chủ. Nếu
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
516 được chỉ định, thì đó phải là một tệp chứa danh sách các chứng chỉ gốc, cùng định dạng như được sử dụng cho cùng một tham số trong
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
4. Cuộc gọi sẽ cố gắng xác thực chứng chỉ máy chủ dựa trên bộ chứng chỉ gốc đó và sẽ không thành công nếu nỗ lực xác thực không thành công. Thời gian chờ có thể được chỉ định với tham số
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
518

Đã thay đổi trong phiên bản 3. 3. Chức năng này hiện tương thích với IPv6.

Đã thay đổi trong phiên bản 3. 5. Ssl_version mặc định được thay đổi từ

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
519 thành
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
13 để tương thích tối đa với các máy chủ hiện đại.

Đã thay đổi trong phiên bản 3. 10. Tham số thời gian chờ đã được thêm vào.

ssl. DER_cert_to_PEM_cert[DER_cert_byte]

Đưa ra một chứng chỉ dưới dạng một đốm byte được mã hóa DER, trả về một phiên bản chuỗi được mã hóa PEM của cùng một chứng chỉ

ssl. PEM_cert_to_DER_cert[PEM_cert_string]

Cấp chứng chỉ dưới dạng chuỗi ASCII PEM, trả về chuỗi byte được mã hóa DER cho cùng chứng chỉ đó

ssl. get_default_verify_paths[]

Trả về một bộ được đặt tên với các đường dẫn đến cafile và capath mặc định của OpenSSL. Các đường dẫn giống như được sử dụng bởi

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
521. Giá trị trả về là một bộ có tên
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
522.

  • ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    523 - đường dẫn đến cafile đã giải quyết hoặc
    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    15 nếu tệp không tồn tại,

  • ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    525 - giải quyết đường dẫn đến capath hoặc
    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    15 nếu thư mục không tồn tại,

  • ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    527 - Khóa môi trường của OpenSSL trỏ đến cafile,

  • ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    528 - đường dẫn được mã hóa cứng đến cafile,

  • ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    529 - Khóa môi trường của OpenSSL trỏ đến capath,

  • ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    530 - đường dẫn được mã hóa cứng đến thư mục capath

Mới trong phiên bản 3. 4

ssl. enum_certificates[store_name]

Truy xuất chứng chỉ từ cửa hàng chứng chỉ hệ thống của Windows. store_name có thể là một trong số

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
531,
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
532 hoặc
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
533. Windows cũng có thể cung cấp các cửa hàng chứng chỉ bổ sung

Hàm trả về một danh sách các bộ dữ liệu [cert_bytes, encoding_type, trust]. encoding_type chỉ định mã hóa của cert_bytes. Nó là

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
534 cho X. 509 ASN. 1 dữ liệu hoặc
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
535 cho PKCS#7 ASN. 1 dữ liệu. Trust chỉ định mục đích của chứng chỉ dưới dạng một bộ OIDS hoặc chính xác là
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
94 nếu chứng chỉ đáng tin cậy cho mọi mục đích

Thí dụ

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
7

Tính khả dụng . các cửa sổ.

Mới trong phiên bản 3. 4

ssl. enum_crls[store_name]

Truy xuất CRL từ cửa hàng chứng chỉ hệ thống của Windows. store_name có thể là một trong số

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
531,
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
532 hoặc
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
533. Windows cũng có thể cung cấp các cửa hàng chứng chỉ bổ sung

Hàm trả về một danh sách các bộ dữ liệu [cert_bytes, encoding_type, trust]. encoding_type chỉ định mã hóa của cert_bytes. Nó là

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
534 cho X. 509 ASN. 1 dữ liệu hoặc
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
535 cho PKCS#7 ASN. 1 dữ liệu

Tính khả dụng . các cửa sổ.

Mới trong phiên bản 3. 4

ssl. wrap_socket[sock , tệp khóa=None, certfile=None, server_side=False, cert_reqs=CERT_NONE, ssl_version=PROTOCOL_TLS, ca_certs=None, do_handshake_on_connect=True, suppress_ragged_eofs=True, ciphers=None]

Lấy một phiên bản

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
542 của
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
0 và trả về một phiên bản của
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
9, một kiểu con của
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
0, bao bọc ổ cắm bên dưới trong ngữ cảnh SSL.
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
542 phải là ổ cắm
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
547;

Bên trong, chức năng tạo một

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
6 với giao thức ssl_version và
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
549 được đặt thành cert_reqs. Nếu các tham số keyfile, certfile, ca_certs hoặc ciphers được đặt thì các giá trị được chuyển đến
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
550,
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
14 và
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
552

Các đối số server_side, do_handshake_on_connect, và booster_ragged_eofs có cùng ý nghĩa như

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
4

Không dùng nữa kể từ phiên bản 3. 7. Kể từ Python 3. 2 và 2. 7. 9, nên sử dụng

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
4 thay vì
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
9. Chức năng cấp cao nhất bị hạn chế và tạo ra một ổ cắm máy khách không an toàn mà không có dấu hiệu tên máy chủ hoặc tên máy chủ phù hợp.

Hằng số¶

Tất cả các hằng số hiện là bộ sưu tập

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
556 hoặc
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
557

Mới trong phiên bản 3. 6

ssl. CERT_NONE

Giá trị có thể có cho

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
558 hoặc tham số
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
559 thành
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
9. Ngoại trừ
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
16, nó là chế độ mặc định. Với các ổ cắm phía máy khách, hầu như mọi chứng chỉ đều được chấp nhận. Các lỗi xác thực, chẳng hạn như chứng chỉ không đáng tin cậy hoặc hết hạn, sẽ bị bỏ qua và không hủy bỏ quá trình bắt tay TLS/SSL

Ở chế độ máy chủ, không có chứng chỉ nào được yêu cầu từ máy khách, vì vậy máy khách không gửi bất kỳ chứng chỉ nào để xác thực chứng chỉ ứng dụng khách

Xem thảo luận về Cân nhắc về bảo mật bên dưới.

ssl. CERT_OPTIONAL

Giá trị có thể có cho

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
558 hoặc tham số
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
559 thành
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
9. Ở chế độ máy khách,
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
565 có ý nghĩa tương tự như
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
72. Thay vào đó, nên sử dụng
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
72 cho các ổ cắm phía máy khách

Ở chế độ máy chủ, yêu cầu chứng chỉ ứng dụng khách được gửi đến ứng dụng khách. Máy khách có thể bỏ qua yêu cầu hoặc gửi chứng chỉ để thực hiện xác thực chứng chỉ máy khách TLS. Nếu khách hàng chọn gửi chứng chỉ, nó đã được xác minh. Bất kỳ lỗi xác minh nào sẽ hủy bỏ bắt tay TLS ngay lập tức

Việc sử dụng cài đặt này yêu cầu phải chuyển một bộ chứng chỉ CA hợp lệ, cho

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
14 hoặc dưới dạng giá trị của tham số
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
516 cho
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
9

ssl. CERT_REQUIRED

Giá trị có thể có cho

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
558 hoặc tham số
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
559 thành
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
9. Trong chế độ này, các chứng chỉ được yêu cầu từ phía bên kia của kết nối ổ cắm; . Chế độ này không đủ để xác minh chứng chỉ ở chế độ máy khách vì nó không khớp với tên máy chủ.
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
575 cũng phải được bật để xác minh tính xác thực của chứng chỉ.
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
16 sử dụng
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
72 và bật
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
575 theo mặc định

Với ổ cắm máy chủ, chế độ này cung cấp xác thực chứng chỉ ứng dụng khách TLS bắt buộc. Yêu cầu chứng chỉ ứng dụng khách được gửi đến ứng dụng khách và ứng dụng khách phải cung cấp chứng chỉ hợp lệ và đáng tin cậy

Việc sử dụng cài đặt này yêu cầu phải chuyển một bộ chứng chỉ CA hợp lệ, cho

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
14 hoặc dưới dạng giá trị của tham số
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
516 cho
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
9

lớp ssl. Chế độ xác minh

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
556 bộ sưu tập các hằng số CERT_*

Mới trong phiên bản 3. 6

ssl. VERIFY_DEFAULT

Giá trị có thể có cho

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
583. Trong chế độ này, danh sách thu hồi chứng chỉ [CRL] không được chọn. Theo mặc định, OpenSSL không yêu cầu cũng như không xác minh CRL

Mới trong phiên bản 3. 4

ssl. VERIFY_CRL_CHECK_LEAF

Giá trị có thể có cho

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
583. Trong chế độ này, chỉ có chứng chỉ ngang hàng được kiểm tra nhưng không có chứng chỉ CA trung gian nào được kiểm tra. Chế độ yêu cầu CRL hợp lệ được ký bởi nhà phát hành chứng chỉ ngang hàng [CA tổ tiên trực tiếp của nó]. Nếu không có CRL thích hợp nào được tải với
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
585, quá trình xác thực sẽ không thành công

Mới trong phiên bản 3. 4

ssl. VERIFY_CRL_CHECK_CHAIN

Giá trị có thể có cho

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
583. Ở chế độ này, CRL của tất cả các chứng chỉ trong chuỗi chứng chỉ ngang hàng đều được kiểm tra

Mới trong phiên bản 3. 4

ssl. VERIFY_X509_STRICT

Giá trị có thể có cho

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
583 để vô hiệu hóa cách giải quyết cho X bị hỏng. 509 giấy chứng nhận

Mới trong phiên bản 3. 4

ssl. VERIFY_ALLOW_PROXY_CERTS

Giá trị có thể có cho

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
583 để cho phép xác minh chứng chỉ proxy

Mới trong phiên bản 3. 10

ssl. VERIFY_X509_TRUSTED_FIRST

Giá trị có thể có cho

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
583. Nó hướng dẫn OpenSSL ưu tiên các chứng chỉ đáng tin cậy khi xây dựng chuỗi tin cậy để xác thực chứng chỉ. Cờ này được bật theo mặc định

Mới trong phiên bản 3. 4. 4

ssl. VERIFY_X509_PARTIAL_CHAIN

Giá trị có thể có cho

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
583. Nó hướng dẫn OpenSSL chấp nhận các CA trung gian trong cửa hàng ủy thác để được coi là neo tin cậy, giống như cách chứng chỉ CA gốc tự ký. Điều này giúp có thể tin cậy các chứng chỉ do CA trung gian cấp mà không cần phải tin tưởng vào CA gốc tổ tiên của nó

Mới trong phiên bản 3. 10

lớp ssl. Xác minh cờ

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
557 bộ sưu tập các hằng số VERIFY_*

Mới trong phiên bản 3. 6

ssl. PROTOCOL_TLS

Chọn phiên bản giao thức cao nhất mà cả máy khách và máy chủ đều hỗ trợ. Mặc dù tên, tùy chọn này có thể chọn cả giao thức “SSL” và “TLS”

Mới trong phiên bản 3. 6

Không dùng nữa kể từ phiên bản 3. 10. Máy khách và máy chủ TLS yêu cầu các cài đặt mặc định khác nhau để liên lạc an toàn. Hằng số giao thức TLS chung không được dùng để thay thế cho

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
16 và
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
17.

ssl. PROTOCOL_TLS_CLIENT

Tự động đàm phán phiên bản giao thức cao nhất mà cả máy khách và máy chủ đều hỗ trợ, đồng thời định cấu hình các kết nối phía máy khách theo ngữ cảnh. Giao thức cho phép

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
72 và
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
575 theo mặc định

Mới trong phiên bản 3. 6

ssl. PROTOCOL_TLS_SERVER

Tự động đàm phán phiên bản giao thức cao nhất mà cả máy khách và máy chủ đều hỗ trợ, đồng thời định cấu hình các kết nối phía máy chủ ngữ cảnh

Mới trong phiên bản 3. 6

ssl. PROTOCOL_SSLv23

Bí danh cho

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
13

Không dùng nữa kể từ phiên bản 3. 6. Sử dụng

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
13 thay thế.

ssl. PROTOCOL_SSLv2

Chọn SSL phiên bản 2 làm giao thức mã hóa kênh

Giao thức này không khả dụng nếu OpenSSL được biên dịch với tùy chọn

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
598

Cảnh báo

SSL phiên bản 2 không an toàn. Việc sử dụng nó rất không được khuyến khích

Không dùng nữa kể từ phiên bản 3. 6. OpenSSL đã xóa hỗ trợ cho SSLv2.

ssl. PROTOCOL_SSLv3

Chọn SSL phiên bản 3 làm giao thức mã hóa kênh

Giao thức này không khả dụng nếu OpenSSL được biên dịch với tùy chọn

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
599

Cảnh báo

SSL phiên bản 3 không an toàn. Việc sử dụng nó rất không được khuyến khích

Không dùng nữa kể từ phiên bản 3. 6. OpenSSL đã ngừng sử dụng tất cả các giao thức dành riêng cho phiên bản. Thay vào đó, hãy sử dụng giao thức mặc định

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
17 hoặc
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
16 với
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
602 và
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
603.

ssl. PROTOCOL_TLSv1

Chọn phiên bản TLS 1. 0 làm giao thức mã hóa kênh

Không dùng nữa kể từ phiên bản 3. 6. OpenSSL đã ngừng sử dụng tất cả các giao thức dành riêng cho phiên bản.

ssl. PROTOCOL_TLSv1_1

Chọn phiên bản TLS 1. 1 làm giao thức mã hóa kênh. Chỉ khả dụng với openssl phiên bản 1. 0. 1+

Mới trong phiên bản 3. 4

Không dùng nữa kể từ phiên bản 3. 6. OpenSSL đã ngừng sử dụng tất cả các giao thức dành riêng cho phiên bản.

ssl. PROTOCOL_TLSv1_2

Chọn phiên bản TLS 1. 2 làm giao thức mã hóa kênh. Chỉ khả dụng với openssl phiên bản 1. 0. 1+

Mới trong phiên bản 3. 4

Không dùng nữa kể từ phiên bản 3. 6. OpenSSL đã ngừng sử dụng tất cả các giao thức dành riêng cho phiên bản.

ssl. OP_ALL

Cho phép giải pháp thay thế cho các lỗi khác nhau có trong các triển khai SSL khác. Tùy chọn này được đặt theo mặc định. Nó không nhất thiết phải đặt các cờ giống như hằng số

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
604 của OpenSSL

Mới trong phiên bản 3. 2

ssl. OP_NO_SSLv2

Ngăn kết nối SSLv2. Tùy chọn này chỉ được áp dụng cùng với

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
13. Nó ngăn các đồng nghiệp chọn SSLv2 làm phiên bản giao thức

Mới trong phiên bản 3. 2

Không dùng nữa kể từ phiên bản 3. 6. SSLv2 không được dùng nữa

ssl. OP_NO_SSLv3

Ngăn chặn kết nối SSLv3. Tùy chọn này chỉ được áp dụng cùng với

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
13. Nó ngăn các đồng nghiệp chọn SSLv3 làm phiên bản giao thức

Mới trong phiên bản 3. 2

Không dùng nữa kể từ phiên bản 3. 6. SSLv3 không được dùng nữa

ssl. OP_NO_TLSv1

Ngăn kết nối TLSv1. Tùy chọn này chỉ được áp dụng cùng với

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
13. Nó ngăn các đồng nghiệp chọn TLSv1 làm phiên bản giao thức

Mới trong phiên bản 3. 2

Không dùng nữa kể từ phiên bản 3. 7. Tùy chọn này không được dùng nữa kể từ OpenSSL 1. 1. 0, hãy sử dụng

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
602 và
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
603 mới để thay thế.

ssl. OP_NO_TLSv1_1

Ngăn chặn TLSv1. 1 kết nối. Tùy chọn này chỉ được áp dụng cùng với

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
13. Nó ngăn các đồng nghiệp chọn TLSv1. 1 là phiên bản giao thức. Chỉ khả dụng với openssl phiên bản 1. 0. 1+

Mới trong phiên bản 3. 4

Không dùng nữa kể từ phiên bản 3. 7. Tùy chọn này không được dùng nữa kể từ OpenSSL 1. 1. 0.

ssl. OP_NO_TLSv1_2

Ngăn chặn TLSv1. 2 kết nối. Tùy chọn này chỉ được áp dụng cùng với

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
13. Nó ngăn các đồng nghiệp chọn TLSv1. 2 là phiên bản giao thức. Chỉ khả dụng với openssl phiên bản 1. 0. 1+

Mới trong phiên bản 3. 4

Không dùng nữa kể từ phiên bản 3. 7. Tùy chọn này không được dùng nữa kể từ OpenSSL 1. 1. 0.

ssl. OP_NO_TLSv1_3

Ngăn chặn TLSv1. 3 kết nối. Tùy chọn này chỉ được áp dụng cùng với

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
13. Nó ngăn các đồng nghiệp chọn TLSv1. 3 làm phiên bản giao thức. TLS 1. 3 khả dụng với OpenSSL 1. 1. 1 hoặc muộn hơn. Khi Python đã được biên dịch dựa trên phiên bản OpenSSL cũ hơn, cờ sẽ mặc định là 0

Mới trong phiên bản 3. 7

Không dùng nữa kể từ phiên bản 3. 7. Tùy chọn này không được dùng nữa kể từ OpenSSL 1. 1. 0. Nó đã được thêm vào 2. 7. 15, 3. 6. 3 và 3. 7. 0 để tương thích ngược với OpenSSL 1. 0. 2.

ssl. OP_NO_RENEGOTIATION

Vô hiệu hóa tất cả thương lượng lại trong TLSv1. 2 trở về trước. Không gửi tin nhắn HelloRequest và bỏ qua các yêu cầu đàm phán lại qua ClientHello

Tùy chọn này chỉ khả dụng với OpenSSL 1. 1. 0h trở về sau

Mới trong phiên bản 3. 7

ssl. OP_CIPHER_SERVER_PREFERENCE

Sử dụng tùy chọn sắp xếp mật mã của máy chủ, thay vì của máy khách. Tùy chọn này không ảnh hưởng đến ổ cắm máy khách và ổ cắm máy chủ SSLv2

Mới trong phiên bản 3. 3

ssl. OP_SINGLE_DH_USE

Ngăn việc sử dụng lại cùng một khóa DH cho các phiên SSL riêng biệt. Điều này cải thiện bí mật về phía trước nhưng đòi hỏi nhiều tài nguyên tính toán hơn. Tùy chọn này chỉ áp dụng cho ổ cắm máy chủ

Mới trong phiên bản 3. 3

ssl. OP_SINGLE_ECDH_USE

Ngăn việc sử dụng lại cùng một khóa ECDH cho các phiên SSL riêng biệt. Điều này cải thiện bí mật về phía trước nhưng đòi hỏi nhiều tài nguyên tính toán hơn. Tùy chọn này chỉ áp dụng cho ổ cắm máy chủ

Mới trong phiên bản 3. 3

ssl. OP_ENABLE_MIDDLEBOX_COMPAT

Gửi các thông báo Thay đổi Thông số Mật mã [CCS] giả trong TLS 1. 3 bắt tay để tạo TLS 1. 3 trông giống TLS 1 hơn. 2 kết nối

Tùy chọn này chỉ khả dụng với OpenSSL 1. 1. 1 trở lên

Mới trong phiên bản 3. 8

ssl. OP_NO_COMPRESSION

Tắt tính năng nén trên kênh SSL. Điều này hữu ích nếu giao thức ứng dụng hỗ trợ sơ đồ nén của riêng nó

Mới trong phiên bản 3. 3

lớp ssl. Tùy chọn

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
557 bộ sưu tập các hằng số OP_*

ssl. OP_NO_TICKET

Ngăn phía khách hàng yêu cầu vé phiên

Mới trong phiên bản 3. 6

ssl. OP_IGNORE_UNEXPECTED_EOF

Bỏ qua việc tắt đột ngột các kết nối TLS

Tùy chọn này chỉ khả dụng với OpenSSL 3. 0. 0 trở lên

Mới trong phiên bản 3. 10

ssl. HAS_ALPN

Liệu thư viện OpenSSL có hỗ trợ tích hợp sẵn cho tiện ích mở rộng TLS đàm phán giao thức lớp ứng dụng như được mô tả trong RFC 7301 hay không

Mới trong phiên bản 3. 5

ssl. HAS_NEVER_CHECK_COMMON_NAME

Thư viện OpenSSL có hỗ trợ tích hợp hay không, không kiểm tra tên chung của chủ đề và

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
614 có thể ghi được hay không

Mới trong phiên bản 3. 7

ssl. HAS_ECDH

Liệu thư viện OpenSSL có hỗ trợ tích hợp sẵn cho trao đổi khóa Diffie-Hellman dựa trên Đường cong Elliptic hay không. Điều này phải đúng trừ khi tính năng này bị vô hiệu hóa rõ ràng bởi nhà phân phối

Mới trong phiên bản 3. 3

ssl. HAS_SNI

Liệu thư viện OpenSSL có hỗ trợ tích hợp sẵn cho phần mở rộng Chỉ định tên máy chủ hay không [như được định nghĩa trong RFC 6066]

Mới trong phiên bản 3. 2

ssl. HAS_NPN

Thư viện OpenSSL có hỗ trợ tích hợp sẵn cho Đàm phán giao thức tiếp theo như được mô tả trong Đàm phán giao thức lớp ứng dụng hay không. Khi đúng, bạn có thể sử dụng phương pháp

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
615 để quảng cáo giao thức nào bạn muốn hỗ trợ

Mới trong phiên bản 3. 3

ssl. HAS_SSLv2

Thư viện OpenSSL có hỗ trợ tích hợp cho SSL 2 hay không. 0 giao thức

Mới trong phiên bản 3. 7

ssl. HAS_SSLv3

Thư viện OpenSSL có hỗ trợ tích hợp cho SSL 3 hay không. 0 giao thức

Mới trong phiên bản 3. 7

ssl. HAS_TLSv1

Thư viện OpenSSL có hỗ trợ tích hợp cho TLS 1 hay không. 0 giao thức

Mới trong phiên bản 3. 7

ssl. HAS_TLSv1_1

Thư viện OpenSSL có hỗ trợ tích hợp cho TLS 1 hay không. 1 giao thức

Mới trong phiên bản 3. 7

ssl. HAS_TLSv1_2

Thư viện OpenSSL có hỗ trợ tích hợp cho TLS 1 hay không. 2 giao thức

Mới trong phiên bản 3. 7

ssl. HAS_TLSv1_3

Thư viện OpenSSL có hỗ trợ tích hợp cho TLS 1 hay không. 3 giao thức

Mới trong phiên bản 3. 7

ssl. CHANNEL_BINDING_TYPES

Danh sách các loại liên kết kênh TLS được hỗ trợ. Các chuỗi trong danh sách này có thể được sử dụng làm đối số cho

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
616

Mới trong phiên bản 3. 3

ssl. OPENSSL_VERSION

Chuỗi phiên bản của thư viện OpenSSL được trình thông dịch tải

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
1

Mới trong phiên bản 3. 2

ssl. OPENSSL_VERSION_INFO

Một bộ năm số nguyên biểu thị thông tin phiên bản về thư viện OpenSSL

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
8

Mới trong phiên bản 3. 2

ssl. OPENSSL_VERSION_NUMBER

Số phiên bản thô của thư viện OpenSSL, dưới dạng một số nguyên

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
9

Mới trong phiên bản 3. 2

ssl. ALERT_DESCRIPTION_HANDSHAKE_FAILUREssl. ALERT_DESCRIPTION_INTERNAL_ERRORALERT_DESCRIPTION_*

Mô tả cảnh báo từ RFC 5246 và các mô tả khác. Cơ quan đăng ký cảnh báo IANA TLS chứa danh sách này và tham chiếu đến các RFC nơi ý nghĩa của chúng được xác định

Được sử dụng làm giá trị trả về của hàm gọi lại trong

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
617

Mới trong phiên bản 3. 4

lớp ssl. Mô tả cảnh báo

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
556 bộ sưu tập các hằng số ALERT_DESCRIPTION_*

Mới trong phiên bản 3. 6

Mục đích. SERVER_AUTH

Tùy chọn cho

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
8 và
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
73. Giá trị này chỉ ra rằng bối cảnh có thể được sử dụng để xác thực các máy chủ web [do đó, nó sẽ được sử dụng để tạo các ổ cắm phía máy khách]

Mới trong phiên bản 3. 4

Mục đích. CLIENT_AUTH

Tùy chọn cho

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
8 và
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
73. Giá trị này cho biết ngữ cảnh có thể được sử dụng để xác thực ứng dụng khách web [do đó, nó sẽ được sử dụng để tạo ổ cắm phía máy chủ]

Mới trong phiên bản 3. 4

lớp ssl. SSLErrorNumber

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
556 bộ sưu tập các hằng số SSL_ERROR_*

Mới trong phiên bản 3. 6

lớp ssl. TLSVersion

Bộ sưu tập các phiên bản SSL và TLS của

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
556 dành cho
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
603 và
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
602

Mới trong phiên bản 3. 7

Phiên bản TLS. MINIMUM_SUPPORTEDTLSVersion. MAXIMUM_SUPPORTED

Phiên bản SSL hoặc TLS được hỗ trợ tối thiểu hoặc tối đa. Đây là những hằng số ma thuật. Giá trị của chúng không phản ánh các phiên bản TLS/SSL thấp nhất và cao nhất hiện có

Phiên bản TLS. SSLv3TLSVersion. TLSv1TLSVersion. TLSv1_1TLSVersion. TLSv1_2TLSVersion. TLSv1_3

SSL3. 0 đến TLS 1. 3

Không dùng nữa kể từ phiên bản 3. 10. Tất cả thành viên

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
627 ngoại trừ
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
628 và
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
629 đều không được dùng nữa.

Ổ cắm SSL¶

lớp ssl. SSLSocket[socket. ổ cắm]

Ổ cắm SSL cung cấp các phương thức sau của Đối tượng ổ cắm .

  • ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    630

  • ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    631

  • ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    632

  • ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    633

  • ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    634

  • ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    635

  • ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    636,
    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    637

  • ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    638,
    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    639

  • ________ 1640, ________ 1641, ________ 1642

  • ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    643

  • ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    644

  • ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    645,
    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    646 [nhưng không được phép truyền đối số
    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    647 khác 0]

  • ________ 1648, ________ 1649 [cùng giới hạn]

  • ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    650 [nhưng
    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    651 sẽ chỉ được sử dụng cho ổ cắm văn bản thuần túy, nếu không thì
    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    648 sẽ được sử dụng]

  • ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    653

Tuy nhiên, do giao thức SSL [và TLS] có khung riêng của nó trên đỉnh TCP, nên phần trừu tượng hóa ổ cắm SSL, ở một số khía cạnh nhất định, có thể khác với đặc điểm kỹ thuật của ổ cắm cấp hệ điều hành thông thường. Đặc biệt xem ghi chú về ổ cắm không chặn .

Các phiên bản của

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
7 phải được tạo bằng phương pháp
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
4

Đã thay đổi trong phiên bản 3. 5. Phương thức

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
650 đã được thêm vào.

Đã thay đổi trong phiên bản 3. 5. _______1653 không đặt lại thời gian chờ của ổ cắm mỗi khi nhận hoặc gửi byte. Thời gian chờ của ổ cắm hiện là tổng thời gian tắt máy tối đa.

Không dùng nữa kể từ phiên bản 3. 6. Việc tạo một phiên bản

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
7 trực tiếp không được chấp nhận, hãy sử dụng
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
4 để bọc một ổ cắm.

Đã thay đổi trong phiên bản 3. 7. ______47 phiên bản phải được tạo bằng

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
9. Trong các phiên bản trước, có thể tạo phiên bản trực tiếp. Điều này chưa bao giờ được ghi lại hoặc hỗ trợ chính thức.

Đã thay đổi trong phiên bản 3. 10. Python hiện sử dụng nội bộ

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
662 và
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
663. Các chức năng hỗ trợ đọc ghi dữ liệu lớn hơn 2 GB. Việc ghi dữ liệu có độ dài bằng 0 không còn bị lỗi với lỗi vi phạm giao thức.

Ổ cắm SSL cũng có các phương thức và thuộc tính bổ sung sau

SLSỔ cắm. đọc[len=1024, buffer=None]

Đọc tối đa len byte dữ liệu từ ổ cắm SSL và trả về kết quả dưới dạng phiên bản

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
664. Nếu bộ đệm được chỉ định, thì hãy đọc vào bộ đệm và trả về số byte đã đọc

Nâng

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
665 hoặc
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
666 nếu ổ cắm không chặn và quá trình đọc sẽ chặn.

Vì bất cứ lúc nào cũng có thể đàm phán lại, một cuộc gọi đến

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
667 cũng có thể gây ra các thao tác ghi

Đã thay đổi trong phiên bản 3. 5. Thời gian chờ của ổ cắm không còn được đặt lại mỗi khi nhận hoặc gửi byte. Thời gian chờ của ổ cắm hiện là tổng thời lượng tối đa để đọc tối đa len byte.

Không dùng nữa kể từ phiên bản 3. 6. Sử dụng

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
645 thay vì
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
667.

SLSỔ cắm. viết[buf]

Ghi buf vào ổ cắm SSL và trả về số byte đã ghi. Đối số buf phải là một đối tượng hỗ trợ giao diện bộ đệm

Nâng

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
665 hoặc
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
666 nếu ổ cắm không chặn và việc ghi sẽ chặn.

Vì bất cứ lúc nào cũng có thể đàm phán lại, một cuộc gọi đến

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
672 cũng có thể gây ra các hoạt động đọc

Đã thay đổi trong phiên bản 3. 5. Thời gian chờ của ổ cắm không còn được đặt lại mỗi khi nhận hoặc gửi byte. Thời gian chờ của ổ cắm hiện là tổng thời lượng tối đa để ghi buf.

Không dùng nữa kể từ phiên bản 3. 6. Sử dụng

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
648 thay vì
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
672.

Ghi chú

Các phương thức

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
667 và
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
672 là các phương thức cấp thấp đọc và ghi dữ liệu cấp ứng dụng không được mã hóa và giải mã/mã hóa nó thành dữ liệu cấp dây được mã hóa. Các phương pháp này yêu cầu kết nối SSL đang hoạt động, tôi. e. cái bắt tay đã hoàn thành và
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
677 không được gọi

Thông thường, bạn nên sử dụng các phương thức API socket như

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
645 và
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
648 thay vì các phương thức này

SLSỔ cắm. do_handshake[]

Thực hiện bắt tay thiết lập SSL

Đã thay đổi trong phiên bản 3. 4. Phương thức bắt tay cũng thực hiện

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
680 khi thuộc tính
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
575 của
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
682 của ổ cắm là đúng.

Đã thay đổi trong phiên bản 3. 5. Thời gian chờ của ổ cắm không còn được đặt lại mỗi khi nhận hoặc gửi byte. Thời gian chờ của ổ cắm hiện là tổng thời lượng tối đa của quá trình bắt tay.

Đã thay đổi trong phiên bản 3. 7. Tên máy chủ hoặc địa chỉ IP được khớp với OpenSSL trong quá trình bắt tay. Chức năng

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
680 không còn được sử dụng. Trong trường hợp OpenSSL từ chối tên máy chủ hoặc địa chỉ IP, quá trình bắt tay sẽ bị hủy bỏ sớm và thông báo cảnh báo TLS sẽ được gửi tới máy ngang hàng.

SLSỔ cắm. getpeercert[binary_form=Sai]

Nếu không có chứng chỉ nào cho thiết bị ngang hàng ở đầu kia của kết nối, hãy trả về

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
15. Nếu quá trình bắt tay SSL chưa được thực hiện, hãy tăng
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
685

Nếu tham số

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
686 là
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
500 và chứng chỉ đã được nhận từ ngang hàng, thì phương thức này trả về một phiên bản
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
688. Nếu chứng chỉ không được xác thực, dict sẽ trống. Nếu chứng chỉ đã được xác thực, nó sẽ trả về một lệnh có nhiều khóa, trong số đó có
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
689 [cơ quan chính cấp chứng chỉ] và
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
690 [cơ quan chính cấp chứng chỉ]. Nếu chứng chỉ chứa một phiên bản của phần mở rộng Tên thay thế chủ đề [xem RFC 3280], thì cũng sẽ có một khóa
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
691 trong từ điển

Các trường

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
689 và
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
690 là các bộ chứa chuỗi các tên phân biệt tương đối [RDN] được cung cấp trong cấu trúc dữ liệu của chứng chỉ cho các trường tương ứng và mỗi RDN là một chuỗi các cặp tên-giá trị. Đây là một ví dụ thực tế

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
50

Ghi chú

Để xác thực chứng chỉ cho một dịch vụ cụ thể, bạn có thể sử dụng hàm

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
680

Nếu tham số

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
686 là
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
94 và chứng chỉ đã được cung cấp, phương thức này trả về dạng được mã hóa DER của toàn bộ chứng chỉ dưới dạng một chuỗi byte hoặc
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
15 nếu máy ngang hàng không cung cấp chứng chỉ. Việc máy ngang hàng có cung cấp chứng chỉ hay không tùy thuộc vào vai trò của ổ cắm SSL

  • đối với ổ cắm SSL của máy khách, máy chủ sẽ luôn cung cấp chứng chỉ, bất kể việc xác thực có được yêu cầu hay không;

  • đối với ổ cắm SSL của máy chủ, máy khách sẽ chỉ cung cấp chứng chỉ khi máy chủ yêu cầu;

Đã thay đổi trong phiên bản 3. 2. Từ điển trả về bao gồm các mục bổ sung như

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
690 và
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
04.

Đã thay đổi trong phiên bản 3. 4. ______1685 được nâng lên khi chưa thực hiện bắt tay. Từ điển được trả lại bao gồm các mục mở rộng X509v3 bổ sung như URI

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
06,
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
07 và
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
08.

Đã thay đổi trong phiên bản 3. 9. Chuỗi địa chỉ IPv6 không còn dòng mới ở cuối.

SLSỔ cắm. mật mã[]

Trả về một bộ ba giá trị chứa tên của mật mã đang được sử dụng, phiên bản của giao thức SSL xác định việc sử dụng nó và số bit bí mật đang được sử dụng. Nếu không có kết nối nào được thiết lập, trả về

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
15

SLSỔ cắm. shared_ciphers[]

Trả về danh sách mật mã được khách hàng chia sẻ trong quá trình bắt tay. Mỗi mục nhập của danh sách được trả về là một bộ ba giá trị chứa tên của mật mã, phiên bản của giao thức SSL xác định việc sử dụng nó và số bit bí mật mà mật mã sử dụng.

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
10 trả về
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
15 nếu không có kết nối nào được thiết lập hoặc ổ cắm là ổ cắm máy khách

Mới trong phiên bản 3. 5

SLSỔ cắm. nén[]

Trả về thuật toán nén đang được sử dụng dưới dạng chuỗi hoặc

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
15 nếu kết nối không được nén

Nếu giao thức cấp cao hơn hỗ trợ cơ chế nén riêng, bạn có thể sử dụng

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
13 để tắt tính năng nén cấp SSL

Mới trong phiên bản 3. 3

SLSỔ cắm. get_channel_binding[cb_type=']

Nhận dữ liệu liên kết kênh cho kết nối hiện tại, dưới dạng đối tượng byte. Trả về

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
15 nếu không được kết nối hoặc quá trình bắt tay chưa hoàn tất

Tham số cb_type cho phép lựa chọn loại liên kết kênh mong muốn. Các loại ràng buộc kênh hợp lệ được liệt kê trong danh sách

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
15. Hiện tại chỉ hỗ trợ liên kết kênh 'tls-unique', được xác định bởi RFC 5929.
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
685 sẽ được nâng lên nếu loại liên kết kênh không được hỗ trợ được yêu cầu

Mới trong phiên bản 3. 3

SLSỔ cắm. sted_alpn_protocol[]

Trả lại giao thức đã được chọn trong quá trình bắt tay TLS. Nếu

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
17 không được gọi, nếu bên kia không hỗ trợ ALPN, nếu ổ cắm này không hỗ trợ bất kỳ giao thức nào do máy khách đề xuất hoặc nếu quá trình bắt tay chưa xảy ra, thì
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
15 được trả về

Mới trong phiên bản 3. 5

SLSỔ cắm. giao_thức_npn_được_chọn[]

Trả lại giao thức cấp cao hơn đã được chọn trong quá trình bắt tay TLS/SSL. Nếu

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
615 không được gọi hoặc nếu bên kia không hỗ trợ NPN hoặc nếu quá trình bắt tay chưa xảy ra, điều này sẽ trả về
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
15

Mới trong phiên bản 3. 3

Không dùng nữa kể từ phiên bản 3. 10. NPN đã được thay thế bởi ALPN

SLSỔ cắm. mở gói[]

Thực hiện bắt tay tắt SSL, loại bỏ lớp TLS khỏi ổ cắm bên dưới và trả về đối tượng ổ cắm bên dưới. Điều này có thể được sử dụng để chuyển từ hoạt động được mã hóa qua kết nối sang không được mã hóa. Ổ cắm được trả lại phải luôn được sử dụng để liên lạc thêm với phía bên kia của kết nối, thay vì ổ cắm ban đầu

SLSỔ cắm. verify_client_post_handshake[]

Yêu cầu xác thực sau bắt tay [PHA] từ TLS 1. 3 khách hàng. PHA chỉ có thể được bắt đầu cho TLS 1. 3 từ ổ cắm phía máy chủ, sau lần bắt tay TLS ban đầu và với PHA được bật ở cả hai bên, xem

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
21

Phương pháp này không thực hiện trao đổi chứng chỉ ngay lập tức. Phía máy chủ gửi Yêu cầu chứng chỉ trong sự kiện ghi tiếp theo và mong đợi máy khách phản hồi bằng chứng chỉ trong sự kiện đọc tiếp theo

Nếu bất kỳ điều kiện tiên quyết nào không được đáp ứng [e. g. không phải TLS 1. 3, PHA không được bật], một

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
15 được nâng lên

Ghi chú

Chỉ khả dụng với OpenSSL 1. 1. 1 và TLS 1. 3 kích hoạt. Không có TLS 1. 3 hỗ trợ, phương pháp tăng

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
23

Mới trong phiên bản 3. 8

SLSỔ cắm. phiên bản[]

Trả lại phiên bản giao thức SSL thực tế được thương lượng bởi kết nối dưới dạng một chuỗi hoặc

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
15 nếu không có kết nối an toàn nào được thiết lập. Tại thời điểm viết bài này, các giá trị trả lại có thể có bao gồm
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
25,
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
26,
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
27,
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
28 và
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
29. Các phiên bản OpenSSL gần đây có thể xác định nhiều giá trị trả về hơn

Mới trong phiên bản 3. 5

SLSỔ cắm. đang chờ xử lý[]

Trả về số byte đã được giải mã có sẵn để đọc, đang chờ kết nối

SLSỔ cắm. bối cảnh

Đối tượng

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
6 mà ổ cắm SSL này được gắn với. Nếu ổ cắm SSL được tạo bằng hàm
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
9 không dùng nữa [chứ không phải
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
4], thì đây là một đối tượng ngữ cảnh tùy chỉnh được tạo cho ổ cắm SSL này

Mới trong phiên bản 3. 2

SLSỔ cắm. server_side

Một boolean là

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
94 cho ổ cắm phía máy chủ và
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
500 cho ổ cắm phía máy khách

Mới trong phiên bản 3. 2

SLSỔ cắm. server_hostname

Tên máy chủ của máy chủ. Loại

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
35 hoặc
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
15 cho ổ cắm phía máy chủ hoặc nếu tên máy chủ không được chỉ định trong hàm tạo

Mới trong phiên bản 3. 2

Đã thay đổi trong phiên bản 3. 7. Thuộc tính bây giờ luôn là văn bản ASCII. Khi

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
37 là tên miền quốc tế hóa [IDN], thuộc tính này hiện lưu trữ dạng nhãn A [
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
38], thay vì dạng nhãn U [
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
39].

SLSỔ cắm. phiên

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
40 cho kết nối SSL này. Phiên khả dụng cho ổ cắm phía máy khách và máy chủ sau khi bắt tay TLS đã được thực hiện. Đối với ổ cắm máy khách, phiên có thể được đặt trước khi
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
41 được gọi để sử dụng lại phiên

Mới trong phiên bản 3. 6

SLSỔ cắm. session_reused

Mới trong phiên bản 3. 6

Bối cảnh SSL¶

Mới trong phiên bản 3. 2

Bối cảnh SSL chứa nhiều dữ liệu tồn tại lâu hơn so với các kết nối SSL đơn lẻ, chẳng hạn như tùy chọn cấu hình SSL, [các] chứng chỉ và [các] khóa riêng tư. Nó cũng quản lý bộ đệm của các phiên SSL cho ổ cắm phía máy chủ, để tăng tốc các kết nối lặp lại từ cùng một máy khách

lớp ssl. SSLContext[giao thức=Không có]

Tạo ngữ cảnh SSL mới. Bạn có thể vượt qua giao thức phải là một trong các hằng số

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
42 được xác định trong mô-đun này. Tham số chỉ định phiên bản nào của giao thức SSL sẽ sử dụng. Thông thường, máy chủ chọn một phiên bản giao thức cụ thể và máy khách phải thích ứng với lựa chọn của máy chủ. Hầu hết các phiên bản không tương thích với các phiên bản khác. Nếu không được chỉ định, giá trị mặc định là
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
13;

Đây là bảng hiển thị phiên bản nào trong máy khách [phía dưới] có thể kết nối với phiên bản nào trong máy chủ [dọc trên cùng]

máy khách / máy chủ

SSLv2

SSLv3

TLS 3

TLSv1

TLSv1. 1

TLSv1. 2

SSLv2

Vâng

không

không 1

không

không

không

SSLv3

không

Vâng

số 2

không

không

không

TLS [SSLv23] 3

không 1

số 2

Vâng

Vâng

Vâng

Vâng

TLSv1

không

không

Vâng

Vâng

không

không

TLSv1. 1

không

không

Vâng

không

Vâng

không

TLSv1. 2

không

không

Vâng

không

không

Vâng

chú thích

1[1,2]

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
6 tắt SSLv2 với
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
18 theo mặc định

2[1,2]

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
6 tắt SSLv3 với
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
19 theo mặc định

3[1,2]

TLS 1. 3 sẽ khả dụng với

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
13 trong OpenSSL >= 1. 1. 1. Không có hằng số PROTOCOL dành riêng cho chỉ TLS 1. 3

Xem thêm

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
8 cho phép mô-đun
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
5 chọn cài đặt bảo mật cho một mục đích nhất định

Đã thay đổi trong phiên bản 3. 6. Bối cảnh được tạo với các giá trị mặc định an toàn. Các tùy chọn

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
13,
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
52, ________ 053, ________ 054, ________ 218 [ngoại trừ ________ 056] và
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
19 [ngoại trừ
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
519] được đặt theo mặc định. Danh sách bộ mật mã ban đầu chỉ chứa các mật mã
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
59, không có mật mã
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
60 và không có mật mã
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
61 [ngoại trừ
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
56].

Không dùng nữa kể từ phiên bản 3. 10. ______46 không có đối số giao thức không được dùng nữa. Lớp ngữ cảnh sẽ yêu cầu giao thức

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
16 hoặc
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
17 trong tương lai.

Đã thay đổi trong phiên bản 3. 10. Bộ mật mã mặc định hiện chỉ bao gồm các mật mã AES và ChaCha20 an toàn với chuyển tiếp bí mật và bảo mật cấp 2. Khóa RSA và DH có ít hơn 2048 bit và khóa ECC có ít hơn 224 bit đều bị cấm.

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
13,
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
16 và
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
17 sử dụng TLS 1. 2 là phiên bản TLS tối thiểu.

Các đối tượng

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
6 có các phương thức và thuộc tính sau

SSLContext. cert_store_stats[]

Lấy thống kê về số lượng X đã nạp. 509 chứng chỉ, số lượng X. 509 chứng chỉ được gắn cờ là chứng chỉ CA và danh sách thu hồi chứng chỉ là từ điển

Ví dụ về bối cảnh có một chứng chỉ CA và một chứng chỉ khác

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
51

Mới trong phiên bản 3. 4

SSLContext. load_cert_chain[certfile , keyfile=None, password=None]

Tải khóa cá nhân và chứng chỉ tương ứng. Chuỗi certfile phải là đường dẫn đến một tệp duy nhất ở định dạng PEM chứa chứng chỉ cũng như bất kỳ số lượng chứng chỉ CA nào cần thiết để thiết lập tính xác thực của chứng chỉ. Chuỗi tệp khóa, nếu có, phải trỏ đến tệp chứa khóa riêng. Nếu không, khóa riêng cũng sẽ được lấy từ certfile. Xem phần thảo luận về Chứng chỉ để biết thêm thông tin về cách lưu trữ chứng chỉ trong tệp chứng chỉ.

Đối số mật khẩu có thể là một chức năng để gọi để lấy mật khẩu để giải mã khóa riêng. Nó sẽ chỉ được gọi nếu khóa riêng được mã hóa và cần có mật khẩu. Nó sẽ được gọi mà không có đối số và nó sẽ trả về một chuỗi, byte hoặc bytearray. Nếu giá trị trả về là một chuỗi, nó sẽ được mã hóa dưới dạng UTF-8 trước khi sử dụng nó để giải mã khóa. Ngoài ra, một giá trị chuỗi, byte hoặc bytearray có thể được cung cấp trực tiếp dưới dạng đối số mật khẩu. Nó sẽ bị bỏ qua nếu khóa riêng không được mã hóa và không cần mật khẩu

Nếu đối số mật khẩu không được chỉ định và mật khẩu được yêu cầu, cơ chế nhắc mật khẩu tích hợp sẵn của OpenSSL sẽ được sử dụng để nhắc người dùng nhập mật khẩu một cách tương tác

Một

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
15 được nâng lên nếu khóa riêng không khớp với chứng chỉ

Đã thay đổi trong phiên bản 3. 3. Mật khẩu đối số tùy chọn mới.

SSLContext. load_default_certs[mục đích=Mục đích. SERVER_AUTH]

Tải một bộ chứng chỉ “cơ quan cấp chứng chỉ” [CA] mặc định từ các vị trí mặc định. Trên Windows, nó tải các chứng chỉ CA từ các cửa hàng hệ thống

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
531 và
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
532. Trên tất cả các hệ thống, nó gọi là
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
521. Trong tương lai, phương thức này cũng có thể tải chứng chỉ CA từ các vị trí khác

Cờ mục đích chỉ định loại chứng chỉ CA nào được tải. Cài đặt mặc định

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
74 tải chứng chỉ, được gắn cờ và tin cậy để xác thực máy chủ web TLS [ổ cắm phía máy khách].
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
75 tải chứng chỉ CA để xác minh chứng chỉ ứng dụng khách ở phía máy chủ

Mới trong phiên bản 3. 4

SSLContext. load_verify_locations[cafile=Không có, capath=None, cadata=None]

Tải một bộ chứng chỉ "cơ quan chứng nhận" [CA] được sử dụng để xác thực chứng chỉ của các đồng nghiệp khác khi

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
71 khác với
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
00. Ít nhất một cafile hoặc capath phải được chỉ định

Phương pháp này cũng có thể tải danh sách hủy bỏ chứng chỉ [CRL] ở định dạng PEM hoặc DER. Để sử dụng CRL,

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
583 phải được định cấu hình đúng cách

Chuỗi cafile, nếu có, là đường dẫn đến tệp chứng chỉ CA được nối ở định dạng PEM. Xem phần thảo luận về Chứng chỉ để biết thêm thông tin về cách sắp xếp các chứng chỉ trong tệp này.

Chuỗi capath, nếu có, là đường dẫn đến thư mục chứa một số chứng chỉ CA ở định dạng PEM, tuân theo bố cục cụ thể của OpenSSL

Đối tượng cadata, nếu có, là một chuỗi ASCII của một hoặc nhiều chứng chỉ được mã hóa PEM hoặc một đối tượng dạng byte của . Giống như với capath, các dòng bổ sung xung quanh chứng chỉ được mã hóa PEM bị bỏ qua nhưng phải có ít nhất một chứng chỉ.

Đã thay đổi trong phiên bản 3. 4. Catadata đối số tùy chọn mới

SSLContext. get_ca_certs[binary_form=Sai]

Nhận danh sách các chứng chỉ “cơ quan chứng nhận” [CA] đã tải. Nếu tham số

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
686 là
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
500 thì mỗi mục trong danh sách là một lệnh giống như đầu ra của
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
504. Mặt khác, phương thức trả về danh sách các chứng chỉ được mã hóa DER. Danh sách được trả về không chứa chứng chỉ từ capath trừ khi chứng chỉ được yêu cầu và tải bởi kết nối SSL

Ghi chú

Chứng chỉ trong thư mục capath không được tải trừ khi chúng đã được sử dụng ít nhất một lần

Mới trong phiên bản 3. 4

SSLContext. get_ciphers[]

Nhận danh sách các mật mã được kích hoạt. Danh sách theo thứ tự ưu tiên mật mã. Xem

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
552

Thí dụ

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
52

Mới trong phiên bản 3. 6

SSLContext. set_default_verify_paths[]

Tải một bộ chứng chỉ "cơ quan chứng nhận" [CA] mặc định từ đường dẫn hệ thống tệp được xác định khi xây dựng thư viện OpenSSL. Thật không may, không có cách nào dễ dàng để biết liệu phương pháp này có thành công hay không. không có lỗi nào được trả về nếu không tìm thấy chứng chỉ nào. Tuy nhiên, khi thư viện OpenSSL được cung cấp như một phần của hệ điều hành, nó có khả năng được cấu hình đúng cách

SSLContext. set_ciphers[ciphers]

Đặt mật mã có sẵn cho ổ cắm được tạo bằng ngữ cảnh này. Nó phải là một chuỗi ở định dạng danh sách mật mã OpenSSL. Nếu không thể chọn mật mã nào [vì các tùy chọn thời gian biên dịch hoặc cấu hình khác cấm sử dụng tất cả các mật mã được chỉ định], một

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
15 sẽ được nâng lên

Ghi chú

khi được kết nối, phương pháp ổ cắm SSL

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
84 sẽ cung cấp mật mã được chọn hiện tại

TLS 1. 3 bộ mật mã không thể bị vô hiệu hóa với

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
85

SSLContext. set_alpn_protocols[giao thức]

Chỉ định giao thức nào ổ cắm sẽ quảng cáo trong quá trình bắt tay SSL/TLS. Nó phải là một danh sách các chuỗi ASCII, như

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
86, được sắp xếp theo sở thích. Việc lựa chọn giao thức sẽ diễn ra trong quá trình bắt tay và sẽ diễn ra theo RFC 7301. Sau khi bắt tay thành công, phương thức
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
87 sẽ trả về giao thức đã thỏa thuận

Phương pháp này sẽ tăng

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
23 nếu
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
89 là
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
500

Mới trong phiên bản 3. 5

SSLContext. set_npn_protocols[giao thức]

Chỉ định giao thức nào ổ cắm sẽ quảng cáo trong quá trình bắt tay SSL/TLS. Nó phải là một danh sách các chuỗi, như

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
86, được sắp xếp theo sở thích. Việc lựa chọn một giao thức sẽ diễn ra trong quá trình bắt tay và sẽ diễn ra theo Thỏa thuận giao thức lớp ứng dụng. Sau khi bắt tay thành công, phương thức
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
92 sẽ trả về giao thức đã thỏa thuận

Phương pháp này sẽ tăng

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
23 nếu
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
94 là
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
500

Mới trong phiên bản 3. 3

Không dùng nữa kể từ phiên bản 3. 10. NPN đã được thay thế bởi ALPN

SSLContext. sni_callback

Đăng ký chức năng gọi lại sẽ được gọi sau khi máy chủ SSL/TLS nhận được thông báo bắt tay Xin chào của Máy khách TLS khi máy khách TLS chỉ định chỉ báo tên máy chủ. Cơ chế chỉ báo tên máy chủ được chỉ định trong RFC 6066 phần 3 - Chỉ định tên máy chủ

Chỉ có thể đặt một cuộc gọi lại cho mỗi

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
6. Nếu sni_callback được đặt thành
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
15 thì chức năng gọi lại bị tắt. Gọi chức năng này lần sau sẽ vô hiệu hóa cuộc gọi lại đã đăng ký trước đó

Hàm gọi lại sẽ được gọi với ba đối số; . Đối số tên máy chủ là văn bản. Đối với tên miền quốc tế hóa, tên máy chủ là IDN nhãn A [

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
38]

Cách sử dụng điển hình của lệnh gọi lại này là thay đổi thuộc tính

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
03 của
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
9 thành một đối tượng mới thuộc loại
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
6 đại diện cho chuỗi chứng chỉ khớp với tên máy chủ

Do giai đoạn đàm phán ban đầu của kết nối TLS, chỉ các phương thức và thuộc tính hạn chế mới có thể sử dụng được như

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
87 và
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
03. Các phương thức
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
504,
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
84 và
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
09 yêu cầu kết nối TLS đã vượt ra ngoài TLS Client Hello và do đó sẽ không trả về các giá trị có ý nghĩa cũng như không thể gọi chúng một cách an toàn

Hàm sni_callback phải trả về

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
15 để cho phép tiếp tục đàm phán TLS. Nếu yêu cầu lỗi TLS, có thể trả về hằng số
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
11. Các giá trị trả về khác sẽ dẫn đến lỗi nghiêm trọng TLS với
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
12

Nếu một ngoại lệ được đưa ra từ chức năng sni_callback, kết nối TLS sẽ chấm dứt với thông báo cảnh báo TLS nghiêm trọng

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
13

Phương pháp này sẽ tăng

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
23 nếu thư viện OpenSSL đã xác định OPENSSL_NO_TLSEXT khi nó được xây dựng

Mới trong phiên bản 3. 7

SSLContext. set_servername_callback[server_name_callback]

Đây là API kế thừa được giữ lại để tương thích ngược. Khi có thể, bạn nên sử dụng

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
15 để thay thế. Server_name_callback đã cho tương tự như sni_callback, ngoại trừ khi tên máy chủ là một tên miền quốc tế hóa được mã hóa IDN, thì server_name_callback nhận được nhãn chữ U đã giải mã [
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
39]

Nếu có lỗi giải mã trên tên máy chủ, kết nối TLS sẽ chấm dứt với thông báo cảnh báo TLS nghiêm trọng

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
12 cho máy khách

Mới trong phiên bản 3. 4

SSLContext. load_dh_params[dhfile]

Tải các tham số tạo khóa cho trao đổi khóa Diffie-Hellman [DH]. Sử dụng trao đổi khóa DH cải thiện tính bảo mật về phía trước với chi phí tài nguyên tính toán [cả trên máy chủ và máy khách]. Tham số dhfile phải là đường dẫn đến tệp chứa tham số DH ở định dạng PEM

Cài đặt này không áp dụng cho ổ cắm máy khách. Bạn cũng có thể sử dụng tùy chọn

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
53 để tăng cường bảo mật hơn nữa

Mới trong phiên bản 3. 3

SSLContext. set_ecdh_curve[curve_name]

Đặt tên đường cong cho trao đổi khóa Diffie-Hellman [ECDH] dựa trên đường cong Elliptic. ECDH nhanh hơn đáng kể so với DH thông thường trong khi được cho là an toàn. Tham số tên đường cong phải là một chuỗi mô tả một đường cong elip nổi tiếng, ví dụ:

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
19 cho một đường cong được hỗ trợ rộng rãi

Cài đặt này không áp dụng cho ổ cắm máy khách. Bạn cũng có thể sử dụng tùy chọn

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
54 để tăng cường bảo mật hơn nữa

Phương pháp này không khả dụng nếu

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
21 là
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
500

Mới trong phiên bản 3. 3

Xem thêm

SSL/TLS & Bảo mật chuyển tiếp hoàn hảo

Vincent Bernat

SSLContext. wrap_socket[sock , server_side=False, do_handshake_on_connect=True, suppress_ragged_eofs=True, server_hostname=None, session=None]

Quấn một ổ cắm Python hiện có và trả về một phiên bản của

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
23 [mặc định là
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
7]. Ổ cắm SSL được trả lại được gắn với ngữ cảnh, cài đặt và chứng chỉ của nó. tất phải là ổ cắm
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
547;

Tham số

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
26 là một boolean xác định xem hành vi phía máy chủ hay phía máy khách được mong muốn từ ổ cắm này

Đối với các ổ cắm phía máy khách, việc xây dựng bối cảnh là lười biếng; . Đối với ổ cắm phía máy chủ, nếu ổ cắm không có thiết bị ngang hàng từ xa, thì ổ cắm đó được coi là ổ cắm đang lắng nghe và gói SSL phía máy chủ được thực hiện tự động trên các kết nối máy khách được chấp nhận thông qua phương thức

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
630. Phương pháp này có thể tăng
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
15

Trên các kết nối máy khách, tham số tùy chọn server_hostname chỉ định tên máy chủ của dịch vụ mà chúng tôi đang kết nối tới. Điều này cho phép một máy chủ duy nhất lưu trữ nhiều dịch vụ dựa trên SSL với các chứng chỉ riêng biệt, khá giống với máy chủ ảo HTTP. Chỉ định server_hostname sẽ tăng

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
685 nếu server_side là đúng

Tham số

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
31 chỉ định liệu có tự động thực hiện bắt tay SSL sau khi thực hiện
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
32 hay không hoặc chương trình ứng dụng sẽ gọi nó một cách rõ ràng hay không bằng cách gọi phương thức
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
33. Việc gọi
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
33 một cách rõ ràng giúp chương trình kiểm soát hành vi chặn của I/O ổ cắm liên quan đến quá trình bắt tay

Tham số

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
35 chỉ định cách phương thức
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
36 sẽ báo hiệu EOF không mong muốn từ đầu kia của kết nối. Nếu được chỉ định là
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
94 [mặc định], nó sẽ trả về một EOF bình thường [một đối tượng byte trống] để phản hồi các lỗi EOF không mong muốn được phát sinh từ ổ cắm bên dưới;

phiên, xem

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
39

Đã thay đổi trong phiên bản 3. 5. Luôn cho phép server_hostname được chuyển, ngay cả khi OpenSSL không có SNI.

Đã thay đổi trong phiên bản 3. 6. đối số phiên đã được thêm vào.

Đã thay đổi trong phiên bản 3. 7. Phương thức trả về một thể hiện của

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
23 thay vì
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
7 được mã hóa cứng.

SSLContext. sslsocket_class

Kiểu trả về của

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
4, mặc định là
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
7. Thuộc tính có thể được ghi đè trên phiên bản của lớp để trả về một lớp con tùy chỉnh của
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
7

Mới trong phiên bản 3. 7

SSLContext. wrap_bio[đến , đi, server_side=False, server_hostname=None, session=None]

Bọc các đối tượng BIO vào và ra và trả về một thể hiện của

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
45 [mặc định là
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
46]. Các thủ tục SSL sẽ đọc dữ liệu đầu vào từ BIO gửi đến và ghi dữ liệu vào BIO gửi đi

Các tham số server_side, server_hostname và session có cùng ý nghĩa như trong

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
4

Đã thay đổi trong phiên bản 3. 6. đối số phiên đã được thêm vào.

Đã thay đổi trong phiên bản 3. 7. Phương thức trả về một thể hiện của

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
45 thay vì
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
46 được mã hóa cứng.

SSLContext. sslobject_class

Kiểu trả về của

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
50, mặc định là
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
46. Thuộc tính có thể được ghi đè trên phiên bản của lớp để trả về một lớp con tùy chỉnh của
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
46

Mới trong phiên bản 3. 7

SSLContext. session_stats[]

Nhận số liệu thống kê về các phiên SSL được tạo hoặc quản lý bởi ngữ cảnh này. Một từ điển được trả về ánh xạ tên của từng phần thông tin thành các giá trị số của chúng. Ví dụ: đây là tổng số lần truy cập và bỏ lỡ trong bộ đệm phiên kể từ khi ngữ cảnh được tạo

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
53

SSLContext. check_hostname

Có khớp với tên máy chủ của chứng chỉ ngang hàng trong

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
33 hay không. Ngữ cảnh của
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
71 phải được đặt thành
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
565 hoặc
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
72 và bạn phải chuyển server_hostname thành
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
9 để khớp với tên máy chủ. Cho phép kiểm tra tên máy chủ tự động đặt
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
71 từ
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
00 thành
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
72. Không thể đặt lại thành
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
00 miễn là tính năng kiểm tra tên máy chủ được bật. Giao thức
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
16 cho phép kiểm tra tên máy chủ theo mặc định. Với các giao thức khác, việc kiểm tra tên máy chủ phải được bật một cách rõ ràng

Thí dụ

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
54

Mới trong phiên bản 3. 4

Đã thay đổi trong phiên bản 3. 7.

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
71 hiện được tự động thay đổi thành
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
72 khi tính năng kiểm tra tên máy chủ được bật và
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
71 là
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
00. Trước đây, hoạt động tương tự sẽ thất bại với một
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
685.

SSLContext. keylog_filename

Ghi các khóa TLS vào tệp nhật ký khóa, bất cứ khi nào tài liệu khóa được tạo hoặc nhận. Tệp keylog chỉ được thiết kế cho mục đích gỡ lỗi. Định dạng tệp được chỉ định bởi NSS và được sử dụng bởi nhiều bộ phân tích lưu lượng như Wireshark. Tệp nhật ký được mở ở chế độ chỉ nối thêm. Ghi được đồng bộ hóa giữa các luồng, nhưng không phải giữa các quy trình

Mới trong phiên bản 3. 8

SSLContext. maximum_version

Thành viên enum

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
627 đại diện cho phiên bản TLS được hỗ trợ cao nhất. Giá trị mặc định là
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
69. Thuộc tính chỉ đọc đối với các giao thức khác ngoài
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
13,
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
16 và
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
17

Các thuộc tính

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
73,
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
74 và
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
549 đều ảnh hưởng đến các phiên bản SSL và TLS được hỗ trợ của ngữ cảnh. Việc thực hiện không ngăn chặn sự kết hợp không hợp lệ. Ví dụ: bối cảnh có
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
76 trong
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
77 và
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
73 được đặt thành
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
628 sẽ không thể thiết lập TLS 1. 2 kết nối

Mới trong phiên bản 3. 7

SSLContext. minimum_version

Giống như

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
603 ngoại trừ đây là phiên bản được hỗ trợ thấp nhất hoặc
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
81

Mới trong phiên bản 3. 7

SSLContext. num_tickets

Kiểm soát số lượng TLS 1. 3 vé phiên của ngữ cảnh

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
17. Cài đặt không ảnh hưởng đến TLS 1. 0 đến 1. 2 kết nối

Mới trong phiên bản 3. 8

SSLContext. tùy chọn

Một số nguyên đại diện cho tập hợp các tùy chọn SSL được bật trong ngữ cảnh này. Giá trị mặc định là

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
83, nhưng bạn có thể chỉ định các tùy chọn khác, chẳng hạn như
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
18 bằng cách ORing chúng lại với nhau

Đã thay đổi trong phiên bản 3. 6. ______1549 trả về cờ

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
86.

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
55

Không dùng nữa kể từ phiên bản 3. 7. Tất cả các tùy chọn

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
87 và
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
88 không được dùng nữa kể từ Python 3. 7. Sử dụng
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
602 và
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
603 để thay thế.

SSLContext. post_handshake_auth

Kích hoạt TLS 1. 3 xác thực ứng dụng khách sau bắt tay. Xác thực sau bắt tay bị tắt theo mặc định và máy chủ chỉ có thể yêu cầu chứng chỉ máy khách TLS trong quá trình bắt tay ban đầu. Khi được bật, máy chủ có thể yêu cầu chứng chỉ máy khách TLS bất kỳ lúc nào sau khi bắt tay

Khi được bật trên các ổ cắm phía máy khách, máy khách sẽ báo hiệu cho máy chủ rằng nó hỗ trợ xác thực sau bắt tay

Khi được bật trên các ổ cắm phía máy chủ, cũng phải đặt

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
558 thành
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
565 hoặc
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
72. Trao đổi chứng chỉ ứng dụng khách thực tế bị trì hoãn cho đến khi
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
94 được gọi và một số I/O được thực hiện

Mới trong phiên bản 3. 8

SSLContext. giao thức

Phiên bản giao thức được chọn khi xây dựng ngữ cảnh. Thuộc tính này là chỉ đọc

SSLContext. hostname_checks_common_name

Liệu

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
575 có quay trở lại để xác minh tên chung chủ đề của chứng chỉ trong trường hợp không có phần mở rộng tên thay thế chủ đề hay không [mặc định. thật]

Mới trong phiên bản 3. 7

Đã thay đổi trong phiên bản 3. 10. Cờ không có tác dụng với OpenSSL trước phiên bản 1. 1. 1k. Trăn 3. 8. 9, 3. 9. 3 và 3. 10 bao gồm cách giải quyết cho các phiên bản trước.

SSLContext. cấp_bảo mật

Một số nguyên đại diện cho mức độ bảo mật cho bối cảnh. Thuộc tính này là chỉ đọc

Mới trong phiên bản 3. 10

SSLContext. verify_flags

Cờ cho các hoạt động xác minh chứng chỉ. Bạn có thể đặt các cờ như

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
96 bằng cách ORing chúng lại với nhau. Theo mặc định, OpenSSL không yêu cầu cũng như không xác minh danh sách thu hồi chứng chỉ [CRL]

Mới trong phiên bản 3. 4

Đã thay đổi trong phiên bản 3. 6. ______1583 trả về cờ

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
98.

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
56

SSLContext. verify_mode

Có nên thử xác minh chứng chỉ của các đồng nghiệp khác hay không và cách xử lý nếu xác minh không thành công. Thuộc tính này phải là một trong số

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
00,
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
565 hoặc
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
72

Đã thay đổi trong phiên bản 3. 6. ______1558 trả về

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
103 enum.

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
57

Giấy chứng nhận¶

Chứng chỉ nói chung là một phần của hệ thống khóa công khai/khóa riêng. Trong hệ thống này, mỗi hiệu trưởng, [có thể là một máy, một người hoặc một tổ chức] được gán một khóa mã hóa hai phần duy nhất. Một phần của khóa là công khai và được gọi là khóa chung; . Hai phần có liên quan với nhau, ở chỗ nếu bạn mã hóa tin nhắn bằng một trong các phần, bạn có thể giải mã nó bằng phần còn lại và chỉ với phần còn lại

Một chứng chỉ chứa thông tin về hai hiệu trưởng. Nó chứa tên của một chủ đề và khóa công khai của chủ đề. Nó cũng chứa một tuyên bố của người ủy nhiệm thứ hai, người phát hành, rằng chủ thể là người mà họ tuyên bố là và đây thực sự là khóa công khai của chủ thể. Tuyên bố của tổ chức phát hành được ký bằng khóa riêng của tổ chức phát hành mà chỉ tổ chức phát hành mới biết. Tuy nhiên, bất kỳ ai cũng có thể xác minh tuyên bố của tổ chức phát hành bằng cách tìm khóa công khai của tổ chức phát hành, giải mã tuyên bố với nó và so sánh nó với thông tin khác trong chứng chỉ. Chứng chỉ cũng chứa thông tin về khoảng thời gian mà nó có hiệu lực. Điều này được thể hiện dưới dạng hai trường, được gọi là “not Before” và “not After”

Trong việc sử dụng chứng chỉ Python, máy khách hoặc máy chủ có thể sử dụng chứng chỉ để chứng minh họ là ai. Mặt khác của kết nối mạng cũng có thể được yêu cầu tạo chứng chỉ và chứng chỉ đó có thể được xác thực theo sự hài lòng của máy khách hoặc máy chủ yêu cầu xác thực đó. Nỗ lực kết nối có thể được đặt để tăng ngoại lệ nếu xác thực không thành công. Việc xác thực được thực hiện tự động bởi khung OpenSSL cơ bản; . Nhưng ứng dụng thường cần cung cấp các bộ chứng chỉ để cho phép quá trình này diễn ra

Python sử dụng tệp để chứa chứng chỉ. Chúng phải được định dạng là “PEM” [xem RFC 1422], là dạng mã hóa cơ sở 64 được bao bọc bởi dòng tiêu đề và dòng cuối trang

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
58

Chuỗi chứng chỉ¶

Các tệp Python chứa chứng chỉ có thể chứa một chuỗi chứng chỉ, đôi khi được gọi là chuỗi chứng chỉ. Chuỗi này sẽ bắt đầu với chứng chỉ cụ thể dành cho chủ sở hữu “là” máy khách hoặc máy chủ, sau đó là chứng chỉ dành cho tổ chức phát hành chứng chỉ đó, sau đó là chứng chỉ dành cho tổ chức phát hành chứng chỉ đó, v.v. . Các chứng chỉ chỉ nên được nối với nhau trong tệp chứng chỉ. Ví dụ: giả sử chúng tôi có một chuỗi ba chứng chỉ, từ chứng chỉ máy chủ của chúng tôi đến chứng chỉ của cơ quan cấp chứng chỉ đã ký chứng chỉ máy chủ của chúng tôi, đến chứng chỉ gốc của cơ quan đã cấp chứng chỉ của cơ quan cấp chứng chỉ

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
59

Chứng chỉ CA¶

Nếu bạn định yêu cầu xác thực mặt kia của chứng chỉ của kết nối, bạn cần cung cấp tệp “CA certs”, chứa đầy chuỗi chứng chỉ cho từng tổ chức phát hành mà bạn sẵn sàng tin tưởng. Một lần nữa, tệp này chỉ chứa các chuỗi này được nối với nhau. Để xác thực, Python sẽ sử dụng chuỗi đầu tiên mà nó tìm thấy trong tệp phù hợp. Tệp chứng chỉ của nền tảng có thể được sử dụng bằng cách gọi

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
73, điều này được thực hiện tự động với
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
8

Khóa kết hợp và chứng chỉ¶

Thường thì khóa riêng được lưu trữ trong cùng một tệp với chứng chỉ; . Nếu khóa riêng được lưu trữ cùng với chứng chỉ, thì khóa này sẽ xuất hiện trước chứng chỉ đầu tiên trong chuỗi chứng chỉ

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
60

Chứng chỉ tự ký¶

Nếu bạn định tạo một máy chủ cung cấp dịch vụ kết nối được mã hóa SSL, bạn sẽ cần phải có chứng chỉ cho dịch vụ đó. Có nhiều cách để có được chứng chỉ phù hợp, chẳng hạn như mua chứng chỉ từ cơ quan cấp chứng chỉ. Một thực tế phổ biến khác là tạo chứng chỉ tự ký. Cách đơn giản nhất để làm điều này là với gói OpenSSL, sử dụng một cái gì đó như sau

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
61

Nhược điểm của chứng chỉ tự ký là nó là chứng chỉ gốc của chính nó và không ai khác sẽ có chứng chỉ đó trong bộ nhớ cache của các chứng chỉ gốc đã biết [và đáng tin cậy] của họ

Ví dụ¶

Kiểm tra hỗ trợ SSL¶

Để kiểm tra sự hiện diện của hỗ trợ SSL trong bản cài đặt Python, mã người dùng nên sử dụng thành ngữ sau

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
62

Vận hành phía máy khách¶

Ví dụ này tạo ngữ cảnh SSL với cài đặt bảo mật được đề xuất cho ổ cắm máy khách, bao gồm xác minh chứng chỉ tự động

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
63

Nếu bạn muốn tự điều chỉnh cài đặt bảo mật, bạn có thể tạo ngữ cảnh từ đầu [nhưng hãy lưu ý rằng bạn có thể không hiểu đúng cài đặt]

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
64

[đoạn mã này giả định rằng hệ điều hành của bạn đặt một gói tất cả các chứng chỉ CA trong

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
109; nếu không, bạn sẽ gặp lỗi và phải điều chỉnh vị trí]

Giao thức

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
16 định cấu hình ngữ cảnh để xác thực chứng chỉ và xác minh tên máy chủ.
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
71 được đặt thành
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
72 và
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
575 được đặt thành
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
94. Tất cả các giao thức khác tạo bối cảnh SSL với các giá trị mặc định không an toàn

Khi bạn sử dụng ngữ cảnh để kết nối với máy chủ,

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
72 và
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
575 xác thực chứng chỉ máy chủ. nó đảm bảo rằng chứng chỉ máy chủ đã được ký bằng một trong các chứng chỉ CA, kiểm tra tính chính xác của chữ ký và xác minh các thuộc tính khác như tính hợp lệ và danh tính của tên máy chủ

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
65

Sau đó, bạn có thể lấy chứng chỉ

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
66

Kiểm tra trực quan cho thấy rằng chứng chỉ xác định dịch vụ mong muốn [nghĩa là máy chủ HTTPS

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
117]

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
67

Bây giờ kênh SSL đã được thiết lập và chứng chỉ đã được xác minh, bạn có thể tiếp tục nói chuyện với máy chủ

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
68

Xem thảo luận về Cân nhắc về bảo mật bên dưới.

Hoạt động phía máy chủ¶

Đối với hoạt động của máy chủ, thông thường, bạn sẽ cần phải có chứng chỉ máy chủ và khóa cá nhân, mỗi khóa trong một tệp. Trước tiên, bạn sẽ tạo ngữ cảnh giữ khóa và chứng chỉ để khách hàng có thể kiểm tra tính xác thực của bạn. Sau đó, bạn sẽ mở một ổ cắm, liên kết nó với một cổng, gọi

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
643 trên đó và bắt đầu đợi các máy khách kết nối

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
69

Khi một máy khách kết nối, bạn sẽ gọi

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
630 trên ổ cắm để lấy ổ cắm mới từ đầu bên kia và sử dụng phương pháp
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
4 của ngữ cảnh để tạo ổ cắm SSL phía máy chủ cho kết nối

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
0

Sau đó, bạn sẽ đọc dữ liệu từ

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
121 và làm điều gì đó với dữ liệu đó cho đến khi bạn hoàn thành công việc với khách hàng [hoặc khách hàng đã hoàn thành công việc với bạn]

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
1

Và quay lại lắng nghe các kết nối máy khách mới [tất nhiên, một máy chủ thực có thể sẽ xử lý từng kết nối máy khách trong một chuỗi riêng biệt hoặc đặt các ổ cắm ở chế độ không chặn . and use an event loop].

Lưu ý về ổ cắm không chặn¶

Ổ cắm SSL hoạt động hơi khác so với ổ cắm thông thường ở chế độ không chặn. Khi làm việc với ổ cắm không chặn, do đó, có một số điều bạn cần lưu ý

  • Hầu hết các phương pháp

    >>> cert = {'subject': [[['commonName', 'example.com'],],]}
    >>> ssl.match_hostname[cert, "example.com"]
    >>> ssl.match_hostname[cert, "example.org"]
    Traceback [most recent call last]:
      File "", line 1, in 
      File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
    ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
    
    7 sẽ tăng
    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    666 hoặc
    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    665 thay vì
    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    125 nếu thao tác I/O sẽ chặn.
    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    665 sẽ được nâng lên nếu thao tác đọc trên ổ cắm bên dưới là cần thiết và
    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    666 cho thao tác ghi trên ổ cắm bên dưới. Lưu ý rằng các nỗ lực ghi vào ổ cắm SSL có thể yêu cầu đọc từ ổ cắm bên dưới trước và các nỗ lực đọc từ ổ cắm SSL có thể yêu cầu ghi trước vào ổ cắm bên dưới

    Đã thay đổi trong phiên bản 3. 5. Trong các phiên bản Python cũ hơn, phương thức

    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    128 trả về 0 thay vì tăng
    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    666 hoặc
    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    665.

  • Gọi

    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    131 cho bạn biết rằng ổ cắm cấp hệ điều hành có thể được đọc từ [hoặc ghi vào], nhưng điều đó không ngụ ý rằng có đủ dữ liệu ở lớp SSL phía trên. Ví dụ: chỉ một phần của khung SSL có thể đã đến. Do đó, bạn phải sẵn sàng xử lý các lỗi của
    >>> cert = {'subject': [[['commonName', 'example.com'],],]}
    >>> ssl.match_hostname[cert, "example.com"]
    >>> ssl.match_hostname[cert, "example.org"]
    Traceback [most recent call last]:
      File "", line 1, in 
      File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
    ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
    
    36 và
    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    128, đồng thời thử lại sau một cuộc gọi khác tới
    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    131

  • Ngược lại, vì lớp SSL có khung riêng nên ổ cắm SSL vẫn có thể có sẵn dữ liệu để đọc mà

    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    131 không biết về nó. Do đó, trước tiên bạn nên gọi
    >>> cert = {'subject': [[['commonName', 'example.com'],],]}
    >>> ssl.match_hostname[cert, "example.com"]
    >>> ssl.match_hostname[cert, "example.org"]
    Traceback [most recent call last]:
      File "", line 1, in 
      File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
    ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
    
    36 để lấy hết mọi dữ liệu có thể có sẵn, sau đó chỉ chặn cuộc gọi
    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    131 nếu vẫn cần thiết

    [tất nhiên, các quy định tương tự cũng được áp dụng khi sử dụng các nguyên mẫu khác như

    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    138 hoặc các nguyên mẫu trong mô-đun
    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    139]

  • Bản thân quá trình bắt tay SSL sẽ không bị chặn. phương pháp

    >>> cert = {'subject': [[['commonName', 'example.com'],],]}
    >>> ssl.match_hostname[cert, "example.com"]
    >>> ssl.match_hostname[cert, "example.org"]
    Traceback [most recent call last]:
      File "", line 1, in 
      File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
    ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
    
    33 phải được thử lại cho đến khi trả về thành công. Đây là một bản tóm tắt sử dụng
    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    131 để chờ sự sẵn sàng của ổ cắm

    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    2

Xem thêm

Mô-đun

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
142 hỗ trợ ổ cắm SSL không chặn và cung cấp API cấp cao hơn. Nó thăm dò các sự kiện bằng cách sử dụng mô-đun
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
139 và xử lý các ngoại lệ
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
666,
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
665 và
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
125. Nó cũng chạy bắt tay SSL không đồng bộ.

Hỗ trợ BIO bộ nhớ¶

Mới trong phiên bản 3. 5

Kể từ khi mô-đun SSL được giới thiệu trong Python 2. 6, lớp

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
7 đã cung cấp hai lĩnh vực chức năng liên quan nhưng riêng biệt

  • Xử lý giao thức SSL

  • Mạng IO

API IO mạng giống với API được cung cấp bởi

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
0, từ đó
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
7 cũng kế thừa. Điều này cho phép một ổ cắm SSL được sử dụng như một sự thay thế thả xuống cho một ổ cắm thông thường, giúp dễ dàng thêm hỗ trợ SSL vào một ứng dụng hiện có

Kết hợp xử lý giao thức SSL và IO mạng thường hoạt động tốt, nhưng có một số trường hợp không hoạt động. Một ví dụ là các khung IO không đồng bộ muốn sử dụng một mô hình ghép kênh IO khác với mô hình “chọn/thăm dò trên một bộ mô tả tệp” [dựa trên mức độ sẵn sàng] được giả định bởi

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
0 và bởi các quy trình IO của ổ cắm OpenSSL nội bộ. Điều này chủ yếu phù hợp với các nền tảng như Windows, nơi mô hình này không hiệu quả. Với mục đích này, một biến thể giảm phạm vi của
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
7 được gọi là
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
46 được cung cấp

lớp ssl. SSLObject

Một biến thể giảm phạm vi của

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
7 đại diện cho một phiên bản giao thức SSL không chứa bất kỳ phương thức IO mạng nào. Lớp này thường được sử dụng bởi các tác giả khung muốn triển khai IO không đồng bộ cho SSL thông qua bộ đệm bộ nhớ

Lớp này triển khai giao diện trên đầu đối tượng SSL cấp thấp do OpenSSL triển khai. Đối tượng này nắm bắt trạng thái của kết nối SSL nhưng không cung cấp bất kỳ IO mạng nào. IO cần được thực hiện thông qua các đối tượng “BIO” riêng biệt là lớp trừu tượng IO của OpenSSL

Lớp này không có hàm tạo công khai. Phiên bản

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
46 phải được tạo bằng phương pháp
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
155. Phương pháp này sẽ tạo phiên bản
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
46 và liên kết nó với một cặp BIO. BIO đến được sử dụng để truyền dữ liệu từ Python sang phiên bản giao thức SSL, trong khi BIO gửi đi được sử dụng để truyền dữ liệu theo cách khác

Các phương pháp sau đây có sẵn

  • ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    682

  • >>> cert = {'subject': [[['commonName', 'example.com'],],]}
    >>> ssl.match_hostname[cert, "example.com"]
    >>> ssl.match_hostname[cert, "example.org"]
    Traceback [most recent call last]:
      File "", line 1, in 
      File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
    ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
    
    26

  • ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    37

  • >>> cert = {'subject': [[['commonName', 'example.com'],],]}
    >>> ssl.match_hostname[cert, "example.com"]
    >>> ssl.match_hostname[cert, "example.org"]
    Traceback [most recent call last]:
      File "", line 1, in 
      File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
    ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
    
    39

  • ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    161

  • ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    667

  • ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    672

  • >>> cert = {'subject': [[['commonName', 'example.com'],],]}
    >>> ssl.match_hostname[cert, "example.com"]
    >>> ssl.match_hostname[cert, "example.org"]
    Traceback [most recent call last]:
      File "", line 1, in 
      File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
    ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
    
    1

  • ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    165

  • ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    166

  • >>> cert = {'subject': [[['commonName', 'example.com'],],]}
    >>> ssl.match_hostname[cert, "example.com"]
    >>> ssl.match_hostname[cert, "example.org"]
    Traceback [most recent call last]:
      File "", line 1, in 
      File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
    ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
    
    2

  • ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    10

  • ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    169

  • ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    170

  • ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    41

  • ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    172

  • ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    173

  • ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    174

  • ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    175

Khi so sánh với

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
7, đối tượng này thiếu các tính năng sau

  • Bất kỳ hình thức IO mạng nào;

  • Không có máy móc do_handshake_on_connect. Bạn phải luôn gọi thủ công

    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    41 để bắt đầu bắt tay

  • Không có cách xử lý của DSP_ragged_eofs. Tất cả các điều kiện cuối tệp vi phạm giao thức đều được báo cáo qua ngoại lệ

    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    181

  • Cuộc gọi phương thức

    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    173 không trả về bất kỳ thứ gì, không giống như đối với ổ cắm SSL nơi nó trả về ổ cắm bên dưới

  • Cuộc gọi lại server_name_callback được chuyển đến

    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    617 sẽ nhận phiên bản
    >>> cert = {'subject': [[['commonName', 'example.com'],],]}
    >>> ssl.match_hostname[cert, "example.com"]
    >>> ssl.match_hostname[cert, "example.org"]
    Traceback [most recent call last]:
      File "", line 1, in 
      File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
    ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
    
    46 thay vì phiên bản
    >>> cert = {'subject': [[['commonName', 'example.com'],],]}
    >>> ssl.match_hostname[cert, "example.com"]
    >>> ssl.match_hostname[cert, "example.org"]
    Traceback [most recent call last]:
      File "", line 1, in 
      File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
    ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
    
    7 làm tham số đầu tiên của nó

Một số lưu ý liên quan đến việc sử dụng

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
46

  • Tất cả IO trên

    >>> cert = {'subject': [[['commonName', 'example.com'],],]}
    >>> ssl.match_hostname[cert, "example.com"]
    >>> ssl.match_hostname[cert, "example.org"]
    Traceback [most recent call last]:
      File "", line 1, in 
      File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
    ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
    
    46 là không chặn . Điều này có nghĩa là ví dụ
    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    667 sẽ tăng
    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    665 nếu nó cần nhiều dữ liệu hơn BIO sắp tới có sẵn.

  • Không có lệnh gọi cấp mô-đun

    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    155 như đối với
    >>> cert = {'subject': [[['commonName', 'example.com'],],]}
    >>> ssl.match_hostname[cert, "example.com"]
    >>> ssl.match_hostname[cert, "example.org"]
    Traceback [most recent call last]:
      File "", line 1, in 
      File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
    ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
    
    9. Một
    >>> cert = {'subject': [[['commonName', 'example.com'],],]}
    >>> ssl.match_hostname[cert, "example.com"]
    >>> ssl.match_hostname[cert, "example.org"]
    Traceback [most recent call last]:
      File "", line 1, in 
      File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
    ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
    
    46 luôn được tạo thông qua một
    >>> cert = {'subject': [[['commonName', 'example.com'],],]}
    >>> ssl.match_hostname[cert, "example.com"]
    >>> ssl.match_hostname[cert, "example.org"]
    Traceback [most recent call last]:
      File "", line 1, in 
      File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
    ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
    
    6

Đã thay đổi trong phiên bản 3. 7. ______446 phiên bản phải được tạo bằng

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
155. Trong các phiên bản trước, có thể tạo phiên bản trực tiếp. Điều này chưa bao giờ được ghi lại hoặc hỗ trợ chính thức.

SSLObject giao tiếp với thế giới bên ngoài bằng cách sử dụng bộ đệm bộ nhớ. Lớp

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
179 cung cấp bộ nhớ đệm có thể được sử dụng cho mục đích này. Nó bao bọc một đối tượng BIO bộ nhớ OpenSSL [IO cơ bản]

lớp ssl. Sinh học bộ nhớ

Bộ đệm bộ nhớ có thể được sử dụng để truyền dữ liệu giữa Python và phiên bản giao thức SSL

đang chờ xử lý

Trả về số byte hiện có trong bộ nhớ đệm

eof

Một boolean cho biết liệu BIO bộ nhớ có hiện tại ở vị trí cuối tệp hay không

đọc[n=- 1]

Đọc tối đa n byte từ bộ nhớ đệm. Nếu n không được chỉ định hoặc âm, tất cả các byte được trả về

viết[buf]

Viết các byte từ buf vào bộ nhớ BIO. Đối số buf phải là một đối tượng hỗ trợ giao thức bộ đệm

Giá trị trả về là số byte được ghi, giá trị này luôn bằng độ dài của buf

write_eof[]

Viết một điểm đánh dấu EOF vào bộ nhớ BIO. Sau khi phương thức này được gọi, việc gọi

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
672 là bất hợp pháp. Thuộc tính
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
198 sẽ trở thành true sau khi tất cả dữ liệu hiện có trong bộ đệm đã được đọc

Phiên SSL¶

Mới trong phiên bản 3. 6

lớp ssl. Phiên SSL

Đối tượng phiên được sử dụng bởi

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
39

idthời gianthời gian chờticket_lifetime_hinthas_ticket

Cân nhắc về Bảo mật¶

Giá trị mặc định tốt nhất¶

Đối với việc sử dụng của khách hàng, nếu bạn không có bất kỳ yêu cầu đặc biệt nào đối với chính sách bảo mật của mình, bạn nên sử dụng hàm

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
8 để tạo bối cảnh SSL của mình. Nó sẽ tải các chứng chỉ CA đáng tin cậy của hệ thống, cho phép xác thực chứng chỉ và kiểm tra tên máy chủ, đồng thời cố gắng chọn các cài đặt mật mã và giao thức an toàn hợp lý

Ví dụ: đây là cách bạn sẽ sử dụng lớp

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
701 để tạo kết nối an toàn, đáng tin cậy đến máy chủ SMTP

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
3

Nếu cần chứng chỉ ứng dụng khách cho kết nối, thì có thể thêm chứng chỉ đó bằng

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
550

Ngược lại, nếu bạn tạo bối cảnh SSL bằng cách tự gọi hàm tạo

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
6, nó sẽ không có xác thực chứng chỉ cũng như kiểm tra tên máy chủ được bật theo mặc định. Nếu bạn làm như vậy, vui lòng đọc các đoạn bên dưới để đạt được mức bảo mật tốt

Cài đặt thủ công¶

Xác minh chứng chỉ¶

Khi gọi trực tiếp hàm tạo

>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
6, giá trị mặc định là
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
00. Vì nó không xác thực máy ngang hàng khác, nên nó có thể không an toàn, đặc biệt là ở chế độ máy khách, nơi mà hầu hết thời gian bạn muốn đảm bảo tính xác thực của máy chủ mà bạn đang nói chuyện. Do đó, khi ở chế độ máy khách, bạn nên sử dụng
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
72. Tuy nhiên, bản thân nó không đủ; . Đối với nhiều giao thức và ứng dụng, dịch vụ có thể được xác định bằng tên máy chủ; . Kiểm tra thông thường này được thực hiện tự động khi bật
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
709

Đã thay đổi trong phiên bản 3. 7. Kết hợp tên máy chủ hiện được thực hiện bởi OpenSSL. Python không còn sử dụng

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
680.

Ở chế độ máy chủ, nếu bạn muốn xác thực ứng dụng khách của mình bằng lớp SSL [thay vì sử dụng cơ chế xác thực cấp cao hơn], bạn cũng sẽ phải chỉ định

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
72 và kiểm tra chứng chỉ ứng dụng khách tương tự

Phiên bản giao thức¶

SSL phiên bản 2 và 3 được coi là không an toàn và do đó nguy hiểm khi sử dụng. Nếu bạn muốn khả năng tương thích tối đa giữa máy khách và máy chủ, bạn nên sử dụng

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
16 hoặc
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
17 làm phiên bản giao thức. SSLv2 và SSLv3 bị tắt theo mặc định

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
4

Bối cảnh SSL được tạo ở trên sẽ chỉ cho phép TLSv1. 2 trở lên [nếu được hệ thống của bạn hỗ trợ] kết nối với máy chủ.

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
16 ngụ ý xác thực chứng chỉ và kiểm tra tên máy chủ theo mặc định. Bạn phải tải chứng chỉ vào ngữ cảnh

Lựa chọn mật mã¶

Nếu bạn có các yêu cầu bảo mật nâng cao, có thể tinh chỉnh các mật mã được kích hoạt khi đàm phán phiên SSL thông qua phương pháp

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
552. Bắt đầu từ Python 3. 2. 3, mô-đun ssl tắt một số mật mã yếu nhất định theo mặc định, nhưng bạn có thể muốn hạn chế hơn nữa lựa chọn mật mã. Đảm bảo đọc tài liệu của OpenSSL về định dạng danh sách mật mã. Nếu bạn muốn kiểm tra xem mật mã nào được kích hoạt bởi một danh sách mật mã nhất định, hãy sử dụng lệnh
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
716 hoặc
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
717 trên hệ thống của bạn

Đa xử lý¶

Nếu sử dụng mô-đun này như một phần của ứng dụng đa xử lý [ví dụ: sử dụng mô-đun

ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
718 hoặc
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
719], hãy lưu ý rằng trình tạo số ngẫu nhiên bên trong của OpenSSL không xử lý đúng quy trình rẽ nhánh. Các ứng dụng phải thay đổi trạng thái PRNG của quy trình gốc nếu chúng sử dụng bất kỳ tính năng SSL nào với
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
720. Bất kỳ cuộc gọi thành công nào của
>>> cert = {'subject': [[['commonName', 'example.com'],],]}
>>> ssl.match_hostname[cert, "example.com"]
>>> ssl.match_hostname[cert, "example.org"]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'
92,
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
722 hoặc
ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
ctx.options &= ~ssl.OP_NO_SSLv3
723 là đủ

TLS 1. 3¶

Mới trong phiên bản 3. 7

TLS 1. 3 hoạt động hơi khác so với phiên bản trước của TLS/SSL. Một số TLS mới 1. 3 tính năng chưa khả dụng

  • TLS 1. 3 sử dụng một bộ mật mã khác nhau. Tất cả các bộ mật mã AES-GCM và ChaCha20 đều được bật theo mặc định. Phương pháp

    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    552 không thể bật hoặc tắt bất kỳ TLS 1 nào. Chưa có 3 mật mã, nhưng
    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    716 trả về chúng

  • Vé phiên không còn được gửi như một phần của quá trình bắt tay ban đầu và được xử lý theo cách khác.

    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    726 và
    ctx = ssl.create_default_context[Purpose.CLIENT_AUTH]
    ctx.options &= ~ssl.OP_NO_SSLv3
    
    40 không tương thích với TLS 1. 3

  • Chứng chỉ phía máy khách cũng không còn được xác minh trong quá trình bắt tay ban đầu. Máy chủ có thể yêu cầu chứng chỉ bất cứ lúc nào. Máy khách xử lý các yêu cầu chứng chỉ trong khi họ gửi hoặc nhận dữ liệu ứng dụng từ máy chủ

  • TLS 1. 3 tính năng như dữ liệu ban đầu, yêu cầu chứng chỉ máy khách TLS bị trì hoãn, cấu hình thuật toán chữ ký và tạo lại khóa chưa được hỗ trợ

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

    Yêu cầu sử dụng mô-đun ssl của thư viện chuẩn Python bên trong - mô-đun này hỗ trợ các phiên bản SSL và TLS khác nhau . Bạn có thể yêu cầu sử dụng một giao thức cụ thể [như TLSv1] bằng cách tạo HTTPAdapter tùy chỉnh phiên bản PoolManager được tạo.

    SSL có phải là một phần của Python không?

    Mô-đun ssl của Python cung cấp các hàm và lớp để sử dụng Lớp cổng bảo mật [SSL] và Bảo mật lớp vận chuyển [TLS] để bảo mật giao tiếp cho cả phía máy chủ và máy khách.

    Python triển khai SSL như thế nào?

    Tạo chứng chỉ SSL tự ký bằng Python . Tạo khóa RSA riêng tư. Tạo yêu cầu ký chứng chỉ [CSR] bằng khóa riêng. Ký yêu cầu CSR để tạo chứng chỉ.

    Python sử dụng chứng chỉ SSL nào?

    Nếu sử dụng mô-đun ssl Python [e. g. như một phần của việc tạo kết nối với https. // URL], Python trong cấu hình mặc định của nó sẽ muốn lấy danh sách X đáng tin cậy. 509 / chứng chỉ SSL để xác minh kết nối.

Chủ Đề