SWAN之ikev2协议multi-level-ca配置测试

2023-12-19 09:58

本文主要是介绍SWAN之ikev2协议multi-level-ca配置测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本测试主要验证多级CA证书验证的功能,远程用户carol,dave与网关moon建立连接时,分别使用中间CA证书所签发的实体证书,分配给carol的证书仅可访问moon网关之后的alice主机;dave的证书仅可访问venus主机。两个中间CA证书的名称CN分别为"Research CA"和"Sales CA"。本次测试拓扑如下:

在这里插入图片描述

carol主机配置

carol的配置文件:ikev2/multi-level-ca/hosts/carol/etc/ipsec.conf,内容如下。字段rightca的值为"C=CH, O=Linux strongSwan, CN=strongSwan Root CA",即要求对端的CA证书名称CN为:“strongSwan Root CA”。此外,定义了两个子连接alice和venus,字段rightsubnet分别对应主机alice(10.1.0.10)和主机venus(10.10.20)。

conn %defaultleft=PH_IP_CAROLleftcert=carolCert.pemleftsendcert=ifaskedright=PH_IP_MOONrightid=@moon.strongswan.orgrightca="C=CH, O=Linux strongSwan, CN=strongSwan Root CA"conn alicerightsubnet=PH_IP_ALICE/32auto=addconn venusrightsubnet=PH_IP_VENUS/32auto=add

carol主机的证书文件carolCert.pem内容如下,其签发者Issuer的信息为:C = CH, O = strongSwan Project, OU = Research, CN = Research CA。

$ openssl x509 -in ikev2/multi-level-ca/hosts/carol/etc/ipsec.d/certs/carolCert.pem -noout -text
Certificate:Data:Version: 3 (0x2)Serial Number: 1 (0x1)Signature Algorithm: sha256WithRSAEncryptionIssuer: C = CH, O = strongSwan Project, OU = Research, CN = Research CAValidityNot Before: Sep 14 08:37:52 2019 GMTNot After : Sep 14 08:37:52 2027 GMTSubject: C = CH, O = strongSwan Project, OU = Research, CN = carol@strongswan.org

dave主机配置

dave的配置文件:ikev2/multi-level-ca/hosts/dave/etc/ipsec.conf,内容如下。字段rightca的值为"C=CH, O=Linux strongSwan, CN=strongSwan Root CA",即要求对端的CA证书名称CN为:“strongSwan Root CA”。此外,定义了两个子连接alice和venus,字段rightsubnet分别对应主机alice(10.1.0.10)和主机venus(10.10.20)。

conn %defaultleft=PH_IP_DAVEleftcert=daveCert.pemleftsendcert=ifaskedright=PH_IP_MOONrightid=@moon.strongswan.orgrightca="C=CH, O=Linux strongSwan, CN=strongSwan Root CA"conn alicerightsubnet=PH_IP_ALICE/32auto=addconn venusrightsubnet=PH_IP_VENUS/32auto=add

dave主机的证书文件daveCert.pem内容如下,其签发者Issuer的信息为:C = CH, O = strongSwan Project, OU = Sales, CN = Sales CA。

$ openssl x509 -in ikev2/multi-level-ca/hosts/dave/etc/ipsec.d/certs/daveCert.pem -noout -text
Certificate:Data:Version: 3 (0x2)Serial Number: 1 (0x1)Signature Algorithm: sha256WithRSAEncryptionIssuer: C = CH, O = strongSwan Project, OU = Sales, CN = Sales CAValidityNot Before: Sep 14 08:37:52 2019 GMTNot After : Sep 14 08:37:52 2027 GMTSubject: C = CH, O = strongSwan Project, OU = Sales, CN = dave@strongswan.org

网关配置

moon网关的配置文件:ikev2/multi-level-ca/hosts/moon/etc/ipsec.conf,内容如下。连接alice配置中,rightca字段为"C=CH, O=strongSwan Project, OU=Research, CN=Research CA",要求对端的CA名称CN为:“Research CA”。远程客户carol使用的证书满足此要求。

连接venus配置中,rightca字段为"C=CH, O=strongSwan Project, OU=Sales, CN=Sales CA",要求对端的CA名称CN为:“Sales CA”。远程客户dave使用的证书满足此要求。

