我有一个不寻常的用例:
http(s)://192.168.0.1
附带问题:由于设备本地连接到PC,因此加密非常无用:是否存在允许与特定URL进行不安全连接的http标头? (比如跨域的CORS)
主要问题:是否可以获取私有IP地址的证书?
编辑:似乎Plex遇到了类似的问题,并按照http://ecl.moyl.com/Home/Stats中描述的方式解决了问题。这对我来说太大了。
答案 0 :(得分:6)
是否可以获取私有IP地址的证书?
证书可以绑定到IP地址(请参阅this)。您可以将自签名证书颁发给私有地址,但受信任的CA不会将证书颁发给私有地址,因为它无法验证其身份。
例如,颁发给192.168.0.1
的证书在理论上在任何上下文中都是有效的,受信任的CA不应该允许这样做
Plex通过动态DNS和通配符证书解决了这个问题。使用解析为专用IP
的设备的名称(而不是IP)完成连接是否存在允许与特定URL进行不安全连接的http标头? (比如跨域的CORS)
不,它不存在。浏览器会阻止您的XHR连接,因为它们是从HTTPS页面启动的HTTP连接(混合内容警告)。理论上,非安全内容可以被攻击者读取或修改,即使父页面是通过HTTP提供的,因此是正常的,并建议浏览器警告用户。
要修复混合内容和https错误,您可以通过HTTPS和自签名证书提供内容,并请求用户在浏览器中导入根CA.
答案 1 :(得分:1)
不能为保留的IP地址(RFC 1918和RFC 4193范围)/私有IP地址(IPv4,IPv6),内部服务器名称的Intranet,具有非公共域名的本地服务器名称颁发SSL证书后缀。
但是,您可以使用“ 自签名”证书。创建方法如下:
您需要安装OpenSSL。
例如,在Ubuntu上,您可以通过以下方式安装:sudo apt-get install openssl
(它可能已经安装。键入“ openssl版本”以了解信息)
对于Windows,您可以尝试以下操作:https://slproweb.com/products/Win32OpenSSL.html
一旦安装了OpenSSL,请在控制台(LINUX)或cmd提示符(WINDOWS)上输入“ openssl”,转到OpenSSL提示符。
$ openssl
OpenSSL>
现在执行以下步骤来创建:私钥,证书请求,对证书进行自签名并使用以下命令将它们放在一起:
i)创建一个名为mydomain.key的密钥:
OpenSSL> genrsa -out mydomain.key 2048
ii)使用密钥创建一个名为mydomain.csr的证书请求 您可以接受默认选项,也可以指定自己的信息:
OpenSSL> req -new -key mydomain.key -out mydomain.csr
iii)使用以上内容创建证书:
OpenSSL> x509 -req -days 1825 -in mydomain.csr -signkey mydomain.key -out mydomain.crt
iv)将以上所有内容创建一个PEM证书: 退出OpenSSL(OpenSSL> q)并转到证书位置,然后执行以下操作:
$ sudo cat mydomain.key mydomain.crt >> mylabs.com.pem
mylabs.com.pem是您的自签名证书。如果您的服务器支持https,则可以在https://192.168.0.1之类的请求中使用它。请记住检查https(443)的端口号。