Câu hỏi Làm cách nào để liệt kê các bộ mã hóa SSL / TLS mà một trang web cụ thể cung cấp?


Làm cách nào tôi có thể truy xuất danh sách các bộ mã hóa SSL / TLS mà một trang web cụ thể cung cấp?

Tôi đã thử openssl, nhưng nếu bạn kiểm tra đầu ra:

$ echo -n | openssl s_client -connect www.google.com:443 
CONNECTED(00000003)
depth=1 /C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
 0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
   i:/C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
 1 s:/C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
   i:/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIDITCCAoqgAwIBAgIQL9+89q6RUm0PmqPfQDQ+mjANBgkqhkiG9w0BAQUFADBM
MQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkg
THRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBDQTAeFw0wOTEyMTgwMDAwMDBaFw0x
MTEyMTgyMzU5NTlaMGgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlh
MRYwFAYDVQQHFA1Nb3VudGFpbiBWaWV3MRMwEQYDVQQKFApHb29nbGUgSW5jMRcw
FQYDVQQDFA53d3cuZ29vZ2xlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC
gYEA6PmGD5D6htffvXImttdEAoN4c9kCKO+IRTn7EOh8rqk41XXGOOsKFQebg+jN
gtXj9xVoRaELGYW84u+E593y17iYwqG7tcFR39SDAqc9BkJb4SLD3muFXxzW2k6L
05vuuWciKh0R73mkszeK9P4Y/bz5RiNQl/Os/CRGK1w7t0UCAwEAAaOB5zCB5DAM
BgNVHRMBAf8EAjAAMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwudGhhd3Rl
LmNvbS9UaGF3dGVTR0NDQS5jcmwwKAYDVR0lBCEwHwYIKwYBBQUHAwEGCCsGAQUF
BwMCBglghkgBhvhCBAEwcgYIKwYBBQUHAQEEZjBkMCIGCCsGAQUFBzABhhZodHRw
Oi8vb2NzcC50aGF3dGUuY29tMD4GCCsGAQUFBzAChjJodHRwOi8vd3d3LnRoYXd0
ZS5jb20vcmVwb3NpdG9yeS9UaGF3dGVfU0dDX0NBLmNydDANBgkqhkiG9w0BAQUF
AAOBgQCfQ89bxFApsb/isJr/aiEdLRLDLE5a+RLizrmCUi3nHX4adpaQedEkUjh5
u2ONgJd8IyAPkU0Wueru9G2Jysa9zCRo1kNbzipYvzwY4OA8Ys+WAi0oR1A04Se6
z5nRUP8pJcA2NhUzUnC+MY+f6H/nEQyNv4SgQhqAibAxWEEHXw==
-----END CERTIFICATE-----
subject=/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
issuer=/C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
---
No client certificate CA names sent
---
SSL handshake has read 1777 bytes and written 316 bytes
---
New, TLSv1/SSLv3, Cipher is AES256-SHA
Server public key is 1024 bit
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1
    Cipher    : AES256-SHA
    Session-ID: 748E2B5FEFF9EA065DA2F04A06FBF456502F3E64DF1B4FF054F54817C473270C
    Session-ID-ctx: 
    Master-Key: C4284AE7D76421F782A822B3780FA9677A726A25E1258160CA30D346D65C5F4049DA3D10A41F3FA4816DD9606197FAE5
    Key-Arg   : None
    Start Time: 1266259321
    Timeout   : 300 (sec)
    Verify return code: 20 (unable to get local issuer certificate)
---

nó chỉ cho thấy rằng bộ mã hóa là một cái gì đó với AES256-SHA. Tôi biết tôi có thể grep thông qua các bãi chứa hex của cuộc trò chuyện, nhưng tôi đã hy vọng cho một cái gì đó một chút thanh lịch hơn.

Tôi muốn làm điều này trên Linux, nhưng Windows (hoặc khác) sẽ là tốt. Câu hỏi này được thúc đẩy bởi các kiểm tra an ninh tôi làm cho PCI và thử nghiệm thâm nhập chung.

Cập nhật: 

