我已经按照(我相信)在我的 ASA 防火墙上安装可信证书的所有正确步骤:
- 将公司根权限作为 CA 安装到 ASA
- 为 ASA 的主机名颁发证书
- 将证书作为身份证书安装到 ASA
- 将证书应用到外部接口
但是,我在尝试连接时继续在浏览器中收到此错误:
安全连接失败
连接 asa.xxx.internal 时出错。SSL 无法从对等方的证书中提取公钥。
错误代码:SSL_ERROR_EXTRACT_PUBLIC_KEY_FAILURE
我已验证show crypto certificates
证书已正确导入并显示为与导入的 CA 相关联。
我在这里做的唯一不是 100% 熟悉的事情是使用 EC 证书而不是 RSA,但这似乎不应该有任何影响。
的相关部分show run
:
hostname asa
domain-name xxx.internal
http server enable
crypto ca trustpoint ASDM_TrustPoint0
enrollment terminal
validation-usage ipsec-client ssl-client ssl-server
crl configure
crypto ca trustpoint ASDM_TrustPoint1
keypair ASDM_TrustPoint1
no validation-usage
crl configure
crypto ca trustpool policy
auto-import
crypto ca certificate chain ASDM_TrustPoint0
certificate ca 4e7bf88d72c08d4efa48d3ec658e5a3281b2c6aa
3082028e 30820233 a0030201 0202144e 7bf88d72 b08d4efa 48d3ec65 8e5a3281
...
quit
crypto ca certificate chain ASDM_TrustPoint1
certificate c47d26f97ee247a9
308203d8 3082037e a0030201 02020900 c47d26f9 7ee247a7 300a0608 2a8648ce
...
quit
certificate ca 4e7bf88d72c08d4efa48d3ec658e5a3281b2c6aa
3082028e 30820233 a0030201 0202144e 7bf88d72 b08d4efa 48d3ec65 8e5a3281
quit
ssl server-version tlsv1.2
ssl trust-point ASDM_TrustPoint1 outside
我最终想通了(度过一个星期六的有趣方式。)
我连接
openssl s_client
以查看发生了什么,并从输出中提取了一条错误消息:所以,我不确定如何解决这个问题。我正在根据信息安全 SE 上的这个答案生成密钥并颁发证书。默认值应该命名为曲线,而不是显式参数,但即使我设置了值,我仍然得到相同的结果。
我稍后会弄清楚,但与此同时,我最终要做的是在 ASA 上生成一个密钥,然后将其导出以生成证书。这有点hacky,但它有效:
此时,我在终端上有一个 base64 PKCS #12 包。我将 base64 数据(不包括 BEGIN 和 END 行)复制到我的服务器并执行此操作以获取密钥:
成功,我有钥匙!我使用它生成了证书,并使用之前的密钥对创建了一个新的信任点:
此时,我提供了证书文件(同样没有 BEGIN 和 END 行),然后单独一行“退出”。
最后,我能够启用证书
ssl trust-point my_tls_certificate outside
并成功连接。