我正在配置 Azure App Gateway 以进行相互身份验证 (mTLS)。这个问题更一般地是关于何时以及何时不使用公共 CA 或内部 CA 进行客户端证书/相互身份验证/mTLS。这里的用例是允许从特定客户端到特定服务器的私有 API 流量。
相互身份验证的配置要求我使用串联的中间证书和根证书配置服务器的 SSL 配置文件,以便在 TLS 握手期间验证客户端证书。我最初购买了 DigiCert 客户端证书,这意味着服务器端会收到 DigiCert 中间证书和根证书进行验证。这对于我的用例来说感觉不对。
使用此设置,是否将接受来自 DigCert CA 链的任何证书?(可能相当多的客户端证书!)我的目的是限制对特定客户端(+冗余/DR 客户端)的访问。如果我以这种方式配置时查看 openssl 握手的输出,我可以看到我的服务器正在指定它将接受的公共中间证书和根证书,从而提示人们可以在哪里购买可用的证书。
如果我是对的,那么减少服务器客户端身份验证将接受的客户端/证书数量的适当方法是什么?内部 CA 颁发证书,还是其他方式?
答案1
您可以使用多个选项配置 Azure 应用程序网关以进行相互身份验证。
- 应用程序网关可以配置为信任单个证书。
- 应用程序网关可以配置为信任直接颁发者并信任该 CA 颁发的所有叶证书。
使用哪种选项取决于您自己。但是,当您选择第二种身份验证选项,并且直接颁发者不是您控制的 CA 时,您就无法控制在应用程序网关上能够进行身份验证的内容。
消息来源:文档:
应用程序网关支持基于证书的相互身份验证,您可以将受信任的客户端 CA 证书上传到应用程序网关,网关将使用该证书对向网关发送请求的客户端进行身份验证。
和:
您可以选择验证客户端证书的直接颁发者,并且只能允许应用程序网关信任该发行者。此选项默认关闭,但您可以通过门户、PowerShell 或 Azure CLI 启用此选项。