GregS chỉ ra rằng máy chủ SSL chọn từ các bộ mã hóa của máy khách. Vì vậy, có vẻ như tôi sẽ cần phải kiểm tra tất cả các bộ mã hóa một tại một thời điểm. Tôi nghĩ rằng tôi có thể hack một cái gì đó với nhau, nhưng có một cách đơn giản hơn, tương lai hơn bằng chứng (ví dụ: mật mã mới) cách để làm điều này?


229
2018-02-15 18:47


gốc


Có lẽ gnutls-cli? - grawity
Sau khi thay đổi tiêu đề, câu hỏi này thực sự không yêu cầu phần mềm rec. Bỏ phiếu để mở lại. - Bob
@ fixer1234 Nếu nó làm cho bạn hạnh phúc hơn, tôi đã loại bỏ bất kỳ sự xuất hiện của từ "công cụ". Câu hỏi cốt lõi là hỏi làm thế nào để hoàn thành một nhiệm vụ cụ thể nào; đó là một cụm từ nhỏ và xa hơn từ các câu hỏi loại "danh sách phần mềm" mở hơn. - Bob
@ Bob: Tôi ngây ngất. :-) Bỏ phiếu để mở lại. - fixer1234


Các câu trả lời:


Tôi đã viết một kịch bản bash để kiểm tra các bộ mã hóa. Nó nhận được một danh sách các bộ mã hóa được hỗ trợ từ OpenSSL và cố gắng kết nối bằng cách sử dụng mỗi bộ mã hóa. Nếu bắt tay thành công, nó sẽ in YES. Nếu cái bắt tay không thành công, nó sẽ in NO, theo sau là văn bản lỗi OpenSSL.

#!/usr/bin/env bash

# OpenSSL requires the port number.
SERVER=$1
DELAY=1
ciphers=$(openssl ciphers 'ALL:eNULL' | sed -e 's/:/ /g')

echo Obtaining cipher list from $(openssl version).

for cipher in ${ciphers[@]}
do
echo -n Testing $cipher...
result=$(echo -n | openssl s_client -cipher "$cipher" -connect $SERVER 2>&1)
if [[ "$result" =~ ":error:" ]] ; then
  error=$(echo -n $result | cut -d':' -f6)
  echo NO \($error\)
else
  if [[ "$result" =~ "Cipher is ${cipher}" || "$result" =~ "Cipher    :" ]] ; then
    echo YES
  else
    echo UNKNOWN RESPONSE
    echo $result
  fi
fi
sleep $DELAY
done

Đây là đầu ra mẫu hiển thị 3 mật mã không được hỗ trợ và 1 mật mã được hỗ trợ:

[@linux ~]$ ./test_ciphers 192.168.1.11:443
Obtaining cipher list from OpenSSL 0.9.8k 25 Mar 2009.
Testing ADH-AES256-SHA...NO (sslv3 alert handshake failure)
Testing DHE-RSA-AES256-SHA...NO (sslv3 alert handshake failure)
Testing DHE-DSS-AES256-SHA...NO (sslv3 alert handshake failure)
Testing AES256-SHA...YES

EDIT: Thêm tính linh hoạt như máy chủ và cổng được cung cấp làm tham số cho tập lệnh


200
2017-12-20 23:41



openssl 1.0 cần thay đổi: if [[ "$result" =~ "Cipher :" ]] ; then thay vì if [[ "$result" =~ "Cipher is " ]] ; then Tôi cũng kiểm tra SSL2 và đàm phán lại an toàn: echo -n Testing ssl2... result=$(echo -n | openssl s_client -ssl2 -connect $SERVER 2>&1) if [[ "$result" =~ "Cipher :" ]] ; then echo supported. INSECURE! else echo no support, OK fi echo -n Testing SSL secure renegotiation... echo -n "" | openssl s_client -connect $SERVER 2>&1 | grep 'Secure Renegotiation' - Hubert Kario
Có một kịch bản lệnh shell rất phức tạp khác có sẵn sử dụng sslscan và openssl: TLSSLed - Robert
Tôi đã liệt kê bên dưới một tập lệnh khác chỉ yêu cầu OpenSSL CipherScan - Olivier - interfaSys
Lưu ý rằng tập lệnh này có lẽ sẽ không cho bạn biết nếu một máy chủ hỗ trợ các bộ mã hóa mà OpenSSL không hỗ trợ. - sampablokuper
Đề xuất từ ​​@Robert cho TLSSLed thật tuyệt vời. Nó đã được cập nhật lên 1.3 và có nhiều chức năng hơn. Tôi đã được sử dụng để kiểm tra an ninh và phải nói rằng tôi rất ấn tượng. - John Yeary


