Zjišťování vlastností serverů

Servery na portu 443 lze testovat pomocí služby SSL Server Test. Návod na zjištění odpovědí pomocí této služby je zde.

Odpovědi pro servery na jiných portech musíme zjistit pomocí OpenSSL z konzole, jak popisují návody níže.

Podpora protokolu SSL 3.0

  1. Zjistíme, zda server bis.vse.cz podporuje na portu 993 protokol SSL 3.0. Do konzole zadáme openssl s_client -connect bis.vse.cz:993 -ssl3.
    
    CONNECTED(00000003)
    
    depth=2 C = US, ST = New Jersey, L = Jersey City, O = The USERTRUST Network, CN = USERTrust RSA Certification Authority
    
    verify error:num=20:unable to get local issuer certificate
    
    verify return:0
    
    ---
    
    Certificate chain
    
     0 s:/OU=Domain Control Validated/CN=bis.vse.cz
    
       i:/C=NL/ST=Noord-Holland/L=Amsterdam/O=TERENA/CN=TERENA SSL CA 2
    
     1 s:/C=NL/ST=Noord-Holland/L=Amsterdam/O=TERENA/CN=TERENA SSL CA 2
    
       i:/C=US/ST=New Jersey/L=Jersey City/O=The USERTRUST Network/CN=USERTrust RSA Certification Authority
    
     2 s:/C=US/ST=New Jersey/L=Jersey City/O=The USERTRUST Network/CN=USERTrust RSA Certification Authority
    
       i:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root
    
    ---
    
    Server certificate
    
    -----BEGIN CERTIFICATE-----
    
                               
    
    ...                        
    
                               
    
    -----END CERTIFICATE-----  
    
    subject=/OU=Domain Control Validated/CN=bis.vse.cz
    
    issuer=/C=NL/ST=Noord-Holland/L=Amsterdam/O=TERENA/CN=TERENA SSL CA 2
    
    ---
    
    No client certificate CA names sent
    
    ---
    
    SSL handshake has read 4844 bytes and written 359 bytes
    
    ---
    
    New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
    
    Server public key is 2048 bit
    
    Secure Renegotiation IS supported
    
    Compression: zlib compression
    
    Expansion: zlib compression
    
    SSL-Session:
    
        Protocol  : SSLv3
    
        Cipher    : DHE-RSA-AES256-SHA
    
        Session-ID: 2A8B0B7A5FD9D59703F10EBC430F24B5B65648E0F66A3296EA351984B61E39A4
    
        Session-ID-ctx:
    
        Master-Key: BCAB6BB5B130AA8F6D14E262A5DD8828DB346A1A2C4CCB831C918DDFC9E5C8FC33482FF03A4AB62D4CF64211E996E544
    
        Key-Arg   : None
    
        PSK identity: None
    
        PSK identity hint: None
    
        SRP username: None
    
        Compression: 1 (zlib compression)
    
        Start Time: 1428776038
    
        Timeout   : 7200 (sec)
    
        Verify return code: 20 (unable to get local issuer certificate)
    
    ---
    
    * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN] Dovecot ready.
    
    
  2. Vidíme, že jsme se přes protokol SSL 3.0 připojili (vidíme vypsaný certifikát pod Server certificate). Server bis.vse.cz na portu 993 tedy podporuje SSL 3.0.
  3. Zjistíme, zda server bis.vse.cz podporuje protokol SSL 3.0 na portu 443. Do konzole zadáme openssl s_client -connect bis.vse.cz:443 -ssl3.
    
    CONNECTED(00000003)
    
    140481008932520:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1261:SSL alert number 40
    
    140481008932520:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:s3_pkt.c:599:
    
    ---
    
    no peer certificate available
    
    ---
    
    No client certificate CA names sent
    
    ---
    
    SSL handshake has read 7 bytes and written 0 bytes
    
    ---
    
    New, (NONE), Cipher is (NONE)
    
    Secure Renegotiation IS NOT supported
    
    Compression: NONE
    
    Expansion: NONE
    
    SSL-Session:
    
        Protocol  : SSLv3
    
        Cipher    : 0000
    
        Session-ID:
    
        Session-ID-ctx:
    
        Master-Key:
    
        Key-Arg   : None
    
        PSK identity: None
    
        PSK identity hint: None
    
        SRP username: None
    
        Start Time: 1428776291
    
        Timeout   : 7200 (sec)
    
        Verify return code: 0 (ok)
    
    ---
    
    
  4. Na portu 443 se nám k serveru bis.vse.cz přes protokol SSL 3.0 připojit nepodařilo (nevidíme žádný vypsaný certifikát). Server bis.vse.cz na portu 443 tedy SSL 3.0 nepodporuje.

