V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
paparika
V2EX  ›  服务器

局域网内搭建一个服务器,可以使用 https 吗

  •  
  •   paparika · 2018-07-19 16:11:27 +08:00 · 21256 次点击
    这是一个创建于 2079 天前的主题,其中的信息可能已经有所发展或是发生改变。

    局域网内通过嵌入式设备搭建一个轻量级 web 服务,可以仍然使用 https 吗,有点困惑,证书什么的怎么办

    37 条回复    2018-10-11 19:21:11 +08:00
    paparika
        1
    paparika  
    OP
       2018-07-19 16:15:23 +08:00
    这里的局域网就特指普通家庭局域网
    flowfire
        2
    flowfire  
       2018-07-19 16:16:56 +08:00 via iPhone
    自己签发一个,然后手动信任
    littleylv
        3
    littleylv  
       2018-07-19 16:17:18 +08:00
    1、这种情况有必要用 https 么?
    2、用自己生成的证书,但是首次浏览器会警告,给他允许了就好了,左上角的小锁会是红色
    i730
        4
    i730  
       2018-07-19 16:21:25 +08:00
    局域网内 https 浪费性能啊,做好 wifi 防护就好,反倒别让人连上你 wifi 了
    terrytw
        5
    terrytw  
       2018-07-19 16:24:40 +08:00
    第一种,自签名证书,导入你需要访问的客户端
    第二种,你去 LETS ENCRYPT 去注册一个证书,前提你有域名,80 端口如果不能访问可以用 DNS 方式
    paparika
        6
    paparika  
    OP
       2018-07-19 16:26:37 +08:00
    @flowfire
    @littleylv
    @i730 情景有点复杂,局域网里另一个设备需要访问这个服务端(不是通过浏览器,是通过设备里的程序),如果是自签发的证书,必须要让这个设备事先授信这个证书是吧
    paparika
        7
    paparika  
    OP
       2018-07-19 16:28:07 +08:00
    @terrytw 如果是第二种的话,局域网内怎么挂域名
    paparika
        8
    paparika  
    OP
       2018-07-19 16:29:05 +08:00
    @terrytw 就是普通家庭那种局域网
    paparika
        9
    paparika  
    OP
       2018-07-19 16:32:33 +08:00
    @terrytw 是不是我要弄个广域网的域名,然后私下在局域网里 dns 把域名解析为局域网地址
    i730
        10
    i730  
       2018-07-19 16:34:06 +08:00
    @paparika #6 这个有公网域名最方便,否则自建 CA 在设备里导入,就是导入到系统,系统的证书链
    paparika
        11
    paparika  
    OP
       2018-07-19 16:35:32 +08:00
    @i730
    @terrytw 如果是自签名,能导入证书。那么还是存在要解析域名的问题吧,这个怎么搞定
    waacoo
        12
    waacoo  
       2018-07-19 16:36:31 +08:00 via iPhone
    可以,mkcert
    i730
        13
    i730  
       2018-07-19 16:38:07 +08:00
    @paparika #11 hosts 文件了解一下
    imdong
        14
    imdong  
       2018-07-19 16:38:54 +08:00
    自签证书是可以的,也可以暴露 80 端口到外网(或拥有一台外网服务器)
    然后获取到证书以后,拿到内网使用。
    至于怎么获取证书,letsencrypt 阿里云 腾讯云 等很多第三方都可以签到证书的。
    如何获取到证书是一个问题,证书在内网用没问题。
    waacoo
        15
    waacoo  
       2018-07-19 16:39:11 +08:00 via iPhone
    paparika
        16
    paparika  
    OP
       2018-07-19 16:42:47 +08:00
    @i730 对于我来说,服务端和设备是可控的,局域网是不可控的,那么我就不能用静态 ip,这样 hosts 也没用吧
    paparika
        17
    paparika  
    OP
       2018-07-19 16:49:27 +08:00
    @imdong 抱歉没懂,我是局域网内设备访问局域网服务器,暴露 80 干嘛
    i730
        18
    i730  
       2018-07-19 16:52:57 +08:00
    @paparika #16 你都不知道服务器 IP 怎么访问?搞个自动化程序,获取服务器 IP 写 hosts
    whitegerry
        19
    whitegerry  
       2018-07-19 16:55:21 +08:00
    @paparika

    局域网绑个域名,然后 mkcert 自建根证书
    https://github.com/FiloSottile/mkcert
    paparika
        20
    paparika  
    OP
       2018-07-19 16:56:37 +08:00
    @i730 哈哈,情景确实比较复杂,算是开个脑洞而已。这块比较小白,见谅
    whitegerry
        21
    whitegerry  
       2018-07-19 16:57:08 +08:00
    或者 Openssl 自签证书
    paparika
        22
    paparika  
    OP
       2018-07-19 16:57:51 +08:00
    @whitegerry 那局域网内怎么把域名转化为 ip 呢
    imdong
        23
    imdong  
       2018-07-19 16:58:14 +08:00
    问题分两种:
    域名是真实的,楼主对域名拥有真实控制权:百度 letsencrypt DNS 验证
    域名是伪造的,自签名 CA 生成证书,要求访问者导入 CA 证书到受信任的根证书机构。参考 12306
    paparika
        24
    paparika  
    OP
       2018-07-19 17:01:23 +08:00
    @imdong 感谢,再问一步,不管真实伪造,局域网内设备访问域名,有没有办法把域名指向局域网服务端的 ip (局域网是不受控的,干涉不了路由等设备)
    whitegerry
        25
    whitegerry  
       2018-07-19 17:18:04 +08:00
    服务端 ip 不可控?那跟能不能用 https 没什么关系吧
    mikeguan
        26
    mikeguan  
       2018-07-19 17:20:56 +08:00 via Android
    @paparika 可以在域名注册商那里将域名解析到内网的 和解析到公网 ip 地址一样的操作 并且可以设置 txt 记录进行域名签发证书
    whitegerry
        27
    whitegerry  
       2018-07-19 17:28:17 +08:00
    服务端和客户端可控且能连外网的话,虚拟局域网 n2n/tinc/zerotier,n2n 和 zero 自己不用准备公网服务器,或者 frp。
    davidyin
        28
    davidyin  
       2018-07-19 18:23:57 +08:00
    花点钱,买个域名指向局域网 ip,再买个证书,就可以了。
    noe132
        29
    noe132  
       2018-07-19 18:54:53 +08:00
    据我记忆好像是域名可以设置 A 记录到内网 ip,也就是可以指向 192.168.1.1 这种地址
    liwufan
        30
    liwufan  
       2018-07-19 19:14:30 +08:00
    我也很好奇这问题。虽然两台机子间倒腾 https 听起来有点鸡肋,但是大一点的内网是不是会开始自建 ca 服务器了啊?
    n2ex2
        31
    n2ex2  
       2018-07-19 19:16:44 +08:00 via Android
    域名可以设置内网 ip,另一种方法就是 hosts。
    uncat
        32
    uncat  
       2018-07-19 21:14:01 +08:00 via Android
    当然可以。准备一个域名解析到你的服务器内网 ip.然后按照 Letsencrypt 教程操作就可以了。
    just1
        33
    just1  
       2018-07-19 22:08:24 +08:00
    域名直接 A 记录内网 ip
    flynaj
        34
    flynaj  
       2018-07-19 22:09:42 +08:00 via Android
    letsencrypt DNS 验证 就可以证书了,或者静态 DNS 纪录也可以。
    akira
        35
    akira  
       2018-07-19 22:43:51 +08:00
    @paparika 内网搭建一个域名解析,或者配置 host 都可以。 内网用域名也是很常见的
    imdong
        36
    imdong  
       2018-07-20 09:26:16 +08:00
    如果域名是真实的,而且内网的服务器 IP 是固定且对所有人都可见。
    是可以直接解析的。
    DSN 解析支持内网,但是用户端要能连接外网。

    你把 a.baidu.com 指向 127.0.0.1 所有访问这个地址的人都会打开本地.
    如果内网地址是 192.168.1.253 那么吧 s.baidu.com 指向 这个 IP 即可.
    iceheart
        37
    iceheart  
       2018-10-11 19:21:11 +08:00 via Android
    1.域名和证书:几块钱买一个域名,freessl 上免费申请证书。
    2.内网解析:搭个 dnsmasq,配置文件添加解析;内网的 dhcp 下发的 dns 指向你配的 dnsmasq
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5444 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 08:35 · PVG 16:35 · LAX 01:35 · JFK 04:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.