Nmap với ssl-enum-ciphers

Không có cách nào tốt hơn hoặc nhanh hơn để có được một danh sách các thuật toán mã hóa có sẵn từ một dịch vụ mạng. Thêm, nmap sẽ cung cấp xếp hạng sức mạnh mạnh, yếu hoặc không xác định cho từng mật mã có sẵn.

Đầu tiên, tải xuống ssl-enum-ciphers.nse kịch bản lệnh nmap (giải thích ở đây). Sau đó, từ cùng thư mục với tập lệnh, hãy chạy nmap như sau:

Liệt kê mật mã được máy chủ HTTP hỗ trợ

$ nmap --script ssl-enum-ciphers -p 443 www.example.com

Liệt kê mật mã được máy chủ IMAP hỗ trợ

$ nmap --script ssl-enum-ciphers -p 993 mail.example.com

Đây là đoạn trích xuất từ ​​máy chủ IMAP Dovecot:

993/tcp open  imaps
| ssl-enum-ciphers:
|   SSLv3:
|     ciphers:
|       TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA - strong
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA - strong
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA - strong
|       TLS_RSA_WITH_IDEA_CBC_SHA - weak
...
|   TLSv1.0:
|     ciphers:
|       TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA - strong
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA - strong
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA - strong
|       TLS_RSA_WITH_IDEA_CBC_SHA - weak
...
|_  least strength: weak

Nmap done: 1 IP address (1 host up) scanned in 1.03 seconds

129
2018-06-05 09:29



Có cách nào để sử dụng tập lệnh này trên IMAP với STARTTLS không? STARTTLS trên SMTP dường như hoạt động, nhưng trên IMAP, tập lệnh không xuất hiện để chạy. - Giel
Vài điều: bạn có thể đang chạy tập lệnh trong bản phân phối nmap của mình, thay vì tập lệnh bạn đã tải xuống. Kiểm tra bằng cách đổi tên tên của bạn. Sau đó kiểm tra "portrule" mà trong một số phiên bản kiểm tra các số cổng thường được sử dụng. Thay bằng portrule = function() \n return true \n end - slim
... và nó sẽ cần một số hack để làm việc với IMAP STARTTLS, FTPS AUTH TLS v.v. nhưng có thể. - slim
Một lưu ý là các tập lệnh cũ hơn, có thể được bao gồm trong bản phân phối / gói của bạn, liệt kê các mật mã theo thứ tự bảng chữ cái, không phải thứ tự ưu tiên của máy chủ (hoặc ứng dụng khách). Xem nhận xét ở trên từ @slim - Clint Pachl
Trong 2 năm kể từ khi câu trả lời này được viết, Nmap đã thêm hỗ trợ cho STARTTLS qua FTP, NNTP, IMAP, LDAP, POP3, PostgreSQL, SMTP, XMPP, VNC và MS SQL, cũng như nhiều cải tiến khác ngoài việc liệt kê các thuật toán mã hóa được hỗ trợ . - bonsaiviking


Có một công cụ có thể kiểm tra những gì   Bộ mã hóa SSL / TLS đặc biệt   trang web cung cấp?

Có, bạn có thể sử dụng công cụ trực tuyến SSL Labs'trang web để truy vấn Cơ sở dữ liệu máy chủ SSL công cộng.

Đây là một đoạn thông tin mà nó cung cấp:

alt text

(ảnh chụp màn hình từ kết quả của google.com)


94
2018-02-20 18:02



mát mẻ, cảm ơn vì đã tìm thấy điều đó. - James K Polk
Đây là chính xác những gì tôi đang tìm kiếm! Cảm ơn rất nhiều! - Jeremy Powell
Rất tiếc, nó chỉ hỗ trợ HTTPS trên cổng chuẩn, không thể sử dụng nó để kiểm tra POP3S, IMAPS hoặc IMAP với TLS - Hubert Kario
Và mặc dù nó chỉ hỗ trợ HTTPS, nó thậm chí còn thiếu hỗ trợ cho SNI. - Gurken Papst
Và mặc dù nó tuyệt vời cho các trang web công khai, bạn không thể sử dụng nó cho các trang web trên các mạng được phân lập từ Internet. - Iszi


