Google chrome 在Chrome应用程序中使用证书进行SSL客户端身份验证
我正在编写一个Chrome应用程序,它需要一个带有客户端身份验证的SSL套接字。我以前在Java中使用相同的信任存储和密钥存储集完成过这项工作 以下是我在Chrome(Mac和Chromebook)上所做的工作:Google chrome 在Chrome应用程序中使用证书进行SSL客户端身份验证,google-chrome,authentication,ssl,google-chrome-extension,google-chrome-app,Google Chrome,Authentication,Ssl,Google Chrome Extension,Google Chrome App,我正在编写一个Chrome应用程序,它需要一个带有客户端身份验证的SSL套接字。我以前在Java中使用相同的信任存储和密钥存储集完成过这项工作 以下是我在Chrome(Mac和Chromebook)上所做的工作: 将客户端密钥(p12)和CA(一个根CA,一个中间CA)添加到系统中 在Chrome应用程序中,尝试传统的socketAPI和新的sockets.tcpAPI 始终接收错误错误\u SSL\u客户端\u身份验证\u证书\u所需。但是我想我已经在系统中有了正确的客户端证书和CA 旧套
- 将客户端密钥(p12)和CA(一个根CA,一个中间CA)添加到系统中
- 在Chrome应用程序中,尝试传统的
API和新的socket
APIsockets.tcp
- 始终接收错误
。但是我想我已经在系统中有了正确的客户端证书和CA错误\u SSL\u客户端\u身份验证\u证书\u所需
chrome.socket.create('tcp',{},function(createInfo){
mySocketId = createInfo.socketId;
chrome.socket.connect(mySocketId,'host', 12345, function(connectResult){
chrome.socket.secure(mySocketId,{},function(secureResult){
console.log('secureResult '+secureResult);
});
});
});
我的问题是:
Chrome API确实支持通过进行客户端身份验证,但有一个非常重要的警告-最初的SSL支持说明: 使用内置的TLS堆栈。抱歉,此处无法添加/管理证书,请使用现有配置 因此,正如您所建议的,您需要手动将证书添加到Chrome。在设置->显示高级设置->HTTPS/SSL->管理证书中有导入和导出功能。您可能还需要在之前打电话解决问题 但是,如果您需要比chromeapi提供的更细粒度的控制,您也可以在普通chrometcpsocketapi之上添加您自己的javascript TLS实现。幸运的是,该库已经有一个这样的实现。您可以看到一个使用
forge
和chrome.sockets.tcp
的示例。这种方法提供了更细粒度的控制,支持证书固定等其他方面不支持的功能,但请注意,forge还不支持TLS 1.2或ECDHE密码套件(尽管这些功能计划在上)