我正在为嵌入式Linux设备添加HTTPS支持.我尝试使用以下步骤生成自签名证书:
openssl req -new > cert.csr
openssl rsa -in privkey.pem -out key.pem
openssl x509 -in cert.csr -out cert.pem -req -signkey key.pem -days 1001
cat key.pem>>cert.pem
Run Code Online (Sandbox Code Playgroud)
这有效,但我在使用Google Chrome时遇到了一些错误:
这可能不是您要找的网站!
该网站的安全证书不受信任!
我错过了什么吗?这是构建自签名证书的正确方法吗?
我最近设置了一个EC2实例(在没有负载均衡器的VPC中),不可否认配置有点奇怪,但它是我们运行的Web应用程序所需要的.
Web服务器(在Haskell中)在端口4433上运行(标准端口是为Apache实例保留的),并且正在接收从另一个系统广播的UDP数据包.我有很多端口是开放的(仅在测试期间),如此处所示(来自安全组):
Custom TCP Rule 4433 tcp 0.0.0.0/0 ?
Custom TCP Rule 8080 tcp 0.0.0.0/0 ?
SSH 22 tcp 0.0.0.0/0 ?
HTTP 80 tcp 0.0.0.0/0 ?
HTTPS 443 tcp 0.0.0.0/0 ?
Custom UDP Rule 30090 udp 0.0.0.0/0 ?
Custom UDP Rule 30089 udp 0.0.0.0/0 ?
Run Code Online (Sandbox Code Playgroud)
TCP套接字的JavaScript请求在同一端口上设置套接字(使用分配给AWS公共IP的URL),这是请求返回错误的位置:
与'wss:// [URL]:4433/projects/socket'的WebSocket连接失败:WebSocket打开握手被取消.
将套接字绑定到0.0.0.0会导致相同的错误.
为了启动Haskell Web服务器,我必须引用AWS提供的内部 IP,因为它在引用弹性IP服务提供的公共 IP 时不会运行.想到这就是问题出现的地方我把套接字请求改成了这个......
wss://[internal ip]:4433/projects/socket
Run Code Online (Sandbox Code Playgroud)
这会改变错误:
与'wss:// [内部IP]:4433/projects/socket'的WebSocket连接失败:连接建立错误:net :: ERR_CONNECTION_REFUSED
这个错误对我来说很有意义,因为外部世界无法获得内部IP.
我在AWS上的websockets上阅读的所有内容都涉及ELB(Elastic Load Balancer),而我不需要其中的一个.我已经尝试了所有当前发布的答案中的所有内容(有些问题甚至没有得到答案),但无济于事.我还设置了亚马逊(近24小时前)的支持案例,该案例尚未收到回复.
导航到http://[URL]:4433/projects/socket'WebSocket Available',其中URL是我们希望使用的URL以及AWS提供的公共DNS.
运行netstat -plunt显示以下内容:
tcp 0 0 0.0.0.0:22 …Run Code Online (Sandbox Code Playgroud) 我在我的实时服务器上配置了Websocket,我在实时服务器上使用SSL.当我在localhost上使用以下代码时,websockets很好.
ws://localhost:8080/server.php
Run Code Online (Sandbox Code Playgroud)
将文件移动到实时服务器后,我将代码更改为以下内容
wss://IP:PORT/server.php
Run Code Online (Sandbox Code Playgroud)
我已经为Web套接字创建了一个单独的端口,并在防火墙TCP IN和OUT上配置.但是,我在控制台上收到以下错误
WebSocket连接到............失败:连接建立错误:net :: ERR_SSL_PROTOCOL_ERROR
谁能建议我解决这个问题的一些解决方案
为了测试 JavaScript / html5 应用程序,我使用 node.js 和ws 包创建了一个本地 WebSocketServer 。我想使用带有 SSL/TLS 的安全 websockets (wss)。
密钥和证书是由 OpenSSL 在本地创建用于测试目的(自签名证书)。
客户端只是尝试使用本机 WebSocket 对象连接到(本地)https 服务器:
var ws = new Websocket('wss://localhost:8080');
Run Code Online (Sandbox Code Playgroud)
问题是,没有浏览器(Firefox、Chrome、Edge)可以连接到服务器,它们都给我不同的错误消息。
火狐:
Firefox 无法连接到 wss: // localhost: 8080 / 的服务器。
铬合金:
ws_client.js:7 WebSocket 连接到“wss://localhost:8080/”失败:连接建立错误:net::ERR_CERT_AUTHORITY_INVALID
边缘:
SCRIPT12017:SCRIPT12017:WebSocket 错误:SECURITY_ERR,不允许跨区域连接
我在 OpenSSL(轻量级,最新版本)中创建了证书和密钥,如下所示:
openssl req -new -x509 -nodes -out server.crt -keyout server.key
Run Code Online (Sandbox Code Playgroud)
我检查了几乎所有关于这个(和类似)主题的问题,例如这个问题,但没有一个可以提供解决方案。
请不要将此问题标记为重复,因为所有类似的问题都包含略有不同的问题!
服务器代码:
var fs = require('file-system');
var pkey = fs.readFileSync('server.key', 'utf8');
var crt = fs.readFileSync('server.crt', 'utf8');
var …Run Code Online (Sandbox Code Playgroud) ssl ×3
websocket ×3
javascript ×2
amazon-ec2 ×1
certificate ×1
networking ×1
node.js ×1
openssl ×1