kaz10025
V2EX  ›  问与答

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

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

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