Powershell имеет Get-TlsCipherSute
командлет, который возвращает информацию о том, какие шифры может использовать TLS.
Вывод включает Protocols
поле, которое, кажется, установлено в массив чисел, например:
PS C:\>Get-TlsCipherSuite -Name "AES"
KeyType : 0
Certificate : ECDSA
MaximumExchangeLength : 65536
MinimumExchangeLength : 0
Exchange : ECDH
HashLength : 0
Hash :
CipherBlockLength : 16
CipherLength : 256
BaseCipherSuite : 49196
CipherSuite : 49196
Cipher : AES
Name : TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
Protocols : {771, 65277}
Что означают числа, обозначающие значение Protocols
поле для каждого набора шифров (например, 771
и 652677
)?
Заметка: Если вы собираетесь исследовать, обратите внимание, что вывод этой команды, похоже, не работает с select
, видеть https://windowsserver.uservoice.com/forums/301869-powershell/suggestions/16511008-get-tlsciphersuite-does-not-output-well-behaved-ob
Они кажутся десятичным представлением значения, используемого в Поле версии TLS. 771 = 0x0303 = TLS_1_2, и 652677 = 0xFEFD = DTLS_1_1. Вы можете увидеть похожие константы, определенные в различные библиотеки TLS:
TLS_VERSIONS = {
# SSL
0x0002: "SSL_2_0",
0x0300: "SSL_3_0",
# TLS:
0x0301: "TLS_1_0",
0x0302: "TLS_1_1",
0x0303: "TLS_1_2",
0x0304: "TLS_1_3",
# DTLS
0x0100: "PROTOCOL_DTLS_1_0_OPENSSL_PRE_0_9_8f",
0x7f10: "TLS_1_3_DRAFT_16",
0x7f12: "TLS_1_3_DRAFT_18",
0xfeff: "DTLS_1_0",
0xfefd: "DTLS_1_1",
}
Таким образом, они, вероятно, представляют версии протокола TLS / SSL, для которых доступен этот шифр.
TLS_VERSIONS = {
# SSL
2 0x0002: "SSL_2_0",
768 0x0300: "SSL_3_0",
# TLS:
769 0x0301: "TLS_1_0",
770 0x0302: "TLS_1_1",
771 0x0303: "TLS_1_2",
772 0x0304: "TLS_1_3",
# DTLS
256 0x0100: "PROTOCOL_DTLS_1_0_OPENSSL_PRE_0_9_8f",
32528 0x7f10: "TLS_1_3_DRAFT_16",
32530 0x7f12: "TLS_1_3_DRAFT_18",
65279 0xfeff: "DTLS_1_0",
65277 0xfefd: "DTLS_1_1",
}