问题 使用jQuery的ajax()函数和SSL客户端证书


我想使用。来对REST服务进行XHR调用 ajax() jQuery的功能。基本上,这可以正常工作,但REST服务只能通过https访问,并要求客户端使用客户端证书进行身份验证。

如何使用jQuery发送客户端证书 ajax() 功能?


12252
2018-01-28 17:33


起源

你有没看过这个?:stackoverflow.com/questions/6418620/jquery-ajax-and-ssl  要么 stackoverflow.com/questions/2604399/...    也许有帮助。 - Deathwing
不,我没有看到它们,但第一个链接根本不处理证书,不幸的是第二个链接只是关于服务器端证书 - 但我需要的是客户端证书。 - Golo Roden
基于这个问题不可能: stackoverflow.com/questions/9654306/... - mccannf
@Simon谢谢你:-)!如果您将评论转换为答案,我将投票并接受它。 - Golo Roden


答案:


如果请求源和目标位于同一域并使用https,则可以进行ssl ajax调用: 保护AJAX和SSL。但是你不能在你的ajax调用中进行ssl身份验证。


2
2018-01-31 14:20



“但是你不能在你的ajax调用中进行ssl身份验证。“。为什么不呢?你在谈论什么样的身份验证? - Bruno


客户端证书认证是(a)仅在服务器请求时执行,(b)由浏览器透明地完成,就HTTP和JavaScript层而言。

当服务器请求客户端证书(可能需要在HTTP请求之后重新协商)时,浏览器应提供弹出窗口以选择证书(依赖于浏​​览器而不是任何JavaScript或HTML控件)或选择一个自动取决于其设置。

因此,它不适合jQuery ajax() 能够对客户端证书做任何事情。

在我的脑海中,我不确定浏览器是否会触发客户端证书选择弹出窗口,如果它只是在AJAX调用期间首先发生(这可能是依赖于浏览器的)。但是,如果已经进行了客户端证书选择(或者选择是自动的),则浏览器将使用它进行身份验证,就像对任何其他正常请求一样。


9
2018-01-31 18:45



但是,如果已经进行了客户端证书选择(或者选择是自动的),则浏览器将使用它进行身份验证,就像对任何其他正常请求一样。 这就是我的意思 在ajax调用中不可能进行ssl身份验证 - Simon
@Simon,啊好吧,我说的并不代表认证是不可能的。它确实发生了,选择不受任何JavaScript函数的控制。 - Bruno
选择不受任何JavaScript函数的控制。 究竟。 - Simon