08.openssl编程——配置文件
8.1 概述
openssl采用自定义的配置文件获取配置信息。
段信息,段信息由[xxx]来表示,其中xxx为段标识;
属性-值信息,表示方法为a=b,这种信息可以在一个段内页可以不属于任何段。
典型配置文件为apps/openssl.cnf(同时该文件也是openssl最主要的配置文件)
# OpenSSL example configuration file.
oid_section = new_oids
[ CA_default ]
dir = ./demoCA # Where everything is kept
certs = $dir/certs # Where the issued certs are kept
default_days = 365 #注意,这里是一个数字
8.2 openssl配置文件读取
openssl读取配置文件的实现源码在crypto/conf中,主要函数定义在conf.h中。函数一般以CONF或NCONF(new conf,新函数)开头。本文主要介绍了新的conf函数的使用方。
typedef struct
{
char *section;表明配置文件的段
char *name ; 表示这个段中的一个属性
char *value; 这个属性的值
} CONF_VALUE;
8.3 主要函数
a.NCONF_new
生成一个CONF结构
b.CONF_free
释放空间,以及释放存储的散列表中的数据。
c.CONF_load
函数主义:LHASH *CONF_load(LHASH *conf, const char *file, long *line),改函数根据输入配置文件名,读取信息存入散列表,如果有错,eline为错误行
d.CONF_load_bio/CONF_load_fp
根据bio或者文件句柄读取配置信息并存入散列表。
e.CONF_get_section
给定段信息,得到散列表中的所有对应值。用于获取配置文件中制定某个段下的所有信息,这些信息存放CONF_VALUE的堆栈中。
f.CONF_get_string
给定段以及属性值,得到对应的字符串信息
g.CONF_get_number
给定段和属性值,获取对应的数值信息。
h.CONF_get1_default_config_file
获取默认的配置文件名,比如openssl.cnf.
.