net-snmp原始碼VS2013編譯新增加密支援(OpenSSL)
snmp v3 協議使用了基於使用者的安全模型,具有認證和加密兩個模組。
認證使用的演算法是一般的訊息摘要演算法,例如MD5/SHA等。這一部分在net-snmp的原始碼中已經有相關的實現,無需再使用外部庫來支援它。
加密使用的演算法一般可以是DES/AES等。這一部分在net-snmp的原始碼中沒有想關的實現,需要使用外部加密演算法庫(OpenSSL)來支援。
1、安裝或編譯OpenSSL
要使得編譯出來的net-snmp支援加密,首先我們需要OpenSSL庫的相關檔案(標頭檔案的庫檔案)。這可以採用OpenSSL的原始碼來編譯的方式,也可以直接下載已經編譯好檔案來使用即可。
如果是自己編譯,網上有很多相關的文章了,參考著來做就是。這不是本文的重點,這裡就不寫了。
最快速的方式就是網上下載一個現成的來用就是了。這裡我下載的是這個 http://dl.pconline.com.cn/download/355862.html
下載之後直接雙擊安裝即可。
下圖是我這裡安裝後的位置,紅框中的是將要用到的兩個資料夾。
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驗證方式相關引數的配置檔案才可。
具體的可以見這篇文章