sslscan là một tiện ích nhỏ.

Nó kiểm tra kết nối với TLS và SSL (và kịch bản xây dựng có thể liên kết với bản sao OpenSSL của riêng nó để các phiên bản SSL lỗi thời cũng được kiểm tra) và báo cáo về các bộ mã hóa và chứng chỉ của máy chủ.

Ví dụ đầu ra cho google.com (được cắt xuống để dễ đọc):

$ sslscan google.com
Testing SSL server google.com on port 443

 TLS renegotiation:
Secure session renegotiation supported

  TLS Compression:
Compression disabled

  Heartbleed:
TLS 1.2 not vulnerable to heartbleed
TLS 1.1 not vulnerable to heartbleed
TLS 1.0 not vulnerable to heartbleed

  Supported Server Cipher(s):
Preferred TLSv1.2  128 bits  ECDHE-RSA-AES128-GCM-SHA256   Curve P-256 DHE 256
Accepted  TLSv1.2  128 bits  ECDHE-RSA-AES128-SHA          Curve P-256 DHE 256
Accepted  TLSv1.2  128 bits  ECDHE-RSA-RC4-SHA             Curve P-256 DHE 256
Accepted  TLSv1.2  128 bits  AES128-GCM-SHA256
Accepted  TLSv1.2  128 bits  AES128-SHA
<snip>
Preferred TLSv1.1  128 bits  ECDHE-RSA-AES128-SHA          Curve P-256 DHE 256
Accepted  TLSv1.1  128 bits  ECDHE-RSA-RC4-SHA             Curve P-256 DHE 256
Accepted  TLSv1.1  128 bits  AES128-SHA
<snip>
Preferred TLSv1.0  128 bits  ECDHE-RSA-AES128-SHA          Curve P-256 DHE 256
Accepted  TLSv1.0  128 bits  ECDHE-RSA-RC4-SHA             Curve P-256 DHE 256
Accepted  TLSv1.0  128 bits  AES128-SHA
<snip>
Preferred SSLv3    128 bits  RC4-SHA
Accepted  SSLv3    128 bits  RC4-MD5
<snip>

  SSL Certificate:
Signature Algorithm: sha256WithRSAEncryption
RSA Key Strength:    2048

Subject:  *.google.com
Altnames: DNS:*.google.com, DNS:*.android.com, <snip>
Issuer:   Google Internet Authority G2

Not valid before: Apr  7 08:24:31 2016 GMT
Not valid after:  Jun 30 08:20:00 2016 GMT

47
2018-03-18 22:21



yum install sslscan hoạt động trên CentOS 6. - a coder
sudo dnf install sslscan trên Fedora 22. - Zayne S Halsall
brew install sslscan trên OSX - Xiao
sudo apt-get install sslscan trên Ubuntu (12.04 - vì vậy tất cả các phiên bản sau này sẽ ổn). - balu
Cập nhật: Cần lưu ý rằng phiên bản chính thức của sslscan được tìm thấy trong kho Debian và Ubuntu (hiện tại là 1.8.2 từ năm 2009) không làm hỗ trợ TLS v1.1 và 1.2, xem bugs.launchpad.net/ubuntu/+source/sslscan/+bug/1372741. Do đó, một người nên sử dụng phiên bản trên GitHub mà OP liên kết đến. - balu


Vì đây là một chuỗi tham khảo tuyệt vời cho các công cụ quét SSL, tôi sẽ liệt kê CipherScan được tạo ra một năm trước và cũng có thể xác định các vấn đề với mật mã trao đổi khóa. https://github.com/jvehent/cipherscan

Nếu bạn muốn ngã ba của tôi hỗ trợ SNI và FreeBSD, URL là https://github.com/oparoz/cipherscan

Đó là một kịch bản mà các cuộc gọi openssl s_clientvà hỗ trợ bằng cách sử dụng nhị phân OpenSSL của riêng bạn để bạn có thể kiểm tra các tính năng sắp tới hoặc mật mã mới (chacha20 + poly1305 cho mỗi ví dụ).

Nó cũng cho phép bạn kết nối với bất kỳ cổng nào bạn muốn và sử dụng starttlss.

Đây là một đầu ra điển hình

