Windows 下strongswan源码安装

网上没有一个完整版本的安装教程,只能看官方英文文档,折腾数周,成功编译。现附上安装历程供大家参考。有问题可以互相讨论。

windows支持strongswan5.2.0以上版本。本次用5.5.3版本。该文档中英文部分摘抄自官方文档(作为解释):
Windows下编译strongswan
pki的用法

准备工作

1、下载strongswan源码5.2.0以上版本:strongswan5.5.3较好。
strongswan-5.5.3下载地址
2、安装MinGW64,能正确使用gcc4.8.1:x86-64-win32-seh稳定性较好。选择x64 Architecture win32 threading.(要连外网才能下载安装)下载Installer在线安装。
mingw安装教程
3:停止/禁用IKEEXT服务来禁用Windows本机IKE服务:(服务恢复选不操作否则就会自动启用该服务)
禁用IKEEXT服务
4、安装openssl-1.0.2u。最好1.0.x版本的(1.1.x找不到libeay32.dll)nasm安装,masm安装,特别复杂,masm还下载不了8.0以上的版本,其他版本又不兼容。很多报错(折腾一天)。建议用VS2010/2013等编译安装。
openssl-1.0.2u下载
openssl-1.1.x安装教程(不建议)
VC6编译openssl教程(不建议)
VS2010编译openssl:(一定配置好环境变量或者用.bat脚本自动配置环境变量)
VS编译openssl教程1
VS编译openssl教程2
以下是编译64位openssl的步骤:
安装路径D:\VC\bin\amd64\“中运行vcvars64.bat
进入openssl-1.0.2u目录,我的目录是D:\openssl-1.0.2u

perl Configure VC-WIN64
ms\do_win64a
nmake -f ms\nt.mak     (在out32生成静态链接库libeay32.lib和ssleay32.lib)
nmake -f ms\nt.mak test来测试
nmake -f ms\ntdll.mak   (在out32dll生成动态链接库libeay32.dll和ssleay32.dll)
nmake -f ms\nt.mak install (默认生成路径是同磁盘驱动下的\usr\local\ssl\)
nmake -f ms\ntdll.mak install
拷贝D:\usr\local\ssl\bin下的两个dll到D:\usr\local\ssl\lib

若存在转换到COFF期间失败的报错,以下方案可以解决:

全部重命名,不使用这两个exe。

成功编译openssl:

5、下载MinGW-W64 MSYS builds.
MinGW下载

First install MinGW-W64, preferably using the installer. The 4.8.1 version is known to work fine using the x64 Architecture and native win32 threading. To run ./configure, you’ll need MSYS, for example by using the MinGW-W64 MSYS builds. After extracting the .zip file, invoke msys.bat and run:
sh /postinstall/pi.sh to complete the installation. Use this shell to./configure and build strongSwan.

msys控制台,单击属性快速编辑模式即可使用复制粘贴功能。

配置strongswan

我的配置文件所在位置:

D:\strongswan-5.5.3\src\swanctl\swanctl.conf
D:\strongswan-5.5.3\src\swanctl\swanctl\swanctl.conf(编译后才有)
D: \strongswan-5.5.3\conf\strongswan.conf

Windows下ipsec.conf和secrets.conf不可用。必须使用swanctl.conf
swanctl.conf(多次编译,最好两个swanctl.conf都一起改)

