如何认证本地服务器? SSL / TLS HTTPS

时间:2018-10-18 09:44:08

标签: ssl https web-deployment

前传:我创建了一个Web应用程序,该应用程序应与我们公司的网站进行交互。我与负责网站的其他开发人员(不同公司的分支机构)远程工作。我对Web开发完全陌生,没有“上线”经验。

我的应用程序使用tomcat 8.5在本地公司服务器上运行。公司网站中包含一个html页面,可从我的服务器加载不同的JavaScript文件(&css)。与我的应用程序的交互在那里发生。我曾经通过HTTP来执行此操作,并且一切正常。例如:

<script src="http://172.17.123.123/MyProject/js/script.js"></script>

问题:现在,开发人员告诉我,我应该获得证书并使用HTTPS来使服务器与公司Web服务器之间的通信更加安全。他就是这样做的,因为他管理的网站可以在Internet上访问,并且他可以轻松地从受信任的CA生成证书。他不知道如何在本地服务器上执行此操作。

我设法启用HTTPS并使用自签名证书。现在我用

<script src="https://172.17.123.123:8443/MyProject/js/script.js"></script>

但我收到此错误:

  

无法加载资源:net :: ERR_CERT_AUTHORITY_INVALID

我想从CA使用我的服务器的证书,但了解到不可能为本地主机获得证书。但是我没有找到有关本地服务器的信息。我想同样的原则也适用。

问题:使用HTTPS在Web服务器与本地公司服务器之间进行通信是否有益?如果是这样,我如何生成受信任的证书?自签名证书就足够了吗?

1 个答案:

答案 0 :(得分:2)

您谈论的是服务器与Web服务器之间的通信,但没有任何通信; Web服务器正在为浏览器提供一个页面,其中包含对服务器资源的引用,因此 browser 与服务器进行通信,并且浏览器不信任您的自签名证书。

如果浏览器和服务器之间的网络实际上是不安全的(例如,包括DMZ或其他不受信任的区域或不安全的链接),或者必须必须在浏览器和服务器之间的通信上使用

HTTPS 有益被视为不安全(例如,在PCI DSS下处理支付卡数据)。从您所提供的信息中评估这一点是不可能的,并且您的公司几乎肯定不应该允许您发布将使之成为可能的信息-而且它对其他任何人都没有用,这不利于StackExchange哲学。您应该就公司是否需要HTTPS以及可能的选项以及它们可能支持或协助的问题与公司网络上负责安全的人员进行协商。

是的,您确实无法获得localhost的公共信任证书,但这没关系,因为您没有使用localhost。您使用的是专用(rfc1918)的“内部网”地址,这是完全不同的地址,但是您也无法获得任何一个公众信任的证书。

明显的技术选择是:

  • 使用一个自签名证书(作为地址)并配置将使用此应用程序的所有浏览器信任该证书。这可能取决于用户的状态以及用户数量。如果它们都在加入域的Windows上并且使用IE / Edge或Chrome,但不使用Firefox,则中央管理员可能只是创建一个“推送”证书的GPO,就可以完成了。如果遍布全球的十几个平台上有成千上万个平台,那么您可能需要花费数月的时间来培训和协助所有平台导入证书,其中可能包括让人们翻译成外语。

    如果您尚不知道,如果您的任何用户使用Chrome,则证书必须具有“使用者备用名称(SAN)”中的授权名称(此处为地址)以及“ 主题CommonName。其他浏览器当前不需要此功能,但将来可能会使用,因为CABforum已有很长时间了。通常用于创建自签名证书的许多工具(例如OpenSSL命令行和Java keytool)不会自动执行此操作。 (公共CA会这样做。)已经有很多Q,您可以搜索它们(如果适用)。

    对于这种方法,除非您已经知道,否则应该验证分配的地址将保持稳定。某些公司网络需要不时地重新安排地址分配,例如开设或扩充或关闭办公室,搬迁大型项目等原因。如果每年有成千上万的人不得不重复几次不熟悉和神秘的证书导入,您将变得非常不受欢迎。

  • 在公司域下为您的系统获取一个(子)域名,该域名仅将公司内部网络上的解析为您机器的地址-不需要解析,而且不应该公开然后获得该子域名的公共信任证书。即使没有任何使用该域名的系统都可以通过公用Internet访问,使用DNS-01的LetsEncrypt仍可以向您颁发该域名的证书,只要您控制该域名的DNS。 OTOH如果您的公司已经拥有网站和证书,则应该已经建立了获取它们的过程;我上面提到的网络安全人员应该知道这一点。