# ./cipherscan -o ./openssl api.mycompany.com:443
...................
prio  ciphersuite                  protocols              pfs_keysize
1     DHE-RSA-AES256-GCM-SHA384    TLSv1.2                DH,4096bits
2     DHE-RSA-AES256-SHA256        TLSv1.2                DH,4096bits
3     ECDHE-RSA-AES256-GCM-SHA384  TLSv1.2                ECDH,P-384,384bits
4     ECDHE-RSA-AES256-SHA384      TLSv1.2                ECDH,P-384,384bits
5     DHE-RSA-AES128-GCM-SHA256    TLSv1.2                DH,4096bits
6     DHE-RSA-AES128-SHA256        TLSv1.2                DH,4096bits
7     ECDHE-RSA-AES128-GCM-SHA256  TLSv1.2                ECDH,P-384,384bits
8     ECDHE-RSA-AES128-SHA256      TLSv1.2                ECDH,P-384,384bits
9     DHE-RSA-CAMELLIA256-SHA      TLSv1,TLSv1.1,TLSv1.2  DH,4096bits
10    DHE-RSA-AES256-SHA           TLSv1,TLSv1.1,TLSv1.2  DH,4096bits
11    ECDHE-RSA-AES256-SHA         TLSv1,TLSv1.1,TLSv1.2  ECDH,P-384,384bits
12    DHE-RSA-CAMELLIA128-SHA      TLSv1,TLSv1.1,TLSv1.2  DH,4096bits
13    DHE-RSA-AES128-SHA           TLSv1,TLSv1.1,TLSv1.2  DH,4096bits
14    ECDHE-RSA-AES128-SHA         TLSv1,TLSv1.1,TLSv1.2  ECDH,P-384,384bits
15    CAMELLIA256-SHA              TLSv1,TLSv1.1,TLSv1.2
16    AES256-SHA                   TLSv1,TLSv1.1,TLSv1.2
17    CAMELLIA128-SHA              TLSv1,TLSv1.1,TLSv1.2
18    AES128-SHA                   TLSv1,TLSv1.1,TLSv1.2

Certificate: trusted, 4096 bit, sha256WithRSAEncryption signature
TLS ticket lifetime hint: 300
OCSP stapling: supported

Và đây là danh sách các tùy chọn

-a | --allciphers   Test all known ciphers individually at the end.
-b | --benchmark    Activate benchmark mode.
-d | --delay        Pause for n seconds between connections
-D | --debug        Output ALL the information.
-h | --help         Shows this help text.
-j | --json         Output results in JSON format.
-o | --openssl      path/to/your/openssl binary you want to use.
-v | --verbose      Increase verbosity.

Đầu ra json rất hữu ích nếu bạn đang gọi nó từ các tập lệnh khác.


14
2017-09-16 11:25



"Cấu hình lớn-SSLv3 không được hỗ trợ, kết nối không thành công" - a coder


https://github.com/iSECPartners/sslyze

Đây là một Python dựa trên, hoạt động trong Linux / Mac / Windows từ dòng lệnh.


12
2018-01-25 14:01





Sau một chút googling tôi thấy điều này Kiểm tra SSL-TLS (OWASP-CM-001):

Các nmap máy quét, thông qua tùy chọn quét “–sV”, có thể xác định các dịch vụ SSL. Máy quét lỗ hổng, ngoài việc thực hiện khám phá dịch vụ, có thể bao gồm các kiểm tra đối với mật mã yếu (ví dụ: Máy quét Nessus có khả năng kiểm tra các dịch vụ SSL trên các cổng tùy ý và sẽ báo cáo mật mã yếu).

và cũng: Foundstone SSL Digger là một công cụ để đánh giá sức mạnh của máy chủ SSL bằng cách kiểm tra mật mã được hỗ trợ. Một số mật mã được biết là không an toàn.


8
2018-02-20 16:30