connections {testvpn {version = 2                  #ikev2认证方式unique = never               #允许多个客户端连接fragmentation = yeslocal_addrs = 10.10.216.144 #服务器端ip地址proposals = default          #ike阶段使用的秘钥算法,默认local {auth = pubkey          certs = cymCert.pem #后面会生成证书,服务器认证客户端id = 10.10.216.144}remote {         auth = eap-mschapv2     #客户端认证方式       eap_id = %any}pools = mypool        children {testChild {esp_proposals = default #ipsec阶段使用的秘钥算法,默认}            }        }
}pools {mypool {addrs = 10.1.0.0/16    #分配虚拟ip}
}secrets {eap {id = cym             #客户端连接用户名与密码secret = 123456}
}

strongswan.conf(这里配置了两个日志,但是没有生效)charon-svc配置是必需的。

swanctl {load = pem pkcs1 pkcs8 curve25519 x509 revocation constraints pubkey openssl random
}charon-systemd {load = random nonce aes sha1 sha2 hmac pem pkcs1 pkcs8 x509 revocation curve25519 curl kernel-netlink socket-win updown vici
}charon-svc {filelog { D:\strongswan-5.5.3\charon.log {flush_line = yes}}dns1=8.8.8.8dns2=10.10.50.1dns3=114.114.114.114load_modular = yesplugins {include strongswan.d/charon/*.conf}start-scripts {swanctl-creds = swanctl --load-creds --nopromptswanctl-conns = swanctl --load-conns}
}charon {filelog { D:\strongswan-5.5.3\charon.log {flush_line = yes}}load_modular = yesi_dont_care_about_security_and_use_aggressive_mode_psk = yescompress = yesdns1=8.8.8.8dns2=10.10.50.1dns3=114.114.114.114plugins {duplicheck{enable=no}include strongswan.d/charon/*.conf}}include strongswan.d/*.conf

编译

可查看官方文档:windows编译strongswan官方文档
编译步骤:

msys.bat
sh /postinstall/pi.sh(一次之后就不用了,主要是为了选择mingw的安装路径,之后直接双击打开msys.bat即可)
cd D:\strongswan-5.5.3 编译命令:
./configure --enable-monolithic–disable-defaults <options…>
make
make install

msys.bat
cd d:\strongswan-5.5.3
CC=x86_64-w64-mingw32-gcc CFLAGS="-g -O2 -Wall -Wno-pointer-sign -Wno-format-security -Wno-format -mno-ms-bitfields -I/D/usr/local/ssl/include/" LDFLAGS="-L/D/usr/local/ssl/lib/" ./configure --disable-defaults --enable-monolithic --enable-static --enable-svc --enable-ikev2 --enable-ikev1 --enable-openssl --enable-nonce --enable-pem --enable-pkcs1 --enable-x509  --enable-socket-win --enable-kernel-wfp --enable-kernel-iph --enable-pubkey --enable-eap-identity --enable-eap-mschapv2 --enable-pki --enable-swanctl --with-swanctldir=swanctl --with-strongswan-conf=strongswan.conf
make
make install DESTDIR=D:/strongswan-5.5.3b (生成的文件放入这个文件夹方便找dll文件)

./configure时可查看日志文件:d:\strongswan-5.5.3\config.log

编译时存在一些小错误,修改了mingw64的源码:
重复定义FWPM_DISPLAY_DATA0_,注释掉该部分

#endif没有#if,注释掉#endif

创建证书

需要复制D:\strongswan-5.5.3b\usr\local\lib\bin下的libcharon-0.dll, libtpmtss-0.dll,libstrongswan-0.dll,这3个dll文件D:\strongswan-5.5.3\src\pki\.libs

D:\strongswan-5.5.3\src\pki\.libs下打开cmd生成证书:

pki --gen > caKey.derpki --self --in caKey.der --dn "C=CN, O=one, CN=10.10.216.144" --ca --lifetime 3650 > caCert.derpki --gen > cymKey.derpki --pub --in cymKey.der > cymPub.derpki --pub --in cymKey.der | pki --issue --lifetime 3601 --cacert caCert.der --cakey caKey.der --dn "C=CN, O=one, CN=10.10.216.144" --san="10.10.216.144" --flag serverAuth --flag ikeIntermediate > cymCert.der

复制证书cymKey.der, cymCert.der, caCert.derD:\strongswan-5.5.3\src\swanctl\swanctl下的一些目录:

/swanctl/(rsa|pkcs8)/cymKey.der
/swanctl/x509/cymCert.der
/swanctl/x509ca/caCert.der

• /etc/swanctl/(rsa|pkcs8)/cymKey.der holds the private key of the given peer (directory depends on the type of key), gets loaded automatically. Passwords may be configured in swanctl.conf.
• /etc/swanctl/x509/cymCert.der holds the end-entity certificate of the given peer, gets loaded automatically. Reference it in swanctl.conf to explicitly use it.
• /etc/swanctl/x509ca/caCert.der

创建客户端证书(在该cmd下继续):
To convert an X.509 certificate from DER to PEM

openssl x509 -inform der -outform pem -in caCert.der -out caCert.pem
openssl x509 -inform der -outform pem -in cymCert.der -out cymCert.pem

To convert an RSA key from DER to PEM

openssl rsa -inform der -outform pem -in cymKey.der -out cymKey.pem

To package all of the files into a PKCS#12 container

openssl pkcs12 -in cymCert.pem -inkey cymKey.pem -certfile caCert.pem -export -out cym.p12

The cym.p12 file contains everything needed and is ready for the import on other systems.
cymCert.pem 复制到:D:\strongswan-5.5.3\src\swanctl\swanctl\x509

cym.p12导入客户端计算机。(计算机开始,输入mmc,添加删除管理单元,证书,添加,计算机账户,受信任的根证书颁发机构,导入cym.p12,关闭,不用保存控制台)

启动charon-svc.exe

需要复制D:\strongswan-5.5.3b\usr\local\lib\bin下的libcharon-0.dll, libtpmtss-0.dll,libstrongswan-0.dll,这3个dll文件到charon-svc.exe目录下才能启动程序。每个版本不同,生成的dll文件可能不同。

同时复制到:D:\strongswan-5.5.3\src\swanctl\.libs

启动:服务方式启动或者直接右键(管理员启动)
先启动charon-svc.exe,然后swanctl --load-all,客户端再连接。

sc create “strongSwan IKE service” binPath= D:\strongswan-5.2.0b\usr\local\bin\charon-svc.exe
sc start “strongSwan IKE service”

D:\strongswan-5.5.3\src\swanctl中打开cmd:swanctl --load-all

windows客户端配置:
打开网络与共享中心,设置新的网络连接,连接到工作区(VPN连接),创建新连接,目标ip(服务器ip)。使用之前配置文件中的用户名密码连接。其他属性如下:

客户端IP:

服务器端连接成功:

Note:

Note the specified include path /D/usr/local/ssl/include/openssl/. In the code, the include is specified as #include <openssl/evp.h>. The C compiler resolves the include, due to the usage of <>, as dependent on the include paths. So it looks, at /D/usr/local/ssl/include/openssl/ + openssl/evp. That is then /D/usr/local/ssl/include/openssl/openssl/evp.h. Your openssl headers are at /D/usr/local/ssl/include/openssl/ exactly though. So you need to get rid of that extra openssl in the path. The straight forward solution to that is to just remove the openssl/ from /D/usr/local/ssl/include/openssl/. That is then /D/usr/local/ssl/include/. Together with openssl/evp.h, that then results in the correct path /D/usr/local/ssl/include/openssl/evp.h. So use -I/D/usr/local/ssl/include/ instead of -I/D/usr/local/ssl/include/openssl/

Run charon-svc.exe with system privileges (not admin or user), and make sure the ikeext service is disabled.

最后,编译strongswan源码花了将近3周时间,过程确实很繁杂,bug也特别多。一定要认真看官方文档!!!有问题在strongswan on windows的github页面发起提问,一天就可以找到解决方案!附上链接:github讨论

Windows下strongswan-5.5.3源码安装相关推荐

  1. 在windows下执行./configure,make,makeinstall源码安装程序spice-gtk

    使用MSYS软件,在我的上一篇博客中有软件下载地址.本文使用MSYS进行源码编译spice-gtk-0.33. 首先打开MSYS软件,进入你源码所在目录,例如: cd  /c/Users/Admi.. ...

  2. ROS环境下大疆tello无人机源码安装驱动代码解读

    大疆tello无人机是一款微小型无人机,可以支持多种开发模式.这里用的是ROS1的kinetic版本进行开发.参考文档来自http://wiki.ros.org/tello_driver 1)kine ...

  3. 【原创】Windows下使用 Eclipse 管理 RabbitMQ 源码之问题解决

    2019独角兽企业重金招聘Python工程师标准>>> 使用 Eclipse + Erlide 来管理 Erlang 代码是一种常见方式.本文简要说明下,本人在 Windows 下管 ...

  4. Windows下最轻量级Git克隆工具源码分享

    简单的来说: 原理就是只要用户知道git地址和分支名,即可克隆项目到指定文件夹,省去了输命令行的时间,方便用户去操作 系统要求: Windows系统,然后本身环境要装有git git安装地址:http ...

  5. Linux及Windows下编译exosip和osip2源码

    eXosip库及编译流程简介 1.eXosip库的简介 1.1.osip简介 osip2是一个开放源代码的sip协议栈,是开源代码中不多使用C语言写的协议栈之一,它具有短小简洁的特点,专注于sip底层 ...

  6. windows下使用GIT下载ANDROID源码

    1.安装msysgit 2.运行msysgit, 进入bash界面 3.切换工作目录 cd /d/android/source 4.初始化目录 git init 5.下载 git clone http ...

  7. ott盒子 MySQL_Linux+Nginx+MySql+Php既LNMP源码安装

    前言: 我们都知道Apache作为一款出色的web服务器占据了市场大半个江山,他的地位目前还无人能取代,但是除了Apache,,在web服务器软件行列,Nginx以其性能稳定.功能丰富.运维简单.处理 ...

  8. Linux【学习心得】深入剖析软件的源码安装

    转自:http://www.imooc.com/wenda/detail/242044 学习了一段时间的Linux,相信大家都会遇到需要安装软件的情况,而新手(比如我)对于这个问题肯定是特别头疼.照着 ...

  9. 在 Linux 和 Windows 下源码安装 Perl

    Perl 是一种功能丰富的计算机程序语言,运行在超过 100 种计算机平台上,适用广泛,从大型机到便携设备,从快速原型创建到大规模可扩展开发.在生物信息分析领域,Perl 主要是做数据预处理.文本处理 ...

最新文章

  1. navicat的使用
  2. 视频中的运动特征--Learning Motion Patterns in Videos
  3. 信号编程之sigaction函数和sigqueue函数
  4. c语言 构造类,C语言之构造类型
  5. [大牛就是牛]双栈排序
  6. jQuery操作示例
  7. 表格中序号怎计算机课程视频,【答疑】在Excel表格里输入了文字后怎么下拉顺序号啊?如何在表格里添加序号? - 视频教程线上学...
  8. win7 64位操作系统中Oracle 11g + plsql安装教程详解(图解)
  9. PySpark任务在YARN集群上运行python 算法
  10. 渗透测试学习笔记之案例一
  11. 超级经典回帖专用语(转载)
  12. LittleVGL v7.5.0在STM32F103x上的移植
  13. Static Single Assignment(SSA)
  14. 如何使用音频转换器将多个音频合并为一个音频
  15. UnityShader(四)基础光照
  16. 携程笔试__界面测试用例
  17. 51单片机 | 蜂鸣器实验
  18. 别看了!我们该认认真真写博客了…
  19. 浅析Web表单美化CSS框架Topcoat
  20. MinIO高性能对象存储

热门文章

  1. linux配置4g网络命令_Linux常用操作练习汇总
  2. java毕业生设计医生咨询系统计算机源码+系统+mysql+调试部署+lw
  3. python查火车票_使用python制作查询火车票工具
  4. python股票回测_Python量化交易-回测简单的交易策略
  5. 分步傅里叶算法_快速分步傅里叶算法,split-step fast Fourier transform,音标,读音,翻译,英文例句,英语词典...
  6. 我在CSDN发表原创文章,被别人拿去发了一篇北大核心,论文难道就是东拼西凑?
  7. 重拾C#日常积累:DateTime日期的格式化和空值设置
  8. 全国大学生计算机技能应用(2020年)——C++科目决赛程序设计题解
  9. python中的注释行和注释块
  10. OSChina 周三乱弹 ——你有社交恐惧症么?