V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
ImmerTry
V2EX  ›  程序员

关于 https 平台下 iframe 嵌入 http 链接,浏览器报安全警告的问题

  •  
  •   ImmerTry · 2023-08-22 14:34:29 +08:00 · 2411 次点击
    这是一个创建于 494 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在公司将自有平台嵌入到对方平台,但是目前对方平台访问的地址是有 ssl 证书的; 将我们平台以 iframe 方式嵌入到对方系统中,浏览器报安全警告,访问不了。 已知:1 、公司目前还未提到会购买域名配置 ssl 证书 。 尝试过的方法:配置 nginx 代理,但是都失败了。 有没有类似经历的老哥,分享下解决办法。

    29 条回复    2023-08-23 09:16:40 +08:00
    renfei
        1
    renfei  
       2023-08-22 14:40:40 +08:00   ❤️ 1
    HTTPS 的页面中,禁止加载 HTTP 的资源,这是规范,不能改

    现在 SSL 证书好多免费的,不用购买啊,用免费的就行啊
    flyqie
        2
    flyqie  
       2023-08-22 14:46:04 +08:00
    chrome 这块唯一的方法就是在浏览器的网站权限设置里面开启`不安全内容`,但这个是走的调用方当前域名的,虽然不是顶级域名,但粒度也是比较粗的,并且还得用户手动调整,极其不友好。

    建议还是申请上个 ssl 吧,他好你也好。。
    flyqie
        3
    flyqie  
       2023-08-22 14:47:24 +08:00
    @renfei #1

    其他浏览器不清楚,但 chrome 可以针对当前域名手动干掉限制,不知道楼主什么场景。。
    tony1016
        4
    tony1016  
       2023-08-22 14:47:53 +08:00
    第一,没有别的办法;第二,部署证书不需要掏钱
    NewYear
        5
    NewYear  
       2023-08-22 14:48:24 +08:00
    没有购买域名是吧,实在不行个人掏钱买一个,买个便宜的,几块钱一年。
    或者自己用的域名,开设一个二级域名。
    至于 SSL 证书,免费 1 年的有,自动脚本的也有。

    在一个公司的成本中,域名的成本低到可怕,工作还是要学会如何申请资源、申请预算,不要什么都靠自己的双手去搞。
    DOLLOR
        6
    DOLLOR  
       2023-08-22 14:54:15 +08:00   ❤️ 1
    能上 HTTPS 就上,最好别想什么怪招绕过。
    要是将来 HTTP 页面被攻击了,导致别人平台也受牵连了,到时候就有扯不完的纠纷了。
    clf
        7
    clf  
       2023-08-22 14:56:09 +08:00
    可以反向代理对方的套 https 来解决。但为啥你们不自己上 https……
    ImmerTry
        8
    ImmerTry  
    OP
       2023-08-22 14:57:41 +08:00
    @flyqie 调试的时候是这样搞得,目前联调结束了,就差这个问题了
    renfei
        9
    renfei  
       2023-08-22 14:58:49 +08:00
    @flyqie #3 你无法远程操作用户手里的浏览器设置啊,自己改自己的浏览器只是自己降低了自己浏览器的安全等级,并不能干预其他用户啊
    githmb
        10
    githmb  
       2023-08-22 14:59:22 +08:00
    让对方反代
    ImmerTry
        11
    ImmerTry  
    OP
       2023-08-22 15:00:08 +08:00
    @tony1016 部署证书我看到的是需要域名的,公司现在还没有申请
    ImmerTry
        12
    ImmerTry  
    OP
       2023-08-22 15:01:42 +08:00
    @githmb 我也是想要这样做,但是我想自己先试试(用自己的域名),但是没搞通
    ImmerTry
        13
    ImmerTry  
    OP
       2023-08-22 15:02:29 +08:00
    @renfei 的确是这样的,ssl 是一劳永逸的最优解
    abcbuzhiming
        14
    abcbuzhiming  
       2023-08-22 15:05:20 +08:00
    @ImmerTry 没有域名的 web 现在居然还能对外提供服务?你们难道不是国内,或者搞的不是公网吗?


    @ImmerTry 别用自己的域名,再次强调,给公司干活不要用自己的私人资源,除非事先就和公司讲清楚。你看看前两天那个用自己的 chatgpt-key 给公司搭建 chatgpt 服务的哥们,最后搞出多大的纠纷来,还被公司告
    ImmerTry
        15
    ImmerTry  
    OP
       2023-08-22 15:06:39 +08:00
    @clf 有反向代理的配置参考么;公司上 https 走流程要花一些时间,想着看能不能有别的方法
    ImmerTry
        16
    ImmerTry  
    OP
       2023-08-22 15:07:51 +08:00
    @abcbuzhiming 感谢提醒,目前是提供的公网 IP 供对方访问。
    jifengg
        17
    jifengg  
       2023-08-22 15:15:03 +08:00
    补充以上,让公司赶紧购买域名,因为,接下来还有备案,这个不麻烦,但是要等至少 20 自然天。
    caiqichang
        18
    caiqichang  
       2023-08-22 15:30:45 +08:00
    反向代理可以这样设置,比如 nginx
    location ^~ /你的域名 {
    proxy_pass http://你的域名/;
    }

    然后 iframe 地址
    <iframe src="https://他的域名/你的域名/..."></iframe
    caiqichang
        19
    caiqichang  
       2023-08-22 15:31:25 +08:00
    或者直接
    <iframe src="/你的域名/..."></iframe>
    clf
        20
    clf  
       2023-08-22 15:32:42 +08:00
    @ImmerTry 一个参考:

    server {

    # SSL 监听 443 端口

    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    #下面_换成你证书对应的域名
    server_name _;

    # SSL 的证书和 key 的路径
    ssl_certificate /etc/nginx/ssl/server.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;

    location / {
    #下面换成你们 http 的地址
    proxy_pass http:xxxx.com;
    #下面这些配置是修改 Header 的,你可以选择增加/删除或修改,部分情况下需要手动配置 host 等 header
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Forwarded $proxy_add_forwarded;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Port $server_port;
    }
    }
    renfei
        21
    renfei  
       2023-08-22 15:38:47 +08:00
    @ImmerTry #12 IP 地址也是可以签发 SSL 证书的,只是需要找一下,只有少部分 CA 支持
    ImmerTry
        22
    ImmerTry  
    OP
       2023-08-22 15:55:32 +08:00
    @caiqichang
    @clf
    感谢提供参考,我这就试试
    ImmerTry
        23
    ImmerTry  
    OP
       2023-08-22 15:56:12 +08:00
    @renfei 好的,我去搜索下
    a1274598858
        24
    a1274598858  
       2023-08-22 16:32:38 +08:00
    @ImmerTry #23 gdca 有 ip 证书 几百块一年 https://www.gdca.com.cn/
    flyqie
        25
    flyqie  
       2023-08-22 17:27:10 +08:00 via Android
    @renfei #9

    对啊,所以说只在某些场景适用。。
    honhon
        26
    honhon  
       2023-08-22 17:29:08 +08:00
    letsencrypt 你值得拥有,自动续期
    laozhoubuluo
        27
    laozhoubuluo  
       2023-08-22 17:58:41 +08:00
    @ImmerTry ZeroSSL 可以签署 IP 地址证书,不过有效期只有九十天,可以作为无条件购买域名的备份方案。可以将这个方案作为不买域名的备选方案,不过考虑到 IP 地址证书不支持 ACME 自动化因此九十天签发一次的人力成本都高于域名钱了。教程可参考 https://www.landiannews.com/archives/93605.html

    @honhon 嗯,买了域名就可以自动签 Let's Encrypt 证书了。政府网站都敢用的免费证书提供商。
    ImmerTry
        28
    ImmerTry  
    OP
       2023-08-22 20:40:08 +08:00
    @laozhoubuluo 感谢分享,准备着手试一下
    busier
        29
    busier  
       2023-08-23 09:16:40 +08:00 via Android
    @laozhoubuluo 你这说的 免费证书怎么了!

    正经证书颁发机构,应该是客户端本机生成私钥和 csr ,将 csr 提交给证书机构,再将颁发的证书下载回来。
    证书颁发机构全程接触不到客户私钥。

    而国内很多证书颁发机构,自己服务器端产生私钥,把私钥和证书一起给客户下载,像这种证书颁发机构持有过私钥,才是最危险的。还喜欢臭不要脸的说免费的不安全!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2847 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 88ms · UTC 08:49 · PVG 16:49 · LAX 00:49 · JFK 03:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.