我正在开发一个Web应用程序,它运行在与客户端相同的networking本地服务器上 – 基本上,而不是一个中央Web服务器,每个客户站点将有自己的服务器托pipe在networking上。 服务器是CentOS,客户端将是任何网页浏览器。
我想encryptionnetworking浏览器和networking上的服务器之间的通信,这样networking上的其他人很难看到客户机和服务器之间的通信。 但是,由于客户端不会通过公共URL访问服务器,我的理解是我不能使用签名的SSL证书,使我打开SSL证书注入攻击。
我也无法控制这些系统正在安装的networking,所以我不能可靠地进行MAC过滤或IP范围过滤(尽pipe这些在很大程度上是无效的,所以这不是什么大的损失)。
我的问题是:1.我是否正确理解这一点,或者我能否使用SSL? 如果是这样,怎么样? 2.除了SSL证书外,我还有什么select? 我宁愿不求助于自己的encryption,因为这将不得不用JavaScript来实现,这会让我对攻击者开放,只是将encryption代码重写为传递给浏览器。
感谢您的帮助/评论!
但是,由于客户端不会通过公共URL访问服务器,我的理解是我不能使用签名的SSL证书,使我打开SSL证书注入攻击。
这是无稽之谈。 没有要求由可信CA签名的证书只能用于可公开访问的URL。
其他选项? IPSec,OpenVPN等等。但是说实话,用一个可信任的证书build立SSL可能是你最快和最简单的select。 让您的客户能够将自己的密钥/证书上传到服务器,然后他们可以决定是要使用专用CA还是公用的。
如果您对客户端设备的configuration有一定的控制权,则可以使用OpenSSL命令,Red Hat / Fedora Dogtag PKI或Active Directory域服务器的CAangular色作为authentication权限。
在您的控制之下创build一个CA,要求客户将您的CA的证书安装到客户端的可信CA存储中(适用于Windows客户端的http://technet.microsoft.com/en-us/library/cc772491.aspx) ,或者使用像Puppet或CFEngine将根证书安装到/etc/ssl/certs/ca-certificates.crt和NSS db for Linux)。
将解决scheme发送给客户时,向他们提供证书,以便在解决scheme中的Web服务器中安装(通常不难),并在证书的SubjectAlternateName中使用服务器的完全限定主机名。
如果你需要更多的细节,让我知道。
除了使用SSL访问网站,您还可以使用802.1x在您的局域网上提供encryption通信。 这样做比一篇文章可以解释得更复杂一些,但是通常包括在局域网上设置一个主机authentication方法。
这种特殊技术的典型用途是强制只有IT认可的主机才能连接到networking,但是它具有额外(强大)的优势,即networking上的所有内容都被encryption。
这是一个资源,提供了一个可服务的解释: http : //services.geant.net/cbp/Knowledge_Base/Security/Documents/gn3-na3-ufs_133.pdf
请注意,这通常是一个重大的项目。 如果您只想encryption与特定内部Web应用程序的身份validation并提供身份validation,则只需使用TLS(使用从公共根目录签名的证书),如果您需要,并且您正在使用内部控制的公开委派的域,或者如果不是你自己的本地PKI)。