我已经使用OpenSSL实现了SNI,但没有使用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);
}
它可以正常工作,但是现在我正在尝试使用OpenSSL配置文件实现服务器端SNI,但我不知道如何获取所需的信息。我看过How to implement Server Name Indication (SNI),这是没有openssl配置文件的很好解释。但这不适用于文件。
如何确定服务器是否请求了证书?也许openssl本身会提供适当的证书?