本文是我们以前在IPFire防火墙上的工作的延续。 在本教程中,与IPFire项目集成了硬件令牌(如智能卡)及其读者(CCID合规性)的支持。 为IPFire 2.19版本成功编译了以下工具。
PC / SC智能卡守护进程用于使用CCID或专有驱动程序访问Linux平台上的智能卡。 需要CCID智能卡读卡器的驱动程序来访问智能卡。 CCID软件包包含用于Linux / Unix环境的不同智能卡读卡器的驱动程序。 由几个开源工具和库组成的OpenSC项目支持智能卡访问(PKCS#11 API)和管理(PKCS#15文件结构)。 诸如智能卡的硬件令牌可以用于以下目的
- 安全的Web登录
- WorkStation登录
- 文件加密
- VPN(OpenVPN,L2TP)
- 电子邮件加密
OpenSC支持的几个智能卡厂商如下。
- ASEPCOS
- FTCOSPK01C
- OpenPGP卡
- Cyberflex
- CardOs
- STARCOS
环境设置
对于开发环境的设置,在前面的文章中给出了详细的说明。
IPFire测试shell中的插件
建议在测试shell(类似于Linux终端)中安装IPFire插件,通过在根目录中使用以下命令来调用它。
./make shell
IPFire构建环境中的源包放置在/ usr / src / cache目录中。 本教程的所有必需软件包都已放置在缓存目录中。
pcsc-lite包的源码显示在以下快照中。
在我们开始编译pcsc-lite工具之前,建议使用以下命令安装所需的libudev-dev库
apt-get install libudev-dev
现在,使用以下命令提取源包,并运行./configure脚本,如下所示。
tar -xf pcsc-lite-1.8.18.tar.bz2
如下图所示,configure命令不会产生错误。
现在,只需运行./make和./make install命令即可在测试环境中安装pcscd守护程序。
pcsc-lite包的成功安装显示了用于编译CCID包的几个重要路径。
以下屏幕截图显示pcscd在测试环境中在IPFire中运行。
智能卡所需的下一个软件包就是CCID驱动程序包。 如下图所示,CCID包放置在缓存目录中。
以下屏幕截图显示了CCID包的./configure脚本生成的错误。
错误显示配置脚本找不到pcsc-lite。 因此,请使用configure脚本设置PCSC_CFLAGS ,如下所示。
./configure PCSC_CFLAGS=-I/usr/local/include/PCSC
但是,脚本生成另一个错误,因为在IPFire LFS的pkg-config路径下找不到libpcsclite.pc。
因此,首先导出PKG_CONFIG_PATH ,并再次运行configure脚本命令。
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/
./configure PCSC_CFLAGS=-I/usr/local/include/PCSC
配置脚本运行的成功输出如下所示。 它显示,脚本找到PCSC的所需文件。
运行./make&./make安装命令完成CCID驱动程序的安装。
在/ etc / udev / rules目录中复制智能卡读卡器的udev规则 ,如下所示。
在/ etc / udev / rules目录中复制92_pcscd_ccid.rules文件。
以下屏幕截图显示了/ usr / src / cache目录中的OpenSC工具。
运行configure脚本来检查包的依赖关系。
configure脚本的输出显示在以下快照中。
在测试环境中运行OpenBS安装的./make和./make安装命令。
以下屏幕截图显示OpenSC工具已成功安装在IPFire的测试外壳中。
在IPFire的LFS shell中安装所需的工具后,下一步是以IPFire软件包管理器格式(pakfire)构建插件。
汇编IPFire插件
有关IPFire环境的附件构建的详细程序已在前一篇文章的“建筑PSAD插件”部分中给出。
- 在IPFire设置的lfs目录中也创建了一个也称为lfs脚本的编译脚本。
- 必须在make.sh脚本中对新插件进行更改。
LFS脚本是为pcsc-lite-1.8.18,ccid-1.4.24和opensc-0.16.0包创建的。 下载软件包的所有lfs脚本,并将它们放在ipfire-2.x的lfs目录下。
上述插件的LFS脚本如下所示。
pcsc-lite
ccid
opensc
构建脚本( make.sh )文件中的更改如下所示。
运行以下命令来构建软件包。
ipfiremake pcsc-lite
ipfiremake ccid
ipfiremake opensc
需要运行以下命令两次来编译新的插件。
./make.sh build
以下屏幕截图显示了新插件的lfs脚本编译时没有错误。
以下屏幕截图显示了第一个生成命令的输出。 在此构建过程中找不到所有三个软件包的根文件。
新插件的三个根文件位于日志目录中,具有相同的软件包/文件名称,如下所示。
以下屏幕截图显示,新插件的rootfiles将复制到config/rootfiles/packages
路径。 更改复制的根文件的名称以匹配新插件的lfs名称。 (放在lfs目录下)
cp log/pcsc-lite-1.8.18 config/rootfiles/packages/pcsc-lite
cp log/ccid-1.4.24 config/rootfiles/packages/ccid
cp log/opensc-0.16.0 config/rootfiles/packages/opensc
新插件的根文件包含一个“ + ”符号,必须在运行build命令之前将其删除。
pcsc-lite根文件
ccid根文件
opensc根文件
使用以下sed命令从新包的根文件中删除“ + ”号。
sed -i 's/+//g' config/rootfiles/packages/pcsc-lite
sed -i 's/+//g' config/rootfiles/packages/ccid
sed -i 's/+//g' config/rootfiles/packages/opensc
以下屏幕截图显示已从根文件中删除加号。
PakFire是IPFire的软件包管理系统,由新插件中的安装,卸载和更新程序使用。
为src / paks路径中的所有新addon创建目录(与lfs相同),然后复制install.sh,uninstall.sh将src / paks / default /中的一个update.sh脚本从src / paks / pcsc-lite ,src / paks / ccid,src / paks / opensc 。
再次运行build命令以完成构建过程。
./make.sh build
这一次,忽略所有新插件的rootfiles缺少的消息,因为我们已经在config目录中更新了rootfiles。
最后,以下屏幕截图显示了在packages目录中创建了新的插件( pcsc-lite-1.8.18-2.ipfire,ccid-1.4.24-2.ipfire,opensc-0.16.0-2.ipfire ) 。
安装pakfire包
如下所示,已将编译的软件包复制到/ opt / pakfire / tmp目录中已安装的IPFire系统。
以下屏幕截图显示软件包已在IPFire系统上复制。
通过使用以下命令在IPFire上安装新的插件。
tar -xvf pcsc-lite-1.8.18-2.ipfire
tar -xvf ccid-1.4.24-2.ipfire
tar -xvf opensc-0.16.0-2.ipfire
使用./install.sh脚本在下面的屏幕截图中显示了新插件的安装 。
pcsc-lite的成功安装如下图所示。
下图显示了CCID智能卡驱动程序的安装。
如下图所示,最终安装了openSC工具,用于管理IPFire系统上的智能卡。
在本教程中,新的插件是在IPFire的开发系统中构建的。 这些新插件用于将智能卡及其读者与开源IPFire项目集成。