Tôi đang sử dụng cho hầu hết các bài kiểm tra SSL testssl.sh (xem https://testssl.sh / phiên bản devel @ https://github.com/drwetter/testssl.sh. Nó kiểm tra lỗ hổng bảo mật, mật mã, giao thức, v.v.


4
2018-01-10 17:36





SSLScan là tuyệt vời; một công cụ mới SSLDiagnos làm việc cho Windows, hoặc bạn chỉ có thể viết một kịch bản bằng cách sử dụng openssl s_client.


2
2017-12-01 20:40





Nmap's ssl-enum-ciphers tập lệnh có thể liệt kê các thuật toán mã hóa được hỗ trợ và các phiên bản SSL / TLS, cũng như các máy nén được hỗ trợ.


2
2018-03-25 21:58



Câu trả lời của bạn trước đó, nhưng Clint Pachl's  câu trả lời giải thích ssl-enum-ciphers toàn diện hơn nhiều. - sampablokuper


Nếu bạn muốn có đầu ra grepable tốt (và hỗ trợ kiểm tra tất cả các phiên bản SSL / TLS)

Cách sử dụng: ./script.sh www.url.com

#!/usr/bin/env bash
ciphers2=$(openssl ciphers -ssl2 'ALL:eNULL' | sed -e 's/:/ /g')
ciphers3=$(openssl ciphers -ssl3 'ALL:eNULL' | sed -e 's/:/ /g')
cipherst1=$(openssl ciphers -tls1 'ALL:eNULL' | sed -e 's/:/ /g')
cipherst11=$(openssl ciphers -tls1.1 'ALL:eNULL' | sed -e 's/:/ /g')
cipherst12=$(openssl ciphers -tls1.2 'ALL:eNULL' | sed -e 's/:/ /g')

SSL2="SSL2("
for cipher in ${ciphers2[@]}
do
result=$(echo -n | openssl s_client -ssl2 -cipher "$cipher" -connect $1:443 2>&1)
if [[ "$result" =~ "Cipher is ${cipher}" ]] ; then
  SSL2="${SSL2}${cipher}:"
fi
done
SSL2=$(echo "${SSL2})" | sed -e 's/:)/)/g')

SSL3="SSL3("
for cipher in ${ciphers3[@]}
do
result=$(echo -n | openssl s_client -ssl3 -cipher "$cipher" -connect $1:443 2>&1)
if [[ "$result" =~ "Cipher is ${cipher}" ]] ; then
  SSL3="${SSL3}${cipher}:"
fi
done
SSL3=$(echo "${SSL3})" | sed -e 's/:)/)/g')
TLS1="TLS1("
for cipher in ${cipherst1[@]}
do
result=$(echo -n | openssl s_client -tls1 -cipher "$cipher" -connect $1:443 2>&1)
if [[ "$result" =~ "Cipher is ${cipher}" ]] ; then
  TLS1="${TLS1}${cipher}:"
fi
done
TLS1=$(echo "${TLS1})" | sed -e 's/:)/)/g')

TLS11="TLS1.1("
for cipher in ${cipherst11[@]}
do
result=$(echo -n | openssl s_client -tls1_1 -cipher "$cipher" -connect $1:443 2>&1)
if [[ "$result" =~ "Cipher is ${cipher}" ]] ; then
  TLS11="${TLS11}${cipher}:"
fi
done
TLS11=$(echo "${TLS11})" | sed -e 's/:)/)/g')

TLS12="TLS1.2("
for cipher in ${cipherst12[@]}
do
result=$(echo -n | openssl s_client -tls1_2 -cipher "$cipher" -connect $1:443 2>&1)
if [[ "$result" =~ "Cipher is ${cipher}" ]] ; then
  TLS12="${TLS12}${cipher}:"
fi
done
TLS12=$(echo "${TLS12})" | sed -e 's/:)/)/g')

echo "$1,$SSL2,$SSL3,$TLS1,$TLS11,$TLS12";

2
2018-04-09 18:31



Bạn đang biểu diễn openssl ciphers -tls1.1 và openssl ciphers -tls1.2 tuy nhiên những tham số đó dường như không tồn tại ... Chỉ có -tls1 (ít nhất là trên các nền tảng tôi đã thử). - Marki
(Dường như có các tùy chọn bổ sung dưới dạng tls1_1 và tls1_2 nhưng chúng chỉ được hiển thị trên phiên bản chính của openssl và thậm chí không ở 1.0.2 ....) - Marki
Lưu ý rằng tập lệnh này có lẽ sẽ không cho bạn biết nếu một máy chủ hỗ trợ các bộ mã hóa mà OpenSSL không hỗ trợ. - sampablokuper