conn %defaultleft=PH_IP_MOONleftcert=moonCert.pemleftsendcert=ifaskedleftid=@moon.strongswan.orgconn aliceleftsubnet=PH_IP_ALICE/32right=%anyrightca="C=CH, O=strongSwan Project, OU=Research, CN=Research CA"auto=addconn venusleftsubnet=PH_IP_VENUS/32right=%anyrightca="C=CH, O=strongSwan Project, OU=Sales, CN=Sales CA"auto=add

moon网关的CA证书researchCert.pem,由根CA:strongSwan Root CA所签发,签发给Research部门(OU),名称(CN)为:Research CA。

$ openssl x509 -in ikev2/multi-level-ca/hosts/moon/etc/ipsec.d/cacerts/researchCert.pem -noout -text
Certificate:Data:Version: 3 (0x2)Serial Number: 11 (0xb)Signature Algorithm: sha256WithRSAEncryptionIssuer: C = CH, O = strongSwan Project, CN = strongSwan Root CAValidityNot Before: Sep 14 08:37:52 2019 GMTNot After : Sep 14 08:37:52 2028 GMTSubject: C = CH, O = strongSwan Project, OU = Research, CN = Research CA

moon网关的CA证书salesCert.pem,由根CA:strongSwan Root CA所签发,签发给Sales部门(OU),名称(CN)为:Sales CA。

$ openssl x509 -in ikev2/multi-level-ca/hosts/moon/etc/ipsec.d/cacerts/salesCert.pem -noout -text
Certificate:Data:Version: 3 (0x2)Serial Number: 12 (0xc)Signature Algorithm: sha256WithRSAEncryptionIssuer: C = CH, O = strongSwan Project, CN = strongSwan Root CAValidityNot Before: Sep 14 08:37:52 2019 GMTNot After : Sep 14 08:37:52 2028 GMTSubject: C = CH, O = strongSwan Project, OU = Sales, CN = Sales CA

测试准备阶段

配置文件:ikev2/multi-level-ca/pretest.dat,内容为通常的ipsec连接的启动语句。本次测试中,在carol和dave主机上都会启动名称为alice和venus的两个连接。不过,在carol主机上首先启动alice连接,在dave主机上首先启动venus连接,这两个连接都可成功。相反,carol上的子连接venus和dave上的子连接alice,都会失败,放后执行。

moon::ipsec start
carol::ipsec start
dave::ipsec start
moon::expect-connection alice
moon::expect-connection venus
carol::expect-connection alice
carol::expect-connection venus
carol::ipsec up alice
carol::ipsec up venus
dave::expect-connection alice
dave::expect-connection venus
dave::ipsec up venus
dave::ipsec up alice

测试阶段

配置文件:ikev2/multi-level-ca/evaltest.dat内容如下。在moon网关的strongswan日志文件中,确认carol和dave证书的验证,以及中间CA证书的验证。

moon:: cat /var/log/daemon.log::fetching crl from.*http.*research.crl::YES
moon:: cat /var/log/daemon.log::crl correctly signed by.*Research CA::YES
moon:: cat /var/log/daemon.log::fetching crl from.*http.*sales.crl::YES
moon:: cat /var/log/daemon.log::crl correctly signed by.*Sales CA::YES
moon:: cat /var/log/daemon.log::fetching crl from.*http.*strongswan.crl::YES
moon:: cat /var/log/daemon.log::crl correctly signed by.*strongSwan Root CA::YES

以下为moon网关上strongswan进程验证证书的日志信息。在IKE_SA_INIT响应消息中,CERTREQ载荷中包含三个证书请求,CN分别为:“Research CA”、“Sales CA"和"strongSwan Root CA”,其中前两个为中间证书,第三个为根证书。

在随后carol的报文IKE_AUTH中,提供了一个end entity证书:“C=CH, O=strongSwan Project, OU=Research, CN=carol@strongswan.org”,据此在moon网关的配置中匹配到名称为alice的连接,以及对应的中间CA文件:moon/etc/ipsec.d/cacerts/researchCert.pem。接下来获取CRL文件:research.crl,验证carol证书的状态,先使用中间CA证书ResearchCert.pem验证crl文件的有效性,在根据CRL验证carol证书有效性。

