文件描述

文件ipsec.secrets包含一个机密表。这些机密被StrongSwan的网络密钥交换(IKE)守护程序pluto(IKEv1)和charon(IKEv2)使用,来验证其他主机。

保护这些机密至关重要。 该文件应由超级用户拥有,其权限应设置为阻止其他人访问。

文件内容

该文件是一系列条目并包含指令。如下示例:

# /etc/ipsec.secrets - strongSwan IPsec secrets file
192.168.0.1 %any : PSK "v+NkxY9LLZvwj4qCC2o/gGrWDF2d21jL": RSA moonKey.pemalice@strongswan.org : EAP "x3.dEhgN"carol : XAUTH "4iChxLT3"dave  : XAUTH "ryftzG4A"# get secrets from other files
include ipsec.*.secrets

如上示例包含了可能在一个ipsec.secrets文件中出现的三种类型的内容:

  • 机密条目;
  • 注释;
  • 包含(include)指令。

包含指令

指令include导致在继续当前文件之前处理指定文件的内容。 文件名受sh(1)中的“globbing”影响,因此每个具有匹配名称的文件都会被处理。 包含可以嵌套到适度的深度(当前为10)。 如果文件名不以“/”开头,则包含当前文件的目录将添加到名称前面。 include指令是以include开头的一行,后跟空白,后跟文件名(不能包含空格)。

注释

行末尾的空格将被忽略。在行的开头或空白之后,如果是“#”,则其后直到行尾的文本被视为注释。

机密条目

文件中的每个条目都是由可选的”ID选择器“,后跟一个“机密”的形式组成。这两个部分由冒号(:)分隔,冒号被空格包围。如果未指定“ID选择器”,则该行必须以冒号开头。

”ID选择器“可以是

  • IP地址
  • 完全限定域名
  • 用户@FQDN
  • %any
  • %any6
  • 以后可能会有其他类型

匹配”ID选择器“非常简单:它们必须相同。在“Road Warrior(经常出差的人)”连接的情况下,如果没有找到对等ID的相等匹配,并且它是IP地址的形式,则选择器%any将匹配对等方的IP地址(如果IPv4的情况);在IPv6情况中,%any6将匹配对等方的IP地址。目前,可以使用过时的符号0.0.0.0代替%any。

在IKEv1中,在通过预共享密钥进行认证的情况下出现了额外的复杂性:响应者将需要在对等的ID有效载荷被解码之前查找“机密”,因此使用的“ID选择器”将是IP地址。

为了验证两台主机之间的连接,将使用最匹配主机和对等ID的条目。没有选择器的条目将匹配任何主机和对等体。更具体地说,如果“ID选择器”与主机的ID匹配(不考虑对等体),则具有一个选择器的条目将匹配主机和对等体。更具体地说,如果主机ID和对等ID分别与选择器之一匹配,则具有多个选择器的条目将匹配主机和对等体。如果密钥用于非对称认证技术(即诸如RSA的公共密钥系统),则具有多个选择器的条目将匹配主机和对等体,即使仅主机ID与选择器匹配(假设选择器是主机所有标识符)。只要他们就机密或私钥达成一致,两个条目就是最佳匹配是可以接受的。

通过预共享机密进行认证要求两个系统都找到相同的机密(机密实际上不是由IKE协议传输的)。如果主机和对等体都出现在选择器列表中,则相同的条目将适用于两个系统,因此可以使用系统之间的逐字复制。这自然延伸到共享相同机密的较大群体。因此,对于PSK认证,多选择器条目是最适合的。

通过RSA等公钥系统进行身份验证,需要每个主机都有自己的私钥。主机可以合理地为不同的接口和不同的对等体使用不同的私钥。但是在系统之间共享条目是不正常的。因此,无选择器和单选择器形式的入口通常对公钥认证有意义。

条目的“机密”部分必须以表示密钥类型的标记开头。 目前支持以下类型的机密:

 PSK    defines a pre-shared keyRSA    defines an RSA private keyECDSA  defines an ECDSA private keyP12    defines a PKCS#12 containerEAP    defines EAP credentialsNTLM   defines NTLM credentialsXAUTH  defines XAUTH credentialsPIN    defines a smartcard PIN

下面给出了每种机密的详细信息。

TYPES OF SECRETS

[ <selectors> ] : PSK <secret>
预共享密钥最方便地表示为字符序列,由双引号字符(”)分隔。序列不能包含换行符或双引号字符。
或者,预共享机密可以表示为十六进制或Base64编码的二进制值。 以0x开头的字符序列被解释为十六进制数字序列。 类似地,以0开头的字符序列被解释为Base64编码的二进制数据

: RSA <private key file> [ <passphrase> | %prompt ]
: ECDSA <private key file> [ <passphrase> | %prompt ]
对于私钥文件,接受相对于/etc/ipsec.d/private的绝对路径或路径。 如果私钥文件已加密,则必须定义密码。 可以使用密码短语%prompt,而不是密码短语,然后在需要解密密钥时使守护进程向用户询问密码。

: P12 <PKCS#12 file> [ <passphrase> | %prompt ]
对于PKCS#12文件,接受相对于/etc/ipsec.d/private的绝对路径或路径。 如果容器已加密,则必须定义passphrase。 可以使用密码短语%prompt,而不是密码短语,然后在需要解密容器时使守护进程向用户询问密码。 从容器中提取私钥,客户端和CA证书。 在连接集中使用此类客户端证书,该证书的主题之一是leftid。

<user id> : EAP <secret>
机密的格式与PSK机密的格式相同。
EAP机密仅限IKEv2。

