首页 | 新闻资讯 | 培训认证 | 安全管理 | 病毒分析 | 安全协议 | 网络安全 | 防火墙 | 黑客技术
DB安全 | Web安全 | 入侵检测 | 安全审计 | 设备安全 | 备份恢复 | 安全标准 | 法律法规 | 无线安全
OS安全 | PKI与PMI | 病毒防治 | 隔离网闸 | XML安全 | 网管专区 | 经典案例 | 技术论坛 |  
+ 文章搜索 +
当前位置:首页>>原创作品>>PKI与PMI>>正文
关键字:
范 围:
※推荐文章※
·WEB安全模块源代码分析文档之一-
·WEB安全模块源代码分析文档之--前
·Windows2000 professional下APAC
·openssl之X509系列之5---证书请求
·openssl之X509系列之4---证书请求
·openssl之X509系列之3---证书请求
WEB安全模块源代码分析文档之二--模块初始化函数
作者:rainbow 文章出处:中国信息安全组织[原创] 发布时间:2005-10-12 点击: 字体: 【

模块初始化函数
作者:Rainbow(不经历风雨,怎么见彩虹)
创作时间:2002-10-1

/********************************************************************************************************************
声明:本文档用于学习与研究可以自由转载,无论以何种形式发布都必须保留完整的版权声明,商业用途不得转载.本人能力有限,如有问题欢迎交流与指正。
网站:
论坛:/forum/forum.html
邮件:rainbow_zrh@sina.com webmaster@infosecurity.org.cn
*********************************************************************************************************************/ 

初始化函数的实现文件为ssl_engine_init.c,下面对mod_ssl用到的初始化函数进行逐一讲解。
1、ssl_init_Module
【功能】:配置日志文件。
【过程描述】:
初始化次数nInitCount加1,ap_register_cleanup清除注册的钩子,ssl_config_global_create创建全局对象,设置默认值。ssl_log_open打开日志文件,输出初始信息。ssl_init_Engine初始化ENGINE,ssl_init_SSLLibrary,ssl_mutex_init初始化Mutex,ssl_scache_init初始化会话缓存,ssl_init_ConfigureServer读入服务器证书与私钥,ssl_init_CheckServers检查配置。ap_add_version_component输出Mod_ssl与OpenSSL的版本信息。
2、ssl_init_SSLLibrary
【功能】:初始化OpenSSL库。
【过程描述】: 
3、ssl_init_Engine
ENGINE_by_id(设备)返回指定的ENGINE对象, ENGINE_ctrl(), ENGINE_set_default()设为默认的设备。
4、ssl_init_TmpKeysHandle
【功能】:初始化RSA与DH参数。
【过程描述】: 生成512/1024bit的RSA参数
5、ssl_init_ConfigureServer
【功能】:初始化指定的服务结构。
【过程描述】: 生成512/1024bit的RSA参数
6、ssl_init_CheckServers
【功能】:初始化指定的服务结构。
【过程描述】:这是一个最复杂的初始化函数,过程如下:
检查配置,SSL_CTX_new()生成SSL上下文,用SSL_CTX_set_options()对SSL_CTX进行设置,SSL_CTX_set_app_data将server_rec记录在SSL_CTX中,SSL_CTX_set_session_cache_mode设置会话缓存的模式,然后使用下列函数
SL_CTX_set_verify(ctx, nVerify, ssl_callback_SSLVerify)
SSL_CTX_sess_set_new_cb(ctx, ssl_callback_NewSessionCacheEntry)
SSL_CTX_sess_set_get_cb(ctx, ssl_callback_GetSessionCacheEntry)
SSL_CTX_sess_set_remove_cb(ctx, ssl_callback_DelSessionCacheEntry)
SSL_CTX_set_tmp_rsa_callback(ctx, ssl_callback_TmpRSA)
SSL_CTX_set_tmp_dh_callback(ctx, ssl_callback_TmpDH)
SSL_CTX_set_info_callback(ctx, ssl_callback_LogTracingState)
设置相对应的回调函数,SSL_CTX_set_cipher_list设置加密套件,SSL_CTX_load_verify_locations装入CA证书,ssl_init_FindCAList检查CA列表,SSL_CTX_set_client_CA_list设置客户端CA证书列表。
SSL_X509_STORE_create装入证书吊销列表。SSL_CTX_get_client_CA_list与sk_X509_NAME_num取CA列表并计算个算。SSL_CTX_use_certificate装入服务器证书,SSL_CTX_use_PrivateKey装入私钥。SSL_CTX_use_certificate_chain装入证书链。最后如果定义了SSL_VENDOR则调用ap::mod_ssl::vendor::configure_server钩子函数。
7、ssl_init_FindCAList
【功能】:生成CA证书列表。
【过程描述】:
ap_make_sub_pool分配子池,sk_X509_NAME_new创建新的名字堆栈,SSL_load_client_CA_file装入CA证书文件,sk_X509_NAME_find查找指定的CA名字对象,找到将它堆入sk_X509_NAME_push堆栈,sk_X509_NAME_free释放堆栈;
用同样的方法处理CA证书路径文件。ap_popendir打开目录,ap_pclosedir关闭目录,ap_destroy_pool释放分配的子池。
8、ssl_init_Child
【功能】:
【过程描述】:打开互斥锁文件。
9、ssl_init_ChildKill
【功能】:。
【过程描述】:现在什么事也不做。
10、ssl_init_ModuleKill
【功能】:
【过程描述】:
ssl_scache_kill、ssl_mutex_kill关闭会话缓存与互斥,ssl_init_TmpKeysHandle释放密钥及其参数,释放由apache内存池以外分配的内存,X509证书存贮区,公钥与私钥,SSL_CTX结构。如果定义了共享模块标志SHARED_MODULE,调用ERR_free_strings,EVP_cleanup,最后调用ssl_util_thread_cleanup结束。

返回顶部↑】 【推荐好友】 【查看评论
用户名: 新注册) 密码: 匿名评论 [查看评论] 发表评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
  Copyright © 2004-2005 infosecurity.org.cn . All Rights Reserved
版权所有:中国信息安全组织 系统管理:webmaster@infosecurity.net.cn
本站部分资源来自互联网,如有侵犯您的版权或其他问题,请通知管理员,我们会尽快处理!