net-snmp源码VS2013编译添加加密支持(OpenSSL)
snmp v3 协议使用了基于用户的安全模型,具有认证和加密两个模块。
认证使用的算法是一般的消息摘要算法,例如MD5/SHA等。这一部分在net-snmp的源码中已经有相关的实现,无需再使用外部库来支持它。
加密使用的算法一般可以是DES/AES等。这一部分在net-snmp的源码中没有想关的实现,需要使用外部加密算法库(OpenSSL)来支持。
1、安装或编译OpenSSL
要使得编译出来的net-snmp支持加密,首先我们需要OpenSSL库的相关文件(头文件的库文件)。这可以采用OpenSSL的源码来编译的方式,也可以直接下载已经编译好文件来使用即可。
如果是自己编译,网上有很多相关的文章了,参考着来做就是。这不是本文的重点,这里就不写了。
最快速的方式就是网上下载一个现成的来用就是了。这里我下载的是这个http://ftp.pconline.com.cn/30fde0ee26ae331abcca7f901515b536/pub/download/201010/Win32OpenSSL-1_0_1g.exe
下载之后直接双击安装即可。
下图是我这里安装后的位置,红框中的是将要用到的两个文件夹。
2、在net-snmp工程中设置相关属性
2.1、设置包含目录和库目录
在libsnmp和snmpd项目中添加包含目录和库目录。(你也可以把所有项目的都加上,我这里只用到这两个项目)其中libsnmp这个项目必须加上,否则不支持加密。
2.2、设置预处理器定义
这里要添加一个宏定义NETSNMP_USE_OPENSSL。可以修改<net-snmp/net-snmp-config.h>文件,但是这种做法会导致要所有的项目都必须设置头文件和库文件的目录,所以不是很好。这里我们只需要libsnmp和snmpd这两个项目支持即可,所以只需要设置这两个项目的属性。
3、编译。编写配置文件
编译这里就不说了,以后写一篇文章来专门讲讲使用VS2013编译net-snmp 5.7。
使用的时候必须使用制订了SNMPv3验证方式相关参数的配置文件才可。
具体的可以见这篇文章
http://www.cnblogs.com/oloroso/p/4844907.html
http://www.cnblogs.com/oloroso/p/5001672.html