<user id> : NTLM <secret>
机密的格式与PSK机密的格式相同,但机密存储为NTLM哈希,即MD4(UTF-16LE(机密)),而不是明文。
NTLM机密只能与eap-mschapv2插件一起使用。

[ <servername> ] <username> : XAUTH <password>
密码的格式与PSK机密的格式相同。 XAUTH机密只是IKEv1。

: PIN %smartcard[<slot nr>[@<module>]]:<keyid> <pin code> | %prompt
智能卡选择器始终需要keyid来唯一地选择正确的密钥。 插槽号定义令牌上的插槽,模块名称指的是在strongswan.conf(5)中定义的模块名称。 可以指定%prompt,而不是静态指定pin代码,这会导致守护进程向用户询问pin代码。

注意事项

如果ID为0.0.0.0,则匹配%any;如果它是0::0,它将匹配%any6。

参考手册

ipsec.conf(5), strongswan.conf(5), ipsec(8)

strongSwan:ipsec.secrets - 用于IKE/IPsec身份验证的机密相关推荐

  1. 【网络安全】身份验证凭证为何如此重要?

    隐私管理在保持必要信息的安全和远离攻击者方面起着重要的作用,本文我们就将讨论什么是隐私以及如何安全地存储它们. 隐私管理之所以重要,是因为密码泄露可能导致严重的数据泄露,随着越来越多的工作数据被保存在 ...

  2. c# WebApi之身份验证:Basic基础认证

    为什么需要身份认证 身份认证是为了提高接口访问的安全性,如果没有身份验证,那么任何匿名用户只要知道服务器的url,就可以随意访问服务器,从而访问或者操作数据库,这会是很恐怖的事. 什么是Basic基础 ...

  3. ASP.NET身份验证机制membership入门——配置篇(1){转}

    几乎所有的系统中都会使用到访问控制和角色管理这样的功能,例如:新建.修改.删除用户和角色,为用户分配角色,管理角色中的用户等等.于是MS在ASP.NET 2.0开始,实现了这些功能,使得我们在开发中, ...

  4. ASP.Net 2.0窗体身份验证机制详解(FormsAuthentication) (转载)

    ASP.Net 2.0窗体身份验证机制详解(FormsAuthentication) 收藏 转自:http://www.aspxclub.com/l12/c_3689.html 本篇文章介绍了在ASP ...

  5. 使用基本身份验证来保护Spring Boot REST API

    这是我的Spring Boot Blog帖子系列的第三篇文章. 在第一篇文章中,我谈到了我使用Spring Boot创建RESTFul Services的经验. 然后我将样本扩展到 与Swagger文 ...

  6. 如何在Python Django中处理用户身份验证

    by Mohammed Subhan Khan 由Mohammed Subhan Khan 如何在Python Django中处理用户身份验证 (How to handle user authenti ...

  7. ASP.NET Core与Dapper和VS 2017使用JWT身份验证WEB API并在Angular2客户端应用程序中使用它

    目录 介绍 背景 步骤1 创建ASP.NET Core Web API项目 Fitness.JWT.API项目说明 使用代码 startup.cs JwtIssuerOptions.cs JwtCon ...

  8. 两因素身份验证增强您的Spring Security

    通过要求用户提供第二种身份验证,双重身份验证为您的Web应用程序增加了一层额外的安全保护. 常见的第二个因素包括: 验证码生物识别电子邮件或短信代码 让我们探讨如何利用Nexmo向现有的Web应用程序 ...

  9. RFC8705-OAuth 2.0双向TLS客户端身份验证和证书绑定访问令牌

    RFC8705-OAuth 2.0 Mutual-TLS Client Authentication and Certificate-Bound Access Tokens 目录 摘要 1. 简介(I ...

最新文章

  1. HDU2819Swap(二分图最大匹配)
  2. TypeError: decoding Unicode is not supported
  3. 3dmax2014:打开3dmax2014软件时,出现许可证检出失败 错误20
  4. 表格布局(TableLayout)及重要属性
  5. 重磅发布 | 全球首个云原生应用标准定义与架构模型 OAM 正式开源
  6. C#中在定义事件委托时怎样跨窗体传递参数
  7. lstm 变长序列_keras在构建LSTM模型时对变长序列的处理操作
  8. 重庆考区非计算机专业二级等级考试vf上机题怎么建立程序文件?,计算机等级考试一级上机试题...
  9. oracle的in集合,oracle中in与not in集合中有空值问题
  10. PHP+MySQL 网站 SQL 注入攻击测试用例
  11. 【Opencv】 于仕琪 人脸68个特征点分布情况
  12. 电脑桌面隐藏文件如何恢复出来呢
  13. 烟雨在线要饭系统v2.0源码
  14. 网络历史之金融投资三剑客03
  15. 异数OS-织梦师-PBFT(六) 走出区块链,加速破解PBFT
  16. 计算机网易云不能一键升级音质,网易云电脑版怎么调音效(一览网易云音效最佳调节技巧)...
  17. 机电学生写给十年后自己的一封信
  18. extjs控件只读、,extjs多行只读文本框
  19. 除去工作赚到第一桶金10W+,我都做了哪些事儿?
  20. Android 源代码分享

热门文章

  1. [转]Facebook的c++开源库folly介绍
  2. 定制开发迅捷进销存圆满完成!
  3. CSS学习笔记 08、过渡与动画
  4. 2022年二建《建筑工程法规及相关知识》模拟考试试题及答案
  5. visualvm安装并且讲解说明
  6. chrome 27 中文离线安装包下载
  7. 【Qt】对话框QDialog类,模态对话框和非模态对话框
  8. 同步手绘板——重点难点及实现想法
  9. html中页面倒计时跳转
  10. oracle常见数据端口,各种数据库默认端口汇集