用法:
SSLSocket.getpeercert(binary_form=False)
如果連接另一端的對等方沒有證書,則返回
None
。如果 SSL 握手尚未完成,請提高ValueError
。如果
binary_form
參數是False
,並且從對等方接收到證書,此方法返回一個dict實例。如果證書未通過驗證,則字典為空。如果證書經過驗證,它會返回一個包含多個 key 的字典,其中包括subject
(為其頒發證書的委托人)和issuer
(頒發證書的校長)。如果證書包含Subject Alternative Name
擴展名(見RFC 3280),也會有一個subjectAltName
字典中的鍵。subject
和issuer
字段是包含證書數據結構中為各個字段提供的相對專有名稱 (RDN) 序列的元組,每個 RDN 是 name-value 對的序列。這是一個real-world 示例:{'issuer': ((('countryName', 'IL'),), (('organizationName', 'StartCom Ltd.'),), (('organizationalUnitName', 'Secure Digital Certificate Signing'),), (('commonName', 'StartCom Class 2 Primary Intermediate Server CA'),)), 'notAfter': 'Nov 22 08:15:19 2013 GMT', 'notBefore': 'Nov 21 03:09:52 2011 GMT', 'serialNumber': '95F0', 'subject': ((('description', '571208-SLe257oHY9fVQ07Z'),), (('countryName', 'US'),), (('stateOrProvinceName', 'California'),), (('localityName', 'San Francisco'),), (('organizationName', 'Electronic Frontier Foundation, Inc.'),), (('commonName', '*.eff.org'),), (('emailAddress', 'hostmaster@eff.org'),)), 'subjectAltName': (('DNS', '*.eff.org'), ('DNS', 'eff.org')), 'version': 3}
注意
要驗證特定服務的證書,您可以使用
match_hostname()
函數。如果
binary_form
參數是True
並且提供了證書,則此方法將整個證書的 DER-encoded 形式作為字節序列返回,如果對等方未提供證書,則返回None
。對等方是否提供證書取決於 SSL 套接字的角色:- 對於客戶端 SSL 套接字,服務器將始終提供證書,無論是否需要驗證;
- 對於服務器 SSL 套接字,客戶端僅在服務器請求時提供證書;因此,如果您使用
CERT_NONE
(而不是CERT_OPTIONAL
或CERT_REQUIRED
),getpeercert()
將返回None
。
在 3.2 版中更改:返回的字典包括其他項目,例如
issuer
和notBefore
.在 3.4 版中更改:
ValueError
握手未完成時引發。返回的字典包括額外的 X509v3 擴展項,例如crlDistributionPoints
,caIssuers
和OCSP
URI。在 3.9 版中更改:IPv6 地址字符串不再有尾隨新行。
相關用法
- Python ssl.SSLContext.check_hostname用法及代碼示例
- Python ssl.SSLContext.session_stats用法及代碼示例
- Python ssl.SSLContext.get_ciphers用法及代碼示例
- Python ssl.match_hostname用法及代碼示例
- Python ssl.OPENSSL_VERSION_NUMBER用法及代碼示例
- Python ssl.enum_certificates用法及代碼示例
- Python ssl.cert_time_to_seconds用法及代碼示例
- Python sklearn.cluster.MiniBatchKMeans用法及代碼示例
- Python scipy.ndimage.binary_opening用法及代碼示例
- Python scipy.signal.windows.tukey用法及代碼示例
- Python scipy.stats.mood用法及代碼示例
- Python str.isidentifier用法及代碼示例
- Python sklearn.metrics.fbeta_score用法及代碼示例
- Python scipy.fft.ihfftn用法及代碼示例
- Python scipy.stats.normaltest用法及代碼示例
- Python scipy.ndimage.convolve1d用法及代碼示例
- Python scipy.stats.arcsine用法及代碼示例
- Python scipy.interpolate.UnivariateSpline.antiderivative用法及代碼示例
- Python scipy.linalg.hadamard用法及代碼示例
- Python socket.create_server用法及代碼示例
注:本文由純淨天空篩選整理自python.org大神的英文原創作品 ssl.SSLSocket.getpeercert。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。