具有本地 IP 的设备的自签名证书

2024-02-03

设想:

  • 我们有一个类似于 WiFi 路由器的设备,它暴露了 UI 和 API
  • 该设备将在我们无法控制的任何 LAN 上运行,就像 WiFi 路由器在任何房屋上运行一样。
  • 该设备不属于任何域,通过浏览器通过其 IP 地址(即 192.168.1.100)进行访问。
  • 协议应为 HTTPS
  • Windows上使用的软件是.net Core/Kestrel
  • 目前,我们在所有浏览器中都会发出警告,告知设备的证书无效。
  • 限制:该设备应可由任何计算机(台式机/平板电脑)访问,并且不能在客户端计算机中安装或配置任何内容。

问题是:消除警告的最佳方法是什么?我们了解到私有/本地 IP 不能有常规证书。

自签名证书似乎可以工作几天,然后错误再次出现。


无法为IP地址颁发SSL证书;你必须有一个实际的name您为其创建证书的。为了获得这样的名称,您需要一个 DNS。由于您无权访问该本地网络的内部 DNS,因此您必须使用公共 DNS 服务器。

这假设该网络内的设备实际上可以访问互联网。如果他们不这样做,那么你就完全不走运了。

如果可以访问互联网,那么您只需将公共(子)域指向您的本地 IP 地址即可。基本上,为您拥有的域配置 DNS,以便该域或其子域之一上有一个 A 条目,该条目指向您的本地 IP 地址192.168.1.100.

这样,您就可以将该公共域传达给其他人,当他们尝试解析该域时,他们将访问 DNS,该 DNS 将提供本地 IP 地址。因此,该网络内的设备可以访问您的设备并访问它。由于他们随后通过该域访问它,因此该确切域的证书将被普遍接受。

从理论上讲,这非常有效。但实际上这可能有点复杂或昂贵。服务器证书过期,因此您必须包含证书(安全!)在您的设备中,并提供一些最终在到期时进行更新的方法。免费证书(例如 LetsEncrypt 提供的证书)将在几周内过期,但金钱可以为您购买过期速度较慢的证书。

但最终还是会有些痛苦。但不是因为域名,而是因为证书——至少如果您想要一个自动受信任的证书的话。不然的话,你又会回到最初的地方。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有本地 IP 的设备的自签名证书 的相关文章

