我可以使用 strongswan 公钥身份验证禁用特定用户的访问权限吗?
所以我有公钥认证工作。SAN 是电子邮件,是 id。有没有办法拒绝对特定用户 ID (rightid) 的身份验证?我希望能够轻松地关闭和打开用户访问权限,我意识到我可以通过删除机密文件中的条目来使用 psk auth。我希望有一种方法可以处理证书。我会以“保留”为由撤销证书,但 strongswan 的 pki 不支持不可撤销的能力。我还尝试设置一个陷阱来拒绝身份验证,但没有成功。必须能够指定允许哪些 clientids 连接
conn main
leftauth=pubkey
leftcert=servercert.pem
rightauth=pubkey
leftid=mydomain.com
type=tunnel
left=%any
leftsubnet=0.0.0.0/0
right=%any
rightsubnet=192.168.137.0/24
esp=aes128gcm16-sha256-modp3072
ike=aes128gcm16-sha256-modp3072
keyexchange=ikev2
ikelifetime=28800s #Time before re authentication of keys
auto=add
conn close
also=main
[email protected]
rightauth=never
auto=route
虽然目前没有插件可以将单个身份(或证书/密钥)列入黑名单,但白名单插件提供了一种将所有允许的身份列入白名单的方法。它带有一个命令,用于在 IKE 守护程序运行时管理白名单。
通过ext-auth插件可以以更动态的方式做类似的事情(例如拒绝所有匹配特定模式的身份)。配置的脚本(或命令)在客户端身份验证成功后调用,并在
IKE_REMOTE_ID
环境变量中接收客户端身份。如果命令以除 之外的任何内容退出0
,客户端将被拒绝。从技术上讲,阻止客户端证书的正确方法是通过 CRL 或 OCSP。请注意,如果您使用增量 CRL,则“保留”原因 (
--reason certificate-hold
withpki --signcrl
) 主要相关,因为此类撤销可以通过“removeFromCRL”原因(strongSwan 目前根本不支持)在增量 CRL 中恢复。但正如您所指出的,该pki
命令目前也不支持在使用该--lastcrl
选项基于旧 CRL 创建新的完整 CRL 时省略(即恢复)某些撤销。虽然您可以从头开始创建一个新的 CRL,其中包括当前已撤销的所有证书,但问题是目前无法手动指定已颁发的
cRLNumber
CRL 的序列号 ( )。除非使用 (or),否则它将始终为 1。并且使用相同(或更低)的序列号,CRL 在重新加载时不会被替换(除非您在加载之前完全清除所有凭据和缓存,这是唯一可能--lastcrl
的--basecrl
采取了swanctl
一种严厉的措施——就像重新启动 IKE 守护进程只是为了重新加载 CRL 一样)。使用 OCSP 可能是一种选择,因为例如,
openssl ocsp
您可以提供一个简单的索引文件,您可以手动创建和修改该文件(例如,请参阅我的回答以获取格式说明)。除了必须运行该附加服务之外,一个可能的缺点是 OpenSSL 要求索引也包含所有当前有效的证书。