之后,获取strongswan.crl证书,以验证中间CA证书:"C=CH, O=strongSwan Project, OU=Research, CN=Research CA"的有效性。整个证书链验证完成之后,认证成功。

moon charon: 13[IKE] sending cert request for "C=CH, O=strongSwan Project, OU=Research, CN=Research CA"
moon charon: 13[IKE] sending cert request for "C=CH, O=strongSwan Project, OU=Sales, CN=Sales CA"
moon charon: 13[IKE] sending cert request for "C=CH, O=strongSwan Project, CN=strongSwan Root CA"
moon charon: 13[ENC] generating IKE_SA_INIT response 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) CERTREQ N(FRAG_SUP) N(HASH_ALG) N(CHDLESS_SUP) N(MULT_AUTH) ]
moon charon: 14[NET] received packet: from 192.168.0.100[4500] to 192.168.0.1[4500] (1236 bytes)
moon charon: 15[ENC] parsed IKE_AUTH request 1 [ IDi CERT N(INIT_CONTACT) CERTREQ IDr AUTH SA TSi TSr N(MOBIKE_SUP) N(ADD_6_ADDR) N(MULT_AUTH) N(EAP_ONLY) N(MSG_ID_SYN_SUP) ]
moon charon: 15[IKE] received cert request for "C=CH, O=strongSwan Project, CN=strongSwan Root CA"
moon charon: 15[IKE] received end entity cert "C=CH, O=strongSwan Project, OU=Research, CN=carol@strongswan.org"
moon charon: 15[CFG] looking for peer configs matching 192.168.0.1[moon.strongswan.org]...192.168.0.100[C=CH, O=strongSwan Project, OU=Research, CN=carol@strongswan.org]
moon charon: 15[CFG] selected peer config 'alice'
moon charon: 15[CFG]   using certificate "C=CH, O=strongSwan Project, OU=Research, CN=carol@strongswan.org"
moon charon: 15[CFG]   using trusted intermediate ca certificate "C=CH, O=strongSwan Project, OU=Research, CN=Research CA"
moon charon: 15[CFG] checking certificate status of "C=CH, O=strongSwan Project, OU=Research, CN=carol@strongswan.org"
moon charon: 15[CFG]   fetching crl from 'http://crl.strongswan.org/research.crl' ...
moon charon: 15[CFG]   using trusted ca certificate "C=CH, O=strongSwan Project, CN=strongSwan Root CA"
moon charon: 15[CFG]   reached self-signed root ca with a path length of 0
moon charon: 15[CFG]   using trusted certificate "C=CH, O=strongSwan Project, OU=Research, CN=Research CA"
moon charon: 15[CFG]   crl correctly signed by "C=CH, O=strongSwan Project, OU=Research, CN=Research CA"
moon charon: 15[CFG]   crl is valid: until Nov 15 03:32:58 2019
moon charon: 15[CFG] certificate status is good
moon charon: 15[CFG]   using trusted ca certificate "C=CH, O=strongSwan Project, CN=strongSwan Root CA"
moon charon: 15[CFG] checking certificate status of "C=CH, O=strongSwan Project, OU=Research, CN=Research CA"
moon charon: 15[CFG]   fetching crl from 'http://crl.strongswan.org/strongswan.crl' ...
moon charon: 15[CFG]   using trusted certificate "C=CH, O=strongSwan Project, CN=strongSwan Root CA"
moon charon: 15[CFG]   crl correctly signed by "C=CH, O=strongSwan Project, CN=strongSwan Root CA"
moon charon: 15[CFG]   crl is valid: until Nov 15 03:32:58 2019
moon charon: 15[CFG] certificate status is good
moon charon: 15[CFG]   reached self-signed root ca with a path length of 1
moon charon: 15[IKE] authentication of 'C=CH, O=strongSwan Project, OU=Research, CN=carol@strongswan.org' with RSA_EMSA_PKCS1_SHA2_256 successful

