sut*_*tch 24 javascript browser ssl certificate ssl-certificate
是否有一种JavaScript在浏览器中运行的方法,以确定哪个CA证书用于为浏览器的当前HTTPS连接验证远程主机,还获取该证书的属性,例如CA的名称?
如果没有,是否有任何其他选项以编程方式获取此信息,例如服务器端的ActiveX,Java,CGI,......?
dlo*_*ley 18
您可以使用opensource Forge项目来执行此操作.它在JavaScript中实现SSL/TLS.您可以对服务器进行ajax调用,并使用回调来检查证书.请记住,服务器是发送JavaScript的服务器,因此不应该用它来确定您是否信任JavaScript来自的服务器.Forge项目允许跨域请求,因此如果您使用它来进行信任,则可以从您已信任的服务器加载Forge JavaScript,然后联系您不信任的服务器.但是,除非该其他服务器提供跨域策略,否则您将无法执行跨域请求.
https://github.com/digitalbazaar/forge/blob/master/README.md
README中的博客链接提供了有关如何使用Forge及其工作原理的更多信息.
复制我自己的答案是否有任何方法可以从Chrome扩展程序访问证书信息
您需要创建一个WebExtension,也称为浏览器扩展.
请参阅访问MDN上的安全信息
您还可以查看以下文档:
你需要Firefox 62.
这是一个工作 background.js
var log = console.log.bind(console)
log(`\n\nTLS browser extension loaded`)
// https://developer.chrome.com/extensions/match_patterns
var ALL_SITES = { urls: ['<all_urls>'] }
// Mozilla doesn't use tlsInfo in extraInfoSpec
var extraInfoSpec = ['blocking'];
// https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/webRequest/onHeadersReceived
browser.webRequest.onHeadersReceived.addListener(async function(details){
log(`\n\nGot a request for ${details.url} with ID ${details.requestId}`)
// Yeah this is a String, even though the content is a Number
var requestId = details.requestId
var securityInfo = await browser.webRequest.getSecurityInfo(requestId, {
certificateChain: true,
rawDER: false
});
log(`securityInfo: ${JSON.stringify(securityInfo, null, 2)}`)
}, ALL_SITES, extraInfoSpec)
log('Added listener')
Run Code Online (Sandbox Code Playgroud)
manifest.json
:
{
"manifest_version": 2,
"name": "Test extension",
"version": "1.0",
"description": "Test extension.",
"icons": {
"48": "icons/border-48.png"
},
"background": {
"scripts": ["background.js"]
},
"permissions": [
"webRequest",
"webRequestBlocking",
"<all_urls>"
]
}
Run Code Online (Sandbox Code Playgroud)
一旦合并此代码,它也可以在Chromium中实现.
归档时间: |
|
查看次数: |
21093 次 |
最近记录: |