用法:
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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。