繁体   English   中英

如何验证双绞线SSL客户端中的SSL服务器证书

[英]How to validate the SSL server certificate in twisted SSL client

如何在我的双绞线SSL客户端中验证SSL服务器证书?

我非常熟悉SSL,我已经完成了扭曲的SSL教程,但我仍然不清楚某些事情。

我的疑问是:

  • 我应该如何使用twisted.internet.ssl模块验证SSL服务器证书,

  • 在处理SSL时, ssl.ClientContextFactory.getContext方法如何有用,

  • 如何告知扭曲的SSL客户端公钥文件的位置?

从Twisted 14.0开始, optionsForClientTLS是执行此操作的最佳方法:

from twisted.internet.ssl import optionsForClientTLS
from twisted.internet.endpoints import SSL4ClientEndpoint

ctx = optionsForClientTLS(hostname=u"example.com")
endpoint = SSL4ClientEndpoint(reactor, host, port, ctx)
factory = ...
d = endpoint.connect(factory)
...

optionsForClientTLS采用其他(可选)参数,这也可能有用。

在Twisted 14.0之前,该过程涉及更多:

建立连接并且SSL握手成功完成后(这意味着证书当前基于其notBeforenotAfter值有效,并且它由您指示的证书颁发机构证书签名是可信的),您可以从中获取证书运输:

certificate = self.transport.getPeerCertificate()

证书表示为pyOpenSSL X509实例。 它有一个方法可用于检索证书的主题名称:

subject_name = certificate.get_subject()

主题名称是可分辨名称,表示为pyOpenSSL X509Name实例。 您可以检查其字段:

common_name = subject_name.commonName

这是一个字符串,例如"example.com"

如果您需要检查subjectAltName (您可能会这样做),那么您可以在证书的扩展中找到此信息:

extensions = certificate.get_extensions()

这是pyOpenSSL X509Extension实例的列表。 您必须解析每一个以找到subjectAltName及其值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM