在受支持的版本上握手失败
HandShake Failure On a supported Version
我正在尝试确定 TLS_1_2 是否是网站上受支持的版本,即 (portal.threatpulse.com,443)
from scapy_ssl_tls.ssl_tls import *
target = (portal.threatpulse.com,443)
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.connect(target)
pkt = TLSRecord(version = 'TLS_1_2')/TLSHandshake()
/TLSClientHello(version = 'TLS_1_2')
sock.sendall(str(pkt))
resp_pkt = sock.recv(8192)
resp = SSL(resp_pkt)
resp.show()
即使支持此版本,它仍显示握手失败。
此代码 运行 正确
由于当今的证书通常具有 SHA-256 签名,因此服务器要求客户端支持 RSA/SHA-256 和 signature/hash 算法。但是这种组合不包含在 TLS 1.2 中新增的 SignatureAndHashAlgorithm
TLS 扩展的默认集中。此默认设置仅包括(带有 RSA、DSA 或 ECDSA 的 SHA-1。如果 TLS 1.2 客户端支持比默认更多或不同的算法,则需要包含 SignatureAndHashAlgorithm
扩展并明确宣布支持此 signature/hash 对。使用以下代码,这个特定站点对我有用,但对于其他站点,您可能需要扩展它以也包括 ECDSA。
pkt = TLSRecord(version = 'TLS_1_2') / \
TLSHandshake() / \
TLSClientHello(
version = 'TLS_1_2',
extensions=[ TLSExtension() / \
TLSExtSignatureAndHashAlgorithm( algorithms = [
TLSSignatureHashAlgorithm(
hash_algorithm = TLSHashAlgorithm.SHA256,
signature_algorithm = TLSSignatureAlgorithm.RSA
)
])
]
)
我正在尝试确定 TLS_1_2 是否是网站上受支持的版本,即 (portal.threatpulse.com,443)
from scapy_ssl_tls.ssl_tls import *
target = (portal.threatpulse.com,443)
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.connect(target)
pkt = TLSRecord(version = 'TLS_1_2')/TLSHandshake()
/TLSClientHello(version = 'TLS_1_2')
sock.sendall(str(pkt))
resp_pkt = sock.recv(8192)
resp = SSL(resp_pkt)
resp.show()
即使支持此版本,它仍显示握手失败。 此代码 运行 正确
由于当今的证书通常具有 SHA-256 签名,因此服务器要求客户端支持 RSA/SHA-256 和 signature/hash 算法。但是这种组合不包含在 TLS 1.2 中新增的 SignatureAndHashAlgorithm
TLS 扩展的默认集中。此默认设置仅包括(带有 RSA、DSA 或 ECDSA 的 SHA-1。如果 TLS 1.2 客户端支持比默认更多或不同的算法,则需要包含 SignatureAndHashAlgorithm
扩展并明确宣布支持此 signature/hash 对。使用以下代码,这个特定站点对我有用,但对于其他站点,您可能需要扩展它以也包括 ECDSA。
pkt = TLSRecord(version = 'TLS_1_2') / \
TLSHandshake() / \
TLSClientHello(
version = 'TLS_1_2',
extensions=[ TLSExtension() / \
TLSExtSignatureAndHashAlgorithm( algorithms = [
TLSSignatureHashAlgorithm(
hash_algorithm = TLSHashAlgorithm.SHA256,
signature_algorithm = TLSSignatureAlgorithm.RSA
)
])
]
)