我们目前正在与一位客户合作,该客户需要 SAML 身份验证才能在我们的服务器上设置他们的 QA 站点。他们已向我们发送了用于安装 SSL 的 CRT 文件,但他们没有发送密钥。我知道 SSL 至少需要 .crt 和 .key 文件才能完成握手,但他们要求我在没有 .key 文件的情况下执行此操作。
我的问题是:这真的可能吗?这是 Apache 的一个模糊配置吗?因为它毫无意义,所以没人尝试过?我搜索了各种文档,但一无所获。
当然,当我尝试在没有密钥的情况下运行 apache 时,我会收到错误:
AH02238: Unable to configure RSA server private key
SSL Library Error: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch
这是意料之中的,但现在我希望找到解决方案。
谢谢你!
答案1
为了使 SSL 正常工作,.key
必须伴随.crt
(它们是成对工作的,就像.key
私钥一样)。
如果您/他们需要SSL
您的 Apache,您可以生成自签名(或虚拟)证书,您最终将拥有该证书.key
并且.crt
(或只是.pem
)您可以将其与您的 Apache 一起使用。
或者更好的方法是使用让我们加密:
Let's Encrypt 是一个新的证书颁发机构:它是免费的、自动化的和开放的。
答案2
这完全取决于该证书的预期用途。
出于许多目的,您需要完整的密钥对,但我也可以想象其他场景:
您的客户端可能已向您发送公钥(其内部 CA 的 fi),因此您可以使用它来验证其消息中的 SAML 签名、验证与他们的 TLS 安全连接或验证他们使用的客户端证书。在这种情况下,您不需要也不应该收到相关的私钥...
也许您的一位同事发送了 CSR,而签名的证书是您的客户做出的回应;那么您应该已经拥有私钥,而您的客户肯定没有……
您可能需要先使用以下命令检查证书:openssl x509 -in <filename>.crt -noout -text -purpose
答案3
不。这对于公私密钥认证系统来说根本就没有意义。
您可以获取每个使用 HTTPS 的网站的证书(看看这个)。想想看,如果你所要求的事情是可行的,那么在本地环境中你能做什么?只需一点点努力,你就能轻松地模仿 Google、Facebook 或任何网站。