Changeset 46

Show
Ignore:
Timestamp:
02/28/2005 12:00:55 AM (4 years ago)
Author:
jan
Message:

added ssl.ca-file and updated error-message if private and public key don't match

Location:
trunk/src
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/base.h

    r9 r46  
    242242        /* server wide */ 
    243243        buffer *ssl_pemfile; 
     244        buffer *ssl_ca_file; 
    244245        unsigned short use_ipv6; 
    245246        unsigned short is_ssl; 
     
    425426         
    426427        buffer *ssl_pemfile; 
     428        buffer *ssl_ca_file; 
    427429        unsigned short use_ipv6; 
    428430        unsigned short is_ssl; 
  • trunk/src/config.c

    r1 r46  
    201201                { "debug.log-state-handling",    NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_SERVER },     /* 37 */ 
    202202                 
     203                { "ssl.ca-file",                 NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_SERVER },      /* 38 */ 
     204                 
    203205                 
    204206                { "server.host",                 "use server.bind instead", T_CONFIG_DEPRECATED, T_CONFIG_SCOPE_UNSET }, 
     
    248250                s->server_name   = buffer_init(); 
    249251                s->ssl_pemfile   = buffer_init(); 
     252                s->ssl_ca_file   = buffer_init(); 
    250253                s->error_handler = buffer_init(); 
    251254                s->server_tag    = buffer_init(); 
     
    294297                 
    295298                cv[35].destination = &(s->allow_http11); 
     299                cv[38].destination = s->ssl_ca_file; 
    296300                 
    297301                srv->config_storage[i] = s; 
     
    445449                        } else if (buffer_is_equal_string(du->key, CONST_STR_LEN("ssl.pemfile"))) { 
    446450                                PATCH(ssl_pemfile); 
     451                        } else if (buffer_is_equal_string(du->key, CONST_STR_LEN("ssl.ca-file"))) { 
     452                                PATCH(ssl_ca_file); 
    447453                        } else if (buffer_is_equal_string(du->key, CONST_STR_LEN("ssl.engine"))) { 
    448454                                PATCH(is_ssl); 
     
    10061012 
    10071013        if (s->is_ssl) { 
    1008                 if (s->ssl_pemfile->used == 0) { 
     1014                if (buffer_is_empty(s->ssl_pemfile)) { 
    10091015                        /* PEM file is require */ 
    10101016                         
  • trunk/src/network.c

    r22 r46  
    282282                } 
    283283                 
    284                 if (0 > SSL_CTX_use_certificate_file(s->ssl_ctx, s->ssl_pemfile->ptr, SSL_FILETYPE_PEM)) { 
     284                if (!buffer_is_empty(s->ssl_ca_file)) { 
     285                        if (1 != SSL_CTX_load_verify_locations(s->ssl_ctx, s->ssl_ca_file->ptr, NULL)) { 
     286                                log_error_write(srv, __FILE__, __LINE__, "ss", "SSL:",  
     287                                                ERR_error_string(ERR_get_error(), NULL)); 
     288                                return -1; 
     289                        } 
     290                } 
     291                 
     292                if (SSL_CTX_use_certificate_file(s->ssl_ctx, s->ssl_pemfile->ptr, SSL_FILETYPE_PEM) < 0) { 
    285293                        log_error_write(srv, __FILE__, __LINE__, "ss", "SSL:",  
    286294                                        ERR_error_string(ERR_get_error(), NULL)); 
    287295                        return -1; 
    288                 }        
    289                  
    290                 if (0 > SSL_CTX_use_PrivateKey_file (s->ssl_ctx, s->ssl_pemfile->ptr, SSL_FILETYPE_PEM)) { 
     296                } 
     297                 
     298                if (SSL_CTX_use_PrivateKey_file (s->ssl_ctx, s->ssl_pemfile->ptr, SSL_FILETYPE_PEM) < 0) { 
    291299                        log_error_write(srv, __FILE__, __LINE__, "ss", "SSL:",  
    292300                                        ERR_error_string(ERR_get_error(), NULL)); 
     
    294302                } 
    295303                 
    296                 if (!SSL_CTX_check_private_key(s->ssl_ctx)) { 
    297                         log_error_write(srv, __FILE__, __LINE__, "ss", "SSL:",  
    298                                         "Private key does not match the certificate public key"); 
     304                if (SSL_CTX_check_private_key(s->ssl_ctx) != 1) { 
     305                        log_error_write(srv, __FILE__, __LINE__, "sssb", "SSL:",  
     306                                        "Private key does not match the certificate public key, reason:", 
     307                                        ERR_error_string(ERR_get_error(), NULL), 
     308                                        s->ssl_pemfile); 
    299309                        return -1; 
    300310                } 
  • trunk/src/server.c

    r29 r46  
    243243                        buffer_free(s->server_tag); 
    244244                        buffer_free(s->ssl_pemfile); 
     245                        buffer_free(s->ssl_ca_file); 
    245246                        buffer_free(s->error_handler); 
    246247                        array_free(s->indexfiles);