访问系统用的 https ,在系统某个页面需要加载一个其他服务商提供的 xxx.xxx/demo.js 。我想到的方法是通过 nginx 把 http 服务转换成内服服务器上 https 服务,然后然后页面加载内部服务器的 https 。现在有个问题,因为是自签证书,每次页面加载时候就显示不安全连接,需要点击一下才能正常加载。我不太懂证书认证这方面问题,请问大佬有什么方式不弹出不安全连接的提示,直接加载页面呢?

把用于签名的证书的根证书加入本机的可信任 CA 就行了

别把别人的 js 转成内网 https 啊,要么转成公网带证书的,要么 js 直接下载放本地路径加载

手动信任证书就好了

签名证书添加到访问机器的可信任 CA 么,访问机器有很多呢,怎么办呢

其他服务商也是内网环境,不会在公网暴露,下载 js 到本地就怕对端有更改

你现在不就是 访问时候手动么,那现在机器多么

试试 mkcert

github.com/FiloSottile/mkcert

访问时候手动,但是系统面向内部用户,每个用户访问的机器不同,有很多机器的

内网还要上 https 纯折磨啊

改 hosts 把域名劫持到本地局域网 ip ,然后就能用这个域名证书了

自签证书必须要用户自己确认承担风险吧,你想实现的东西和那些做监控 APP 的没啥区别

内网服务器也可以部署互联网 https 证书的,买一个 1 年期商业证书部署在内网服务器上就可以了

确实,一方面集团要求,另一方面,系统是 https ,访问不了 http 的 js 吧(这个情况我没试过

我理解的劫持是不是跟 nginx 转一下的作用是一样的?

是的,不过内网系统,服务商也是内部的,基本上不存在风险,应该是

#12 就是你把域名给解析到本地 ip ,比如 1.1.com 解析到 182.168.1.3 ,如果不能改 hosts ,可以自建 dns 服务器,这个自行谷歌百度
然后给你的 nginx 配置证书和域名,参考

server {
 listen 443 ssl;
 server_name 1.1.com;

 ssl_certificate fullchain17.pem;
 ssl_certificate_key privkey17.pem;

这样你访问 1.1.com 就能访问到本地 ip 了,而且还有域名证书默认信任

把這個 js 放到你的機器上不就行了

内网其实不影响你用公开域名和商业证书/LetsEncrypt 免费证书的,为了方便自动续期,一般会有一个只供内网开放的反代网关负责 https 包装,使用通配符证书。
现在不少开发工具都默认要 https 的,尽量别这么设计内部系统给自己添麻烦。

浏览器有些 api 必须要 https 才能用的

内网也可以用正规证书啊,用 dns 验证就好了。

letsencrypt.org/docs/challenge-types/#dns-01-challenge

#12
什么供应商连个 https 都没有
这是当乙方的态度吗

如果没有什么奇怪的安全合规需求的话,直接部署 LE 的证书就行了。
比如你的内部域名是 a.example.com ,在公网用 dns 验证方式弄一个 a.example.com 的证书,然后部署进内网即可。自己做好自动化。

  1. 直接把这段 js 打包进你的前端页面里,别用 script 标签引用的方式
  1. 用 Let's Encrypt 等免费证书来签名

    内网不影响使用正规证书,dns 申请一个泛域名证书,内网 dns 做个解析。这样就不用每个机器都配置了。我们就是这么用的。