我创造了一个 CORS 网络应用程序(只有javascript),我在哪里
想要在不同的局域网下安装和运行。
我想把SSL,但我不知道具体配置是什么
局域网将是,并且可能每次都会有所不同。所以我
我想我不能添加经过认证的SSL。还有其他可能吗?
SSL的解决方案?我不喜欢添加未经认证的方法
SSL因为警告。
我怎样才能加密包并进行安全认证
请求?我使用CouchDB默认CORS,但包可以
如果在开放的WIFI中安装并使用了Web应用程序,则会嗅探。
该应用程序只使用JavaScript,我不知道如何
保护它(唯一的后端是couchDB中的存储)。
启用CORS的应用程序的设计与是否使用SSL无直接关系。看到 CORS规范的这一部分。
设计您的应用程序以支持CORS并通过SSL连接为您的应用程序提供服务是单独的决定,甚至可能不是由同一个人做出的。当你说“在不同的局域网下安装并运行”时,我认为你的意思是不同的人/公司将托管你的服务器端代码,可能在不同的域下。
您甚至不应该假设托管代码的Web服务器与执行SSL的Web服务器相同,如同 SSL终止 可能是一个不同的设备,然后将请求代理回Web服务器。
在本文档的案例中,我会在您的安装说明中对SSL进行潜在需求,并让人们以适合其环境的方式(或不是)这样做。
从我如何理解您的问题(仅限JavaScript),您可以使用单个HTTPS主机来提供JavaScript文件,就像 谷歌的托管图书馆。
如果CouchDB主机不在云中,则应为其分配单独(廉价)的SSL证书。如果安全对他们来说真的很重要,那么客户应该能够为传输层安全分配大约8美元/年。
所以,如果我理解你的问题:
- 您有一个可以使用跨源请求访问的Web应用程序。
- 该应用程序将部署在本地网络上,即它将通过非公共IP地址访问(服务于该网络的机器,我将其称为“本地服务器”)。
- 您希望保护客户端和本地服务器之间的链接,最好使用SSL。
你可以做到!让控制本地服务器的人获得SSL证书 somesubdomain.SomeDomainHeControls.com
,将该证书部署到本地服务器,并将该子域指向本地IP。当通过该地址访问应用程序时,您将不会收到任何警告,并且连接将得到保护。只要客户端仅使用该域访问您的应用程序,这是安全的,因为只有服务器的所有者才能访问该密钥。
如果您自己控制本地服务器(没有人可以提取私钥),您只需获取一个野外证书即可 *.aDomainForThisPurposeThatYouControl.com
,并为每个部署创建一个子域,指向适当的IP。
如果您不控制本地服务器,并且无法获得自己的证书,那么您可以获得 个人 他们的证书。这意味着你要创造 deployment1.aDomainForThisPurposeThatYouControl.com
,将其指向本地IP,为该名称创建常规单主机证书,并将其安装在本地服务器上。作为安全预防措施,请不要将该域用于其他任何目的,因为您已为此域上的主机发放了私钥。
如果本地网络可以访问Internet,您也可以在您控制的外部服务器上托管应用程序。将常规SSL部署到该服务器。在从外部服务器安全地加载应用程序本身之后,它可以发出纯HTTP请求以从本地服务器获取数据。这将触发“混合内容”警告,但不会出现SSL错误。然后,您可以使用基于JavaScript的加密来保护数据。例如,如果您只想保护从客户端到服务器的数据,那么您的外部可信服务器可以为客户端提供可信的JS加密库和内部服务器的RSA公钥(通过SSL验证的连接),然后,您只需在客户端加密数据,然后通过纯HTTP发送它。理论上,您甚至可以在JavaScript中创建SSL客户端,向客户端提供脚本和可信服务器证书,使用HTTP或WebSockets隧道,并通过此隧道在本地服务器和JavaScript客户端之间运行您自己的SSL连接。当然,这不是很实用,但是安全(因为JS是通过安全连接下载的)。您还可以从受信任的服务器加载一个小型JavaScript,然后从本地服务器下载其余的JavaScript,验证签名/哈希并执行它。 Megaupload正在做类似的事情。