Podpora protokolu TLS 1.0, TLS 1.1 a TLS 1.2

  1. Postup je stejný jako v případě testování protokolu z předchozího návodu (zkoušíme, jestli se při použití daného protokolu k serveru připojíme a jestli nám vrátí certifikát), pouze na konec příkazu zadáme místo -ssl3 buď -tls1 (pro TLS 1.0), -tls1_1 (pro TLS 1.1), nebo -tls1_2 (pro TLS 1.2).
  2. Pokud bychom chtěli testovat podporu TLS 1.0 na serveru bis.vse.cz na portu 993, zadali bychom do konzole openssl s_client -connect bis.vse.cz:993 -tls1.
  3. Pro testování TLS 1.1 na stejném serveru a portu bychom zadali openssl s_client -connect bis.vse.cz:993 -tls1_1.
  4. Pro testování TLS 1.2 na stejném serveru a portu bychom zadali openssl s_client -connect bis.vse.cz:993 -tls1_2.

Vlastní certifikát

  1. Pokud se k serveru lze připojit, vrací tento server vlastní certifikát (s veřejným klíčem serveru). Pro otestování serveru bis.vse.cz na portu 993 můžeme zadat například openssl s_client -connect bis.vse.cz:993 -showcerts.
  2. Vidíme-li ve výpisu -----BEGIN CERTIFICATE-----, blok znaků a -----END CERTIFICATE-----, vrátil server nějaký certifikát (a připojili jsme se k němu, takže vrátil i vlastní certifikát).

    Poznámka: Certifikát serveru je ve výpisu pod Server certificate. Pokud se k serveru lze připojit, tento certifikát zde vždy bude, takže v testu bude odpověď na tuto otázku s velkou pravděpodobností vždy ANO.

Mezilehlé certifikáty

  1. Otestujeme server bis.vse.cz na portu 993. Zadáme openssl s_client -connect bis.vse.cz:993 -showcerts.
    
    CONNECTED(00000003)
    
    depth=2 C = US, ST = New Jersey, L = Jersey City, O = The USERTRUST Network, CN = USERTrust RSA Certification Authority
    
    verify error:num=20:unable to get local issuer certificate
    
    verify return:0
    
    ---
    
    Certificate chain
    
    
    
    ...
    
    
  2. Podíváme se na začátek výpisu. Pokud vedle depth= vidíme číslo větší než 0 (v našem případě 2), server bis.vse.cz na portu 993 vrací mezilehlé certifikáty.
  3. Otestujeme server jmvm.vse.cz na portu 636. Zadáme openssl s_client -connect jmvm.vse.cz:636 -showcerts.
    
    CONNECTED(00000003)
    
    depth=0 CN = jmvm.jmvm.vse.cz
    
    verify error:num=18:self signed certificate
    
    verify return:1
    
    depth=0 CN = jmvm.jmvm.vse.cz
    
    verify return:1
    
    ---
    
    Certificate chain
    
    
    
    ...
    
    
  4. Na začátku výpisu je vedle depth= 0. Server jmvm.vse.cz na portu 636 nevrací mezilehlé certifikáty.

    Poznámka: Jestli server vrací mezilehlé certifikáty, můžeme poznat také tak, že se ve výpisu nachází kromě certifikátu serveru (Server certificate) ještě další certifikáty.

Kořenový certifikát

