Как реализовать SNI, используя конфигурационный файл openssl? - PullRequest
0 голосов
/ 09 апреля 2019

Я реализовал SNI, используя OpenSSL, но не используя конфигурационный файл OpenSSL (cnf). Я загружаю сервер SSL_CTX, выполняя следующие действия:

 FILE *fp;
 CONF *cnf = NULL;
 long eline;

 fp = fopen("/somepath/app.cnf", "r");
 if (fp == NULL) {
     fprintf(stderr, "Error opening configuration file\n");
     /* Other missing configuration file behaviour */
 } else {
     cnf = NCONF_new(NULL);
     if (NCONF_load_fp(cnf, fp, &eline) == 0) {
         fprintf(stderr, "Error on line %ld of configuration file\n", eline);
         ERR_print_errors_fp(stderr);
         /* Other malformed configuration file behaviour */
     } else if (CONF_modules_load(cnf, "appname", 0) <= 0) {
         fprintf(stderr, "Error configuring application\n");
         ERR_print_errors_fp(stderr);
         /* Other configuration error behaviour */
     }
     fclose(fp);
     NCONF_free(cnf);
 }

Работает нормально, но сейчас я пытаюсь реализовать SNI на стороне сервера, используя конфигурационный файл OpenSSL, и я не знаю, как получить необходимую информацию для этого. Я взглянул на Как реализовать индикацию имени сервера (SNI) , и это хорошее объяснение, чтобы сделать это без конфигурационного файла openssl. Но это не работает с использованием файла.

Как я могу определить, запрошен ли у сервера сертификат? Может быть, openssl сам предоставит соответствующий сертификат?

...