V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
kaz10025
V2EX  ›  问与答

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

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

    HttpsUrlConnection 的例子
    https://gist.github.com/gotev/6784c1303793c6ee9e56
    hyperbin
        17
    hyperbin  
       Jun 20, 2023 via Android
    @hefish 不需要
    bitmin
        18
    bitmin  
       Jun 20, 2023   ❤️ 1
    安卓 app 如果是你们自己开发,在 http 请求方法里可以自定义认证吧
    Vegetable
        19
    Vegetable  
       Jun 20, 2023   ❤️ 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  
       Jun 20, 2023   ❤️ 1
    部署 https://github.com/NginxProxyManager/nginx-proxy-manager 这个,自带 nginx ,可以使用 web 管理,并且可以从 Let's Encrypt 自动签发证书,内网服务做测试用很方便
    hahahahahahahah
        21
    hahahahahahahah  
       Jun 20, 2023 via iPhone   ❤️ 1
    直接两台 nginx
    gvdlmjwje
        22
    gvdlmjwje  
       Jun 20, 2023   ❤️ 1
    内网的话 可以用自建 SA 然后用这个自建 SA 签发 SSL 证书 github 找 mkcert
    Nile20
        23
    Nile20  
       Jun 20, 2023 via Android   ❤️ 1
    @Vegetable 给 IP 签发证书感觉可能会有困难。要是公网 IP 还好,OP 这是局域网,那 IP 大概率也是内网 IP 段,申请证书时需要验证所有权,但是怎么向 CA 证明这个 IP 是 OP 的感觉有困难。前面有个回复我觉得挺好,就是搞个域名,为域名申请证书,然后将域名 DNS 指向内网 IP 地址
    blackshow
        24
    blackshow  
       Jun 20, 2023   ❤️ 1
    openssl 自签一下不就行了吗,网上例子一大堆
    https://juejin.cn/post/7111243617184219150
    DdDddDlush
        25
    DdDddDlush  
       Jun 20, 2023   ❤️ 1
    这不就是 NGINX 开启双向认证就可以了吗?自签名证书的问题只有根信任问题。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5987 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 101ms · UTC 03:24 · PVG 11:24 · LAX 20:24 · JFK 23:24
    ♥ Do have faith in what you're doing.