(Tohle neumim zjistit, jenom vim, jak se pozná, jestli je certifikát selfsigned, což je kromě ano a ne jedna z možnejch odpovědí v testu.)
  1. Zjistíme, jestli je certifikát serveru jmvm.vse.cz na portu 636 selfsigned. Zadáme openssl s_client -connect jmvm.vse.cz:636 -showcerts.
    
    CONNECTED(00000003)
    
    depth=0 CN = jmvm.jmvm.vse.cz
    
    verify error:num=18:self signed certificate
    
    verify return:1
    
    depth=0 CN = jmvm.jmvm.vse.cz
    
    verify return:1
    
    ---
    
    Certificate chain
    
     0 s:/CN=jmvm.jmvm.vse.cz
    
       i:/CN=jmvm.jmvm.vse.cz
    
    -----BEGIN CERTIFICATE-----
    
    ...
    
    -----END CERTIFICATE-----
    
    ---
    
    Server certificate          
    
    subject=/CN=jmvm.jmvm.vse.cz
    
    issuer=/CN=jmvm.jmvm.vse.cz 
    
    ---
    
    
    
    ...
    
    
  2. Ve výpisu najdeme část Server certificate. Pokud jsou hodnoty vedle subject= a issuer= stejné, je certifikát selfsigned.

    Poznámka: Pokud je certifikát selfsigned, je zároveň také kořenový.

Secure Renegotiation

  1. Otestujeme, jestli server jmvm.vse.cz na serveru 636 podporuje Secure Renegotiation. Zadáme openssl s_client -connect jmvm.vse.cz:636 -showcerts.
    
    ...
    
    
    
    New, TLSv1/SSLv3, Cipher is AES128-SHA
    
    Server public key is 4096 bit
    
    Secure Renegotiation IS supported
    
    Compression: NONE
    
    Expansion: NONE
    
    SSL-Session:
    
        Protocol  : TLSv1
    
        Cipher    : AES128-SHA
    
        Session-ID: 6C3F00009BE659188B3E3F6F4D996E49BCF7785B35CDD854A545A885878223D5
    
        Session-ID-ctx:
    
        Master-Key: 7F8CC8B826EC933C39A23FA0B219E75B0F5823B39A618A02470AA09BE1D2FE73
    
        Key-Arg   : None
    
        PSK identity: None
    
        PSK identity hint: None
    
        SRP username: None
    
        Start Time: 1428778355
    
        Timeout   : 300 (sec)
    
        Verify return code: 18 (self signed certificate)
    
    ---
    
    
  2. Na konci výpisu vidíme Secure Renegotiation IS supported, takže server jmvm.vse.cz na serveru 636 podporuje Secure Renegotiation. Pokud bychom u nějakého serveru viděli Secure Renegotiation IS NOT supported, potom by Secure Renegotiation nebylo podporováno.

Forward Secrecy a podpora DH výměny klíčů

  1. Otestujeme, jestli server bis.vse.cz na portu 993 podporuje Forward Secrecy s DH. Zadáme openssl s_client -connect bis.vse.cz:993 -cipher 'DH'.
    
    CONNECTED(00000003)
    
    depth=2 C = US, ST = New Jersey, L = Jersey City, O = The USERTRUST Network, CN = USERTrust RSA Certification Authority
    
    verify error:num=20:unable to get local issuer certificate
    
    verify return:0
    
    ---
    
    Certificate chain
    
     0 s:/OU=Domain Control Validated/CN=bis.vse.cz
    
       i:/C=NL/ST=Noord-Holland/L=Amsterdam/O=TERENA/CN=TERENA SSL CA 2
    
     1 s:/C=NL/ST=Noord-Holland/L=Amsterdam/O=TERENA/CN=TERENA SSL CA 2
    
       i:/C=US/ST=New Jersey/L=Jersey City/O=The USERTRUST Network/CN=USERTrust RSA Certification Authority
    
     2 s:/C=US/ST=New Jersey/L=Jersey City/O=The USERTRUST Network/CN=USERTrust RSA Certification Authority
    
       i:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root
    
    ---
    
    Server certificate         
    
    -----BEGIN CERTIFICATE-----
    
                               
    
    ...                        
    
                               
    
    -----END CERTIFICATE-----  
    
    subject=/OU=Domain Control Validated/CN=bis.vse.cz
    
    issuer=/C=NL/ST=Noord-Holland/L=Amsterdam/O=TERENA/CN=TERENA SSL CA 2
    
    ---
    
    No client certificate CA names sent
    
    ---
    
    SSL handshake has read 4967 bytes and written 375 bytes
    
    ---
    
    New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-GCM-SHA384
    
    Server public key is 2048 bit
    
    Secure Renegotiation IS supported
    
    Compression: zlib compression
    
    Expansion: zlib compression
    
    SSL-Session:
    
        Protocol  : TLSv1.2
    
        Cipher    : DHE-RSA-AES256-GCM-SHA384
    
        Session-ID: A4A42C42B334D8B7C7DD32533CED9D6B14A48783C5585C6F496E39FDF19AFE39
    
        Session-ID-ctx:
    
        Master-Key: AB4E8CF7586C183725720FD32C38A8916BBF129B5229D1ABE556710735063F74C5BE7123A3F05DC86264EF0B3CDA75C6
    
        Key-Arg   : None
    
        PSK identity: None
    
        PSK identity hint: None
    
        SRP username: None
    
        TLS session ticket lifetime hint: 300 (seconds)
    
        TLS session ticket:
    
    
    
    ...    
    
    
    
        Compression: 1 (zlib compression)
    
        Start Time: 1428778775
    
        Timeout   : 300 (sec)
    
        Verify return code: 20 (unable to get local issuer certificate)
    
    ---
    
    * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN] Dovecot ready.
    
    
  2. Vidíme, že jsme se k serveru připojili a pod Server certificate vidíme vrácený certifikát serveru. Server bis.vse.cz na portu 993 podporuje Forward Secrecy s DH.
  3. Stejným způsobem otestujeme, jestli Forward Secrecy s DH podporuje server jmvm.vse.cz na portu 636. Zadáme openssl s_client -connect jmvm.vse.cz:636 -cipher 'DH'.
    
    CONNECTED(00000003)
    
    write:errno=104
    
    ---
    
    no peer certificate available
    
    ---
    
    No client certificate CA names sent
    
    ---
    
    SSL handshake has read 0 bytes and written 176 bytes
    
    ---
    
    New, (NONE), Cipher is (NONE)
    
    Secure Renegotiation IS NOT supported
    
    Compression: NONE
    
    Expansion: NONE
    
    ---
    
    
  4. Server nevrátil žádné certifikáty. Server jmvm.vse.cz na portu 636 nepodporuje Forward Secrecy s DH.

