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

如何认证本地服务器?SSL/TLS HTTPS,ssl,https,web-deployment,Ssl,Https,Web Deployment,前传:我创建了一个web应用程序,可以与我们公司的网站进行交互。我的工作远离其他开发人员(不同的公司分支),他们负责管理网站。我对网络开发完全陌生,没有“上线”的经验 我的应用程序使用tomcat 8.5在本地公司服务器上运行。公司网站中包含一个html页面,可从我的服务器加载不同的JavaScript文件(&css)。与我的应用程序的交互发生在那里。我以前是通过HTTP来实现的,一切都很好。例如: <script src="http://172.17.123.123/MyProject/

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

我的应用程序使用tomcat 8.5在本地公司服务器上运行。公司网站中包含一个html页面,可从我的服务器加载不同的JavaScript文件(&css)。与我的应用程序的交互发生在那里。我以前是通过HTTP来实现的,一切都很好。例如:

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

问题:现在开发人员告诉我,我应该获得一个证书,并使用HTTPS使我的服务器和公司web服务器之间的通信更加安全。他就是这么做的,因为他管理的网站可以在互联网上访问,他可以很容易地从可信的CA生成证书。他不知道如何在本地服务器上这样做

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

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

但我得到了这个错误:

未能加载资源:net::错误证书颁发机构无效

我想为我的服务器使用来自CA的证书,但了解到无法为localhost获取证书。但是我找不到关于本地服务器的任何信息。我想同样的原则也适用


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

您谈到了服务器和web服务器之间的通信,但没有任何通信;web服务器正在为浏览器提供一个页面,该页面包含对服务器上资源的引用,因此浏览器正在与服务器通信,而浏览器不信任您的自签名证书

如果浏览器和服务器之间的网络实际上不安全(例如,包括DMZ或其他不受信任的区域或不安全的链接),或者必须被视为不安全(例如,在PCI DSS下处理支付卡数据),则浏览器和服务器之间的通信上的HTTPS是有益的。从您提供的信息中无法评估这一点,而且您的公司几乎肯定不应该允许您发布使之成为可能的信息——而且这对其他任何人都没有用处,这与StackExchange的理念背道而驰。您应该咨询公司网络上负责安全的人员,了解是否需要HTTPS,可能需要哪些选项,以及他们可能支持或帮助什么

确实,您无法获得localhost的公共信任证书,但这并不重要,因为您没有使用localhost。您使用的是一个私有(rfc1918)又名“intranet”地址,这是非常不同的,但您也无法为这些地址获取公共信任证书

明显的技术选择包括:

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

    如果您还不知道,如果您的任何用户使用Chrome,证书必须在Subject Alternative name(SAN)和Subject CommonName中包含授权名称(此处为地址)。其他浏览器目前不需要这样做,但将来可能需要这样做,因为这已经是一段时间的政策了。许多常用于创建自签名证书的工具,如OpenSSL命令行和Java密钥工具,都不会自动执行此操作。(公共CA有。)这方面已经有很多Qs,如果适用,您可以搜索它们

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

  • 在公司的域下为您的系统获取一个(子)域名,该域名在公司的内部网络上仅解析为您的计算机地址——该解析不需要公开,也不应该公开。然后获取该子域名的公共信任证书。使用DNS-01的LetsEncrypt可以为您颁发域名证书,即使公共Internet无法访问使用该域名的系统,只要您控制该域名的DNS即可。OTOH如果您的公司已经有网络存在和证书,那么它应该已经建立了获取它们的流程;我上面提到的网络安全人员应该知道这一点


您谈论服务器和web服务器之间的通信,但没有任何通信;web服务器正在为浏览器提供一个页面,该页面包含对服务器上资源的引用,因此浏览器正在与服务器通信,而浏览器不信任您的自签名证书

如果浏览器和服务器之间的网络实际上不安全(例如,包括DMZ或其他不受信任的区域或不安全的链接),或者必须被视为不安全(例如,在PCI DSS下处理支付卡数据),则浏览器和服务器之间的通信上的HTTPS是有益的。这是不可能从t来评估的