我尝试了各种方法来安装证书,但似乎 Linux 无法看到它,或者是出现了其他问题。
我必须.pfx
能够通过 vpn 连接到另一台服务器(需要使用 Cisco AnyConnect)。我尝试将其转换为.pem
,然后将该文件添加到/usr/share/ca-certs
(在其中创建新目录或直接放入),然后运行“update-ca-certificates”。我总是得到这样的回应:
Updating certificates in /etc/ssl/certs... 0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d....
然后尝试使用 Cisco AnyConnect 连接,会出现此错误:
'Certificate validation error
我设法导入证书的唯一方法是通过 Firefox。我将其导入了Your Certificates
。
然后再次尝试使用 Cisco AnyConnect 连接,它会给我这个错误:
The AnyConnect package on the secure gateway could not be located. You may be experiencing network connectivity issues. Please try connecting again.
然后我在 Firefox 中打开导入的证书并看到以下消息:
could not verify this certificate because the issuer is not trusted
。
因此,我进入“颁发机构”,找到颁发此证书的机构,并勾选所有选项,将其编辑为受信任。现在,它显示已通过 SSL 客户端证书、电子邮件签名者证书、SSL 证书颁发机构和状态响应者证书的验证。
但是,尝试使用 cisco anyconnect 进行连接时,仍然出现未找到安全网关的错误。
我不知道还能做什么来解决这个问题。
我还在这里写了另一个相关问题。那个问题更多是关于正确配置 vpn,而这个问题更多是关于正确安装证书。
附言我正在使用 Ubuntu 14.04
答案1
这个明显具有误导性的错误The AnyConnect package on the secure gateway could not be located...
意味着 AnyConnect 确实使用了您希望它使用的证书。
如果您的目标是让 VPN 连接按预期工作,那么正确安装 AnyConnect 使用的证书就不会有问题。
如何在这种情况下,让 VPN 连接真正发挥作用位于您最初问题的答案之下。
对你的问题的回答:
AnyConnect 检查各个位置中的证书文件,包括 Web 浏览器使用的证书文件。
使问题复杂化的是,需要检查不同类型的证书文件,并且所有文件都应进入专用于其类型的目录,以便 AnyConnect 能够看到它们。
要将证书手动安装在 AnyConnect 期望找到的位置
对于你的情况,请这样做:
openssl pkcs12 -in source.pfx -out exported.pem -nokeys
openssl pkcs12 -in source.pfx -out exported.key -nocerts
.pem
对和文件使用相同的名称开头.key
。
它将要求您提供.pfx
文件密码来获取.pem
和.key
文件。
它会要求您为文件设置密码.key
。应该会有一个密码重复提示,并且没有错误。AnyConnect 会在按下连接按钮后但在显示用于连接身份验证的登录/密码字段之前要求输入此密码。
在您的用户主目录中或/opt
创建以下目录:
.cisco/certificates/client
.cisco/certificates/client/private
您必须手动创建这些。AnyConnect 的安装程序仅创建目录/opt/.cisco/certificates/ca
。
将.pem
文件放在手动创建的第一个目录中,将.key
文件放在第二个目录中。
现在,只要所有目录和文件都具有正确的访问权限,AnyConnect 就应该能够按预期使用它们。
Cisco 文档中提到了这些目录(为 Mac 和 Linux 创建 PEM 证书存储)。
看到同样的错误不要感到惊讶The AnyConnect package on the secure gateway could not be located...
。请阅读下文。
如何使 VPN 连接按您希望的方式工作:
就我的情况而言,目前仅使用具有相同密钥文件的 OpenConnect 即可:
如上所述创建.pem
和文件,.key
做步骤第四和第五从本网站
哪个是:
apt-get install network-manager-openconnect-gnome
打开网络连接,转到 VPN 选项卡,点击新建
选择Cisco AnyConnect 兼容 VPN (openconnect)
网关:[vpn.你的公司.com]
用户证书:[选择您导出的.pem]
私钥:[选择您导出的.key]
现在尝试连接
(通过屏幕上时钟旁边可见的网络连接小程序就可以正常工作)
它对我有用在 xubuntu 14.04 上
为什么 AnyConnnect 不起作用但 OpenConnect 可以起作用?
从/var/log/syslog
我发现AnyConnect尝试从另一端的服务器下载某些内容但404 error
多次失败:
(...)acvpnui
(...)Description: CTRANSPORT_ERROR_HTTP_RETURNED_ERROR:The HTTP server returned an error code (>= 400) HTTP status code received 404
此错误消息意味着 AnyConnect 尝试从另一端的服务器获取某些信息,成功验证后,并断开连接,因为该文件(显然是其工作所必需的)不可用。
看起来 OpenConnect 不需要这个文件。