随机推荐

  • java.lang.UnsupportedOperationException:AdapterView 中不支持 addView(View, LayoutParams)

    我正在使用网上找到的 Expandable ListView 示例 活动 public class ExpandableListViewActivity extends ExpandableListActivity strings for
  • utf8mb4_unicode_ci 与 utf8mb4_bin

    首先让我们看看我是否做对了 字符集是一组符号和编码 排序规则是用于比较字符集中字符的一组规则 我应该使用 utf8mb4 因为 mysql utf8 是一种欺诈 最多 3 字节 而不是 PHP 中真正的最多 4 字节真正的 utf8 字符集
  • 打字稿和传播运算符?

    function foo x number y number z number console log x y z var args number 0 1 2 foo args 为什么我在 Typescript Playground 中收到
  • 多个 Activemq 远程代理的 Spring 配置

    如何在spring上下文中配置多个远程activemq代理 不同的IP地址 以下是 1 个远程代理的配置 我正在使用camel来创建路由 用于在多个远程代理中的不同队列中生成和使用消息 根据以下路由 系统如何知道每个队列属于哪个远程代理 项
  • 没有为命名空间 / 和操作名称 hello 映射的操作

    package com tutorialspoint struts2 public class HelloWorldAction private String name public String execute throws Except
  • 如何在asp.net core 1.0中获取当前的url

    在以前版本的 ASP NET 中 我们可以使用 Request Url AbsoluteUri 但似乎已经改变了 我们如何在 ASP NET Core 1 0 中做到这一点 您必须分别获取主机和路径 Context Request Host
  • 画一棵二叉树

    我正在寻找一个js库 它允许用户绘制二叉树 添加 删除叶子 添加 删除父节点等 我发现了很多库 但其中大多数仅用于数据可视化 例如 d3 而不是从浏览器中绘制 这真的存在吗 Thanks 看看现有的绘制图表的东西 树就是图 纯 JavaSc
  • 使用 jQuery 将具有相对路径的外部 HTML 页面加载到 DIV 中

    我对 jQuery 比较陌生 如果这个问题太简单 请原谅 但我已经搜索了许多线程几个小时 但找不到明确的解决方案 我有以下文件夹结构 index html html pages page1 html html pages images ht
  • 在 Postgres 中使用 DELETE 的返回值进行 UPDATE

    我需要使用从另一个表中删除的值来更新表 情况是类似于SO 上的评论投票记分员 我正在使用 python 来处理 postgres 但这应该没有什么区别 query UPDATE comment SET score score DELETE
  • persistence.xml 中 jpa 的 C3p0 连接池不起作用?

    在尝试按照我能找到的所有示例配置 c3p0 后 我仍然遇到 JDBC 超时问题 我正在使用 JPA Hibernate Tomcat MySQL AWS RDS 这是 persistence xml 的片段
  • 需要 Django 表单集

    如何使 django formset 中的所有表单都成为必需的 我试图验证所有字段的存在cleaned data重写 formset 的 clean 方法 但它只是默默地失败 没有显示任何错误 Thanks 源代码 class BaseSc
  • 检查我的系统中是否安装了 Python 软件包?

    如何检查我的系统中是否安装了某些软件包 我的系统是Linux 但如果它能在其他操作系统上运行就更好了 我的意思是操作系统特定的软件包 例如可能是 rpm 或 deb 有没有 python 模块或脚本可以做到这一点 要查明您是否安装了 deb
  • 如何在不单击按钮的情况下将两个值相乘 - javascript

    这是我的小提琴 http jsfiddle net YFgkB 6 http jsfiddle net YFgkB 6
  • 有没有办法从 Qt 中的另一个信号触发一个信号?

    我已经有了一个应用程序 现在正在对其进行调整 在这方面 我引入了一个新信号 当发出另一个信号时必须发出该信号 这在 Qt 中可能吗 编写一个插槽只是为了发出这个信号感觉如此原始和蹩脚 进一步详细说明 我必须将按钮 signalClicked
  • 如何检查哪些提交尚未推送到原点?

    我已经向我的本地分支 我们就说 master 做出了提交 并让 git pull 下来了其他人所做的更改 当我运行 git status 时 我看到类似以下内容 Your branch is ahead of origin master b
  • Autoconf:如何将安装路径获取到config.h中

    我的程序需要在运行时加载一些文件 这些文件将安装到指定的任何文件夹中 configure datadir somewhere 由于我的程序需要在运行时知道该文件夹的位置 因此我需要在某处 define 一个符号 以便 C 代码可以以字符串形
  • 将 Lambda 传递给 pthread_create?

    我在整个网络上搜索答案 但没有找到任何解决方案 你能帮忙吗 我的问题是我正在尝试将 Lambda 发送到另一个函数并使用Pthread跨多个线程运行 lambda 的库 接下来是代码 1 include
  • CX_Freeze - 构建具有管理员权限的 .msi

    我正在尝试从我的 python tkinter 代码创建一个可由其他用户安装的可执行文件 我已经能够使用 cx Freeze 成功执行此操作 但是 exe 无法写入工作或指定目录中的文件 研究这个问题后 我发现这可能是因为 exe没有适当的
  • sklearn ImportError:没有名为 _check_build 的模块

    我正在尝试导入 sklearn 但是当我尝试这样做时 我收到以下信息 ImportError Traceback most recent call last
  • 具有本地 IP 的设备的自签名证书

    设想 我们有一个类似于 WiFi 路由器的设备 它暴露了 UI 和 API 该设备将在我们无法控制的任何 LAN 上运行 就像 WiFi 路由器在任何房屋上运行一样 该设备不属于任何域 通过浏览器通过其 IP 地址 即 192 168 1