本次服务端是龙芯的linux环境,客户端windows 7。
一、环境搭建
二、证书生成
需要根证书、服务器私钥、服务器证书、客户端私钥、客户端证书
在用ipsec pki命令的时候,出现building CRED_PRIVATE_KEY - RSA failed, tried 3 builders,检查原因openssl没有装上,用.confgure重新安装下。
1. 生成CA证书的私钥
ipsec pki --gen --outform pem > ca.pem
2. 自建私钥,签名CA证书,采用自签形式
ipsec pki --self --in ca.pem --dn "C=CN, O=unit, CN=root_CA" --ca --outform pem >ca.cert.pem
这里C表示国家名,O表示组织单位,CN表示通用名字
3. 生成服务器证书所需的私钥:
ipsec pki --gen --outform pem > server.pem
4. 用CA证书签发服务器证书
先确定你的服务器的IP地址或域名,以后客户端连接时只能使用证书中的IP地址或域名连接(多服务器使用相同根证书CA的,请先做好服务器的域名解析),
然后将下面命令中的192.168.0.205替换为自己服务器的IP地址或域名,一共需要替换两处:
ipsec pki --pub --in server.pem | ipsec pki --issue --cacert ca.cert.pem \
--cakey ca.pem --dn "C=CN, O=unit, CN=192.168.0.205" \
--san="192.168.0.205" --flag serverAuth --flag ikeIntermediate \
--outform pem > server.cert.pem
注意以上命令中的”C=”和”O=”的值要与第2步CA中的C,O的值保持一致.
--san 设置别名,建议设置两个或者两个以上,分别为你的域名和网卡ip;–flag serverAuth 表示证书使用用途,不加windows 7会报错
如果要使用域名的方式,必须在/etc/hosts中加上ip地址与域名的对应关系
5. 生成客户端证书所需的私钥:
ipsec pki --gen --outform pem > client.pem
6. 用CA签名客户端证书(将ca.cert.pem改成ca.cert.cer后供手机客户端安装使用)(C,O的值要与上面第2步CA的值一致,CN的值随意)
ipsec pki --pub --in client.pem | ipsec pki --issue --cacert ca.cert.pem \
--cakey ca.pem --dn "C=CN, O=unit, CN=client" \
--outform pem > client.cert.pem
7. 服务端安装证书:
cp -r ca.cert.pem /usr/local/etc/ipsec.d/cacerts/
cp -r server.cert.pem /usr/local/etc/ipsec.d/certs/
cp -r server.pem /usr/local/etc/ipsec.d/private/
cp -r client.cert.pem /usr/local/etc/ipsec.d/certs/
cp -r client.pem /usr/local/etc/ipsec.d/private/
三、配置Strongswan
1. 编辑/usr/local/etc/ipsec.conf文件:
服务器端配置:
# /etc/ipsec.conf - Libreswan IPsec configuration file
# This file: /etc/ipsec.conf
#
# Enable when using this configuration file with openswan instead of libreswan
#version 2
#
# Manual: ipsec.conf.5# basic configuration
config setup
uniqueids=neverconn %default
ikelifetime=60m
keylife=20m
rekeymargin=3m
keyingtries=1
mobike=no
keyexchange=ikev2# Add connections here
conn host-host
left=192.168.0.205
leftid="C=CN, O=unit, CN=192.168.0.205"
leftcert=server.cert.pem
leftfirewall=yes
right=192.168.0.219
rightid="C=CN, O=unit, CN=client"
type=transport
auto=add
客户端配置:
# /etc/ipsec.conf - Libreswan IPsec configuration file
# This file: /etc/ipsec.conf
#
# Enable when using this configuration file with openswan instead of libreswan
#version 2
#
# Manual: ipsec.conf.5# basic configuration
config setup
uniqueids=neverconn %default
ikelifetime=60m
keylife=20m
rekeymargin=3m
keyingtries=1
mobike=no
keyexchange=ikev2# Add connections here
conn host-host
left=192.168.0.219
leftid="C=CN, O=unit, CN=client"
leftcert=client.cert.pem
leftfirewall=yes
right=192.168.0.205
rightid="C=CN, O=unit, CN=192.168.0.205"
type=transport
auto=add
2. 编辑/etc/strongswan.conf文件:
charon {
load_modular = yes
# load = random nonce aes sha1 sha2 pem pkcs1 curve25519 gmp x509 curl revocation hmac stroke kernel-netlink socket-default updown
plugins {
include strongswan.d/charon/*.conf
}
filelog {
/var/log/strongswan {
time_format = %b %e %T
default = 2
append = no
flush_line = yes
}
}
}include strongswan.d/*.conf
3. 编辑/etc/ipsec.secrets文件:
include /etc/ipsec.d/*.secrets
: RSA moonKey.pem
4. 服务器和客户端都启动ipsec
ipsec restart
在服务端启动连接: ipsec up host-host
使用ipsec statusall查看连接状态