V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
kaz10025
V2EX  ›  问与答

求助局域网部署 https 并开启双向认证

  •  
  •   kaz10025 · 2023-06-20 09:19:07 +08:00 · 2112 次点击
    这是一个创建于 526 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在局域网有台服务器部署了 springboot 项目,只能 ip 访问,需要开启 https 。然后还有安卓环境调用 web 接口, 需要进行 ssl 双向认证
    25 条回复    2023-06-20 17:07:18 +08:00
    idealhs
        1
    idealhs  
       2023-06-20 09:23:23 +08:00
    搞个便宜的云服务器反代一下
    kaz10025
        2
    kaz10025  
    OP
       2023-06-20 09:24:04 +08:00
    @idealhs 服务器没有外网的
    idealhs
        3
    idealhs  
       2023-06-20 09:25:37 +08:00   ❤️ 1
    @kaz10025 那就只可能自签名证书了,安卓怎么装自签名证书我不懂,有请楼下高人
    lixuanyy
        4
    lixuanyy  
       2023-06-20 09:27:00 +08:00 via iPhone   ❤️ 1
    生成 ca 证书,在设备上信任一下,然后自己签发证书咯
    hefish
        5
    hefish  
       2023-06-20 09:27:58 +08:00   ❤️ 1
    多数安卓导入 ca 需要 root 吧。。。
    kaedeair
        6
    kaedeair  
       2023-06-20 09:30:18 +08:00   ❤️ 1
    买个域名,申请个证书,然后路由器上劫持一下 dns
    kaz10025
        7
    kaz10025  
    OP
       2023-06-20 09:30:27 +08:00
    @lixuanyy 安卓软件有办法吗 证书装不上
    kaz10025
        8
    kaz10025  
    OP
       2023-06-20 09:31:17 +08:00
    @kaedeair 严格意义上讲 我们只能动服务器和安卓软件😭
    kaedeair
        9
    kaedeair  
       2023-06-20 09:55:03 +08:00   ❤️ 1
    @kaz10025 #8 那想办法在安卓上劫持一下 dns ,或者服务器上开一个旁路由,把安卓的网关指向旁路由
    cpsony
        10
    cpsony  
       2023-06-20 09:56:43 +08:00
    证书的话,可以试下微软的 Microsoft Intune ,自动给设备导入第三方证书、安装软件,就是刚开始弄麻烦点。
    yinmin
        11
    yinmin  
       2023-06-20 10:01:20 +08:00 via iPhone   ❤️ 2
    最简单的方式:配置一个域名指向内网 ip 地址,然后用这个域名申请证书安装到服务器上,客户端使用域名访问服务
    FarmerChillax
        12
    FarmerChillax  
       2023-06-20 10:09:13 +08:00
    问个问题,不和外网连接,为啥需要 https
    Vegetable
        13
    Vegetable  
       2023-06-20 10:10:01 +08:00   ❤️ 1
    都说什么呢,直接做自签名证书不就完了吗?反正是安卓客户端用又不是浏览器用
    kaz10025
        14
    kaz10025  
    OP
       2023-06-20 10:28:53 +08:00
    @Vegetable 找了好些教程 都不行 需要一个 demo..
    kaz10025
        15
    kaz10025  
    OP
       2023-06-20 10:29:12 +08:00
    @FarmerChillax 安卓联网的
    kukat
        16
    kukat  
       2023-06-20 10:40:32 +08:00   ❤️ 1
    双向 SSL (mutual SSL) 跟自签证书是两回事,如果对客户端没要求那就不用上 mutual SSL ,自签就够了
    要示例代码的话得看你用的是什么 HTTP client ,通常都支持指定自签证书。

    HttpsUrlConnection 的例子
    https://gist.github.com/gotev/6784c1303793c6ee9e56
    hyperbin
        17
    hyperbin  
       2023-06-20 10:43:05 +08:00 via Android
    @hefish 不需要
    bitmin
        18
    bitmin  
       2023-06-20 10:44:28 +08:00   ❤️ 1
    安卓 app 如果是你们自己开发,在 http 请求方法里可以自定义认证吧
    Vegetable
        19
    Vegetable  
       2023-06-20 10:51:28 +08:00   ❤️ 1
    @kaz10025 你这里涉及到好几个步骤,所以不一定能找到特别匹配教程。

    自建 CA 很简单,网上很多教程。给 IP 签发证书这个点稍微生僻一点,不少人不知道证书还能发给 ip 。然后就是生成双向需要的证书,配置服务器和修改客户端网络请求部分的代码。

    因为你不是在抓包,而是自己开发。所以不涉及到所谓安装证书这一步,而是需要在 Android 代码中请求时处理对应的 SSL 。

    https://juejin.cn/post/6844903953407148045 我看这个教程和你挺般配的,他这里签名用的域名不是 IP ,和你需求不一样。这一点你可以看别的教程,比如 https://www.cnblogs.com/dirigent/p/15246731.html ,也可以试试这个仓库 https://github.com/antelle/generate-ip-cert
    zedpass
        20
    zedpass  
       2023-06-20 11:43:35 +08:00   ❤️ 1
    部署 https://github.com/NginxProxyManager/nginx-proxy-manager 这个,自带 nginx ,可以使用 web 管理,并且可以从 Let's Encrypt 自动签发证书,内网服务做测试用很方便
    hahahahahahahah
        21
    hahahahahahahah  
       2023-06-20 12:04:19 +08:00 via iPhone   ❤️ 1
    直接两台 nginx
    gvdlmjwje
        22
    gvdlmjwje  
       2023-06-20 12:34:23 +08:00   ❤️ 1
    内网的话 可以用自建 SA 然后用这个自建 SA 签发 SSL 证书 github 找 mkcert
    Nile20
        23
    Nile20  
       2023-06-20 12:38:23 +08:00 via Android   ❤️ 1
    @Vegetable 给 IP 签发证书感觉可能会有困难。要是公网 IP 还好,OP 这是局域网,那 IP 大概率也是内网 IP 段,申请证书时需要验证所有权,但是怎么向 CA 证明这个 IP 是 OP 的感觉有困难。前面有个回复我觉得挺好,就是搞个域名,为域名申请证书,然后将域名 DNS 指向内网 IP 地址
    blackshow
        24
    blackshow  
       2023-06-20 13:31:52 +08:00   ❤️ 1
    openssl 自签一下不就行了吗,网上例子一大堆
    https://juejin.cn/post/7111243617184219150
    DdDddDlush
        25
    DdDddDlush  
       2023-06-20 17:07:18 +08:00   ❤️ 1
    这不就是 NGINX 开启双向认证就可以了吗?自签名证书的问题只有根信任问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3620 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 10:45 · PVG 18:45 · LAX 02:45 · JFK 05:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.