以下测试语句,在carol和moon上确认名称为alice的连接的建立,并且在carol主机的strongswan进程日志中将检查到TS_UNACCEPTABLE的通知,这是由于在carol上建立子连接venus失败所导致的。

carol::ipsec status 2> /dev/null::alice.*INSTALLED, TUNNEL::YES
moon:: ipsec status 2> /dev/null::alice.*ESTABLISHED.*carol@strongswan.org::YES
carol::cat /var/log/daemon.log::received TS_UNACCEPTABLE notify, no CHILD_SA built::YES
carol::ipsec status 2> /dev/null::venus.*INSTALLED::NO

看一下carol主机上strongswan进程的日志,子连接venus未能创建成功,在报文CREATE_CHILD_SA request 2中,载荷TSr的值为:10.1.0.20(venus主机),但是在moon网关上定义到venus的连接需要具有"Sales CA"签发的证书,carol的证书为"Research CA"所签发。

carol charon: 05[CFG] received stroke: initiate 'venus'
carol charon: 09[IKE] establishing CHILD_SA venus{2}
carol charon: 09[ENC] generating CREATE_CHILD_SA request 2 [ SA No TSi TSr ]
carol charon: 09[NET] sending packet: from 192.168.0.100[4500] to 192.168.0.1[4500] (256 bytes)
carol charon: 12[NET] received packet: from 192.168.0.1[4500] to 192.168.0.100[4500] (80 bytes)
carol charon: 12[ENC] parsed CREATE_CHILD_SA response 2 [ N(TS_UNACCEPT) ]
carol charon: 12[IKE] received TS_UNACCEPTABLE notify, no CHILD_SA built
carol charon: 12[IKE] failed to establish CHILD_SA, keeping IKE_SA

moon网关上strongwan进程的日志中,显示了拒绝carol主机此TSr的信息。

moon charon: 16[ENC] parsed CREATE_CHILD_SA request 2 [ SA No TSi TSr ]
moon charon: 16[IKE] traffic selectors 10.1.0.20/32 === 192.168.0.100/32 unacceptable
moon charon: 16[IKE] failed to establish CHILD_SA, keeping IKE_SA
moon charon: 16[ENC] generating CREATE_CHILD_SA response 2 [ N(TS_UNACCEPT) ]

对于主机dave的认证过程与以上carol相似,以下为moon网关上strongswan进程日志中与dave相关的部分信息。由于在moon网关上,名称为alice连接排在前面,dave的连接首先匹配alice,在相关的证书验证完成之后,将会产生:constraint check failed错误,因为alice连接要求"Research CA"签发的证书,而dave的证书由"Sales CA"签发。此时将匹配moon网关上的配置venus。

moon charon: 07[IKE] authentication of 'C=CH, O=strongSwan Project, OU=Sales, CN=dave@strongswan.org' with RSA_EMSA_PKCS1_SHA2_256 successful
moon charon: 07[CFG] constraint check failed: peer not authenticated by CA 'C=CH, O=strongSwan Project, OU=Research, CN=Research CA'
moon charon: 07[CFG] selected peer config 'alice' unacceptable: non-matching authentication done
moon charon: 07[CFG] switching to peer config 'venus'
moon charon: 07[IKE] peer supports MOBIKE
moon charon: 07[IKE] authentication of 'moon.strongswan.org' (myself) with RSA_EMSA_PKCS1_SHA2_256 successful
moon charon: 07[IKE] IKE_SA venus[2] established between 192.168.0.1[moon.strongswan.org]...192.168.0.200[C=CH, O=strongSwan Project, OU=Sales, CN=dave@strongswan.org]

strongswan测试版本: 5.8.1

END

这篇关于SWAN之ikev2协议multi-level-ca配置测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/511774

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

wolfSSL参数设置或配置项解释

1. wolfCrypt Only 解释:wolfCrypt是一个开源的、轻量级的、可移植的加密库,支持多种加密算法和协议。选择“wolfCrypt Only”意味着系统或应用将仅使用wolfCrypt库进行加密操作,而不依赖其他加密库。 2. DTLS Support 解释:DTLS(Datagram Transport Layer Security)是一种基于UDP的安全协议,提供类似于

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测