我正在构建一个 Firefox 附加组件,它需要提取收到的 SSL 证书的详细信息,例如 CA 的名称, CA(证书颁发机构)所在的国家/地区。我想知道是否可以使用 JavaScript 提取上述详细信息,或者我是否需要使用 OpenSSL从而将两者联系起来?
有没有更好的解决方案?
最佳答案
Firefox 中的“页面信息”对话框已经显示了证书信息,因此最好查看 how it is implemented .总结:
<browser>
或<tabbrowser>
元素(gBrowser
在 Firefox 窗口中)有一个属性 securityUI .- 此属性的值实现nsISSLStatusProvider允许您访问 nsISSLStatus 的界面.
- 从那里您可以到达 nsIX509Cert其中包含所有必要的信息。
代码示例:
var status = gBrowser.securityUI
.QueryInterface(Components.interfaces.nsISSLStatusProvider)
.SSLStatus;
if (status && !status.isUntrusted)
{
// This shows: OU=Equifax Secure Certificate Authority,O=Equifax,C=US
alert(status.serverCert.issuerName);
// This shows: Equifax Secure Certificate Authority
alert(status.serverCert.issuerOrganizationUnit);
}
请注意,该界面不提供提取发行人国家/地区的方法,您必须解析 status.serverCert.issuerName
重视自己。此外,您只能通过这种方式获得有关直接颁发者的信息,而不是根 CA。要获得根 CA,您应该使用 status.serverCert.issuer
属性(property)并走上链。
关于javascript - 使用 JavaScript/OpenSSL 提取 SSL 证书的详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8024197/