The certificate Common Name (CN) does not match with the expected CN

原文地址:https://tls.mbed.org/discussions/bug-report-issues/verifying-peer-x-509-cert

Verifying peer X.509 Cert

 

Jan 20, 2016 21:05
Dan
The certificate Common Name (CN) does not match with the expected CN

I am using a modified version of ssl_client1.c to access yahoo for testing purposes. I assume their certs are installed correctly, but for some reason I keep getting the following error:

"The certificate Common Name (CN) does not match with the expected CN"

My modification to the ssl_client1.c is as follows:

    /*
     * 0.1 Initialize certificates
     */
    mbedtls_printf( "  . Loading the CA root certificate ..." );
    fflush( stdout );

    char cwd_buff[PATH_MAX + 1];
    getcwd( cwd_buff, PATH_MAX + 1 );
    strcat(cwd_buff, "\\Debug\\yahoo.crt");
    mbedtls_printf("CA File: %s ", cwd_buff);

    ret = mbedtls_x509_crt_parse_file(&cacert, cwd_buff);

    if( ret < 0 )
    {
        mbedtls_printf( " failed\n  !  mbedtls_x509_crt_parse returned -0x%x\n\n", -ret );
        goto exit;
    }

    mbedtls_printf( " ok (%d skipped)\n", ret );

I don't get any errors loading the cert and I do get the HTTP of Yahoo, its just the cert that seems to be off.

 

Jan 21, 2016 01:59
Dan
The certificate Common Name (CN) does not match with the expected CN

Interesting.....I just tried the ssl_client2.c program and it works fine. I guess I'm not doing something correct with using the cert. Any ideas why ssl_client1.c gives the CN error?

 

Feb 10, 2016 22:07
moraine
The certificate Common Name (CN) does not match with the expected CN

I reproduced the same issue using unmodified ssl_client1 and ssl_server example programs for the following versions : v2.2.1, v2.2.0 ,v2.1.4 , v1.3.16, but not with v1.2.19

For information, please find below the output of ssl_client1 when I meet the issue :

  . Seeding the random number generator... ok
  . Loading the CA root certificate ... ok (0 skipped)
  . Connecting to tcp/localhost/4433... ok
  . Setting up the SSL/TLS structure... ok
  . Performing the SSL/TLS handshake.../home/bmoraine/Desktop/mbed/mbedtls-2.2.0/library/ssl_tls.c:4400: x509_verify_cert() returned -9984 (-0x2700)
 ok
  . Verifying peer X.509 certificate... failed
  ! The certificate Common Name (CN) does not match with the expected CN

  > Write to server: 18 bytes written

GET / HTTP/1.0

  < Read from server: 150 bytes read

HTTP/1.0 200 OK
Content-Type: text/html

<h2>mbed TLS Test Server</h2>
<p>Successful connection using: TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384</p>
/home/bmoraine/Desktop/mbed/mbedtls-2.2.0/library/ssl_tls.c:6509: mbedtls_ssl_read_record() returned -30848 (-0x7880)
Last error was: -30848 - SSL - The peer notified us that the connection is going to be closed

Regarding ssl_server output no error is displayed :

  . Loading the server cert. and key... ok
  . Bind on https://localhost:4433/ ... ok
  . Seeding the random number generator... ok
  . Setting up the SSL data.... ok
  . Waiting for a remote connection ... ok
  . Performing the SSL/TLS handshake... ok
  < Read from client: 18 bytes read

GET / HTTP/1.0

  > Write to client: 150 bytes written

HTTP/1.0 200 OK
Content-Type: text/html

<h2>mbed TLS Test Server</h2>
<p>Successful connection using: TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384</p>

  . Closing the connection... ok
  . Waiting for a remote connection ...

Is there a regression in ssl_client1 example or in the library itself?

 

Feb 12, 2016 11:49
moraine
The certificate Common Name (CN) does not match with the expected CN

It seems I fix the issue by replacing hostname parameter in the call of mbedtls_ssl_set_hostname() on line 180

I replace :

  if( ( ret = mbedtls_ssl_set_hostname( &ssl, "mbed TLS Server 1" ) ) != 0 )
   {
        mbedtls_printf( " failed\n  ! mbedtls_ssl_set_hostname returned %d\n\n", ret );
        goto exit;
    }

by

  if( ( ret = mbedtls_ssl_set_hostname( &pms->ssl, SERVER_NAME ) ) != 0 )
    {
        mbedtls_printf( " failed\n  ! mbedtls_ssl_set_hostname returned %d\n\n", ret );
        goto exit;
    }

For information, SERVER_NAME is defined on line 63

#define SERVER_NAME "localhost"

and is used previously used by mbedtls_net_connect() on line 141

上一篇:Uniswap v3 宣布 Arbitrum 和 Optimism 作为 Layer 2 解决方案,以扩展 DEX 野兽


下一篇:SumSwap欲挑战并超越Uniswap的王者地位