Forward Secrecy a podpora DH s eliptickými křivkami (ECDH)

  1. Servery testujeme stejně jako v předchozím návodu, ovšem místo 'DH' na konci příkazu napíšeme 'ECDH'. Pokud bychom chtěli testovat server bis.vse.cz na portu 993, zadali bychom openssl s_client -connect bis.vse.cz:993 -cipher 'ECDH'.
  2. Zjistíme, že server bis.vse.cz na portu 993 ECDH nepodporuje. Na portu 443 ovšem ano.

Podpora RC4

  1. Servery testujeme stejně jako v předchozím návodu, ovšem místo 'ECDH' na konci příkazu napíšeme 'RC4'. Pokud bychom chtěli testovat server bis.vse.cz na portu 993, zadali bychom openssl s_client -connect bis.vse.cz:993 -cipher 'RC4'.
  2. Zjistíme, že server bis.vse.cz na portu 993 RC4 podporuje. Na portu 443 ovšem ne.

Seznam všech příkazů k testu

  1. openssl s_client -connect jmvm.vse.cz:636
  2. openssl s_client -connect jmvm.vse.cz:636 -ssl3 - Podpora protokolu SSL 3.0
  3. openssl s_client -connect jmvm.vse.cz:636 -tls1 - Podpora protokolu TLS 1.0
  4. openssl s_client -connect jmvm.vse.cz:636 -tls1_1 - Podpora protokolu TLS 1.1
  5. openssl s_client -connect jmvm.vse.cz:636 -tls1_2 - Podpora protokolu TLS 1.2
  6. openssl s_client -connect jmvm.vse.cz:636 -showcerts - Vlastní certifikát, mezilehlé certifikáty, kořenový certifikát a Secure Renegotiation
  7. openssl s_client -connect jmvm.vse.cz:636 -cipher 'DH' - Forward Secrecy a podpora DH výměny klíčů
  8. openssl s_client -connect jmvm.vse.cz:636 -cipher 'ECDH' - Forward Secrecy a podpora DH s eliptickými křivkami (ECDH)
  9. openssl s_client -connect jmvm.vse.cz:636 -cipher 'RC4' - Podpora RC4

Domů

Toto jsou soukromé studijní materiály. Všechny návody jsou poskytovány bez jakékoliv záruky. Všechny postupy provádíte na vlastní nebezpečí.