使用strongswan建立点对点的证书连接

本次服务端是龙芯的linux环境,客户端windows 7。

一、环境搭建

使用strongswan建立点对点的证书连接_第1张图片

二、证书生成

需要根证书、服务器私钥、服务器证书、客户端私钥、客户端证书

在用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=never

conn %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=never

conn %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查看连接状态

你可能感兴趣的:(IPSec)