保护私有IP地址(https证书)

Xvo*_*lks 6 ssl cross-domain

我有一个不寻常的用例:

  • Internet上的Web服务器通过HTTPS提供页面,
  • 在这些网页中,有一个XMLHttpRequests调用到本地连接的设备(IP over USB)
    • 设备支持HTTP和HTTPS,
    • 该设备可以访问 http(s)://192.168.0.1
  • 由于https页面中的内容不安全,http调用失败,
  • https调用失败,因为证书不受信任(自签名),

附带问题:由于设备本地连接到PC,因此加密非常无用:是否存在允许与特定URL进行不安全连接的http头?(比如跨域的CORS)

主要问题:是否可以获取私有IP地址的证书?

编辑:似乎Plex有类似的问题,并按照本博客中描述的方式解决了它.这对我来说太大了.

ped*_*ofb 8

是否可以获取私有IP地址的证书?

证书可以绑定到IP地址(请参阅此内容).您可以将自签名证书颁发给私有地址,但受信任的CA不会将证书颁发给私有地址,因为它无法验证其身份.

例如,颁发给的证书192.168.0.1在任何上下文中理论上都是有效的,受信任的CA不应该允许这样做

Plex通过动态DNS和通配符证书解决了这个问题.使用解析为专用IP的设备的名称(而不是IP)完成连接

是否存在允许与特定URL进行不安全连接的http标头?(比如跨域的CORS)

不,它不存在.浏览器会阻止您的XHR连接,因为它们是从HTTPS页面启动的HTTP连接(混合内容警告).理论上,非安全内容可以被攻击者读取或修改,即使父页面是通过HTTP提供的,因此是正常的,并建议浏览器警告用户.

要修复混合内容和https错误,您可以通过HTTPS和自签名证书提供内容,并请求用户在浏览器中导入根CA.


Mur*_*han 7

不能为保留 IP 地址(RFC 1918 和 RFC 4193 范围)/私有 IP 地址(IPv4、IPv6)、内部服务器名称的 Intranet、带有非公共域名后缀的本地服务器名称颁发 SSL 证书。

但是,您可以使用“自签名”证书。创建方法如下:

为私有IP创建自签名证书(例如https://192.168.0.1):

  1. 您需要安装 OpenSSL。例如,在 Ubuntu 上,您可以通过以下方式安装它:(sudo apt-get install openssl 它可能已经安装。输入“openssl version”即可找到)对于 Windows,您可以尝试以下操作: https: //slproweb.com/products/Win32OpenSSL.html

  2. 安装 OpenSSL 后,通过在控制台 (LINUX) 或 cmd 提示符 (WINDOWS) 上输入“openssl”转至 OpenSSL 提示符。

    $openssl

    OpenSSL>

  3. 现在执行以下步骤来创建:私钥、证书请求、自签名证书,然后使用以下命令将它们放在一起:

i) 创建名为 mydomain.key 的 KEY:

OpenSSL> genrsa -out mydomain.key 2048
Run Code Online (Sandbox Code Playgroud)

ii) 使用密钥创建名为 mydomain.csr 的证书请求 您可以接受默认选项,或指定您自己的信息:

OpenSSL> req -new -key mydomain.key -out mydomain.csr
Run Code Online (Sandbox Code Playgroud)

iii) 使用上述内容创建证书:

OpenSSL> x509 -req -days 1825 -in mydomain.csr -signkey mydomain.key -out mydomain.crt
Run Code Online (Sandbox Code Playgroud)

iv) 输入以上所有内容来创建 PEM 证书:退出 OpenSSL (OpenSSL> q) 并转到证书位置并执行以下操作:

$ sudo cat mydomain.key mydomain.crt >> mylabs.com.pem
Run Code Online (Sandbox Code Playgroud)

mylabs.com.pem 是您的自签名证书。如果您的服务器支持 https ,您可以在https://192.168.0.1等请求中使用它。请记住检查 https(443) 的端口号。

  • 目前尚不清楚这与私有 IP 192.168.0.1 有何关系。该值不会出现在任何命令中。您是说以这种方式生成的证书适用于任何保留的 IP? (6认同)