我正在尝试测试以下设置:
RADIUS服务器使用EAP-TLS协议。客户端和服务器具有以下证书:
客户端
公钥:clientcert_intermediatecert_chain.pem
CA-证书:rootcert.pem
服务器
公钥:servercert_intermediatecert_chain.pem
CA-证书:rootcert.pem
客户端证书(clientcert.pem
)和服务器证书(servercert.pem
)都由同一个中间证书(intermediatecert.pem
)签名,中间证书由根证书(rootcert.pem
)签名。
这两个被设置为公钥的链像这样组合在一起(通过Shell命令):
cat servercert.pem intermediatecert.pem > servercert_intermediatecert_chain.pem
cat clientcert.pem intermediatecert.pem > clientcert_intermediatecert_chain.pem
现在,客户端尝试连接到服务器。双方都发送公钥,并尝试使用rootcert.pem
验证接收到的公钥。
我知道“正常”的方式是,公钥只是服务器或客户端证书。CA证书将是imcert链,但我必须知道这是否也有效。
现在我的问题是:
根据我的经验,FreeRADIUS不验证这样的证书链权利。如果我没有弄错,FreeRADIUS使用OpenSSL库并在上面所示的情况下执行与以下命令相同的操作:
openssl verify -CAfile rootcert.pem clientcert_intermediatecert_chain.pem
我很确定这不管用。OpenSSL无法用根证书验证这样的链。当试图把信任链放在一起时,它失败了。
这是正确的吗?
顺便说一下,FreeRADIUS返回与error 20 at 0 depth: cannot find issuer certificate
命令相同的错误,这意味着它不能将信任链放在一起。
发布于 2017-07-07 13:02:53
发布于 2017-08-02 09:50:58
似乎我的设置的问题是,客户端没有发送完整的客户端中间链,而是只发送客户端证书(使用Wireshark计算出)。反过来,radius服务器发送服务器-中间链,工作良好。
因此,要回答我的问题:是的,这个设置应该在两个方向都能工作。
https://serverfault.com/questions/859890
复制相似问题