Javascript 使用autobahn的三种浏览器(Chrome、Edge、Firefox)和WebSocket的安全问题

Javascript 使用autobahn的三种浏览器(Chrome、Edge、Firefox)和WebSocket的安全问题,javascript,google-chrome,firefox,websocket,microsoft-edge,Javascript,Google Chrome,Firefox,Websocket,Microsoft Edge,我正在使用此示例中的高速公路服务器: 按照示例说明中提到的步骤,我生成了服务器密钥: openssl genrsa -out server.key 2048 openssl req -new -key server.key -out server.csr openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt openssl x509 -in server.crt -out server.pe

我正在使用此示例中的高速公路服务器:

按照示例说明中提到的步骤,我生成了服务器密钥:

openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
openssl x509 -in server.crt -out server.pem
我还有一个autobahn js客户端:

<html>
    <head>
        <script src="autobahn.min.js"></script>
        <script>
            var connection = new autobahn.Connection({url: 'wss://domain.com'});

connection.onopen = function (session) {

   // 1) subscribe to a topic
   function onevent(args) {
      console.log("Event:", args[0]);
   }
   session.subscribe('com.myapp.hello', onevent);

   // 2) publish an event
   session.publish('com.myapp.hello', ['Hello, world!']);

   // 3) register a procedure for remoting
   function add2(args) {
      return args[0] + args[1];
   }
   session.register('com.myapp.add2', add2);

   // 4) call a remote procedure
   session.call('com.myapp.add2', [2, 3]).then(
      function (res) {
         console.log("Result:", res);
      }
   );
};

connection.open();
</script>
    </head>
    <body></body>
</html>
Microsoft Edge

WebSocket connection to 'wss://domain/' failed: Error in connection establishment: net::ERR_INSECURE_RESPONSE
(anonymous) @   autobahn.min.js:196
SCRIPT12045: WebSocket Error: Network Error 12045, The certificate authority is invalid or incorrect
Mozilla Firefox

WebSocket connection to 'wss://domain/' failed: Error in connection establishment: net::ERR_INSECURE_RESPONSE
(anonymous) @   autobahn.min.js:196
SCRIPT12045: WebSocket Error: Network Error 12045, The certificate authority is invalid or incorrect
在Firefox的案例中,服务器抱怨客户端的ca,并显示以下消息:

2017-11-15T09:04:38+0000 Connection to/from tcp4:<ip here> lost (<class 'OpenSSL.SSL.Error'>): [('SSL routines', 'ssl3_read_bytes', 'tlsv1 alert unknown ca')])
2017-11-15T09:04:38+0000 _connectionLost: [Failure instance: Traceback: <class 'OpenSSL.SSL.Error'>: [('SSL routines', 'ssl3_read_bytes', 'tlsv1 alert unknown ca')]
2017-11-15T09:04:38+0000与tcp4的连接:丢失():[(“SSL例程”、“ssl3_读取字节”、“tlsv1警报未知ca”))
2017-11-15T09:04:38+0000 _connectionLost:[故障实例:回溯::[('SSL例程','ssl3_读取字节','tlsv1警报未知ca')]

是否使用“openssl”生成密钥对于浏览器来说,工具不够好?我如何解决这个问题?为什么Firefox不抱怨服务器的安全性?

问题是浏览器不接受自签名证书。这很好,否则任何人都可以冒充拥有自签名证书的任何域。你需要说服浏览器接受证书,w这一点在其他地方已被广泛讨论。如果您的意思是配置浏览器以接受我的证书,则这不是一个选项,因为客户端将被许多非技术用户使用。它必须是服务器/客户端/证书中的配置自签名证书显然只适用于本地开发/测试。要将其部署到wid对于一系列用户,您必须获得一个真正的证书。您确信这是Chrome&Edge的唯一问题吗?SSL配置(即版本)在我们的情况下也是一个问题吗?错误都与CA(证书颁发机构)有关,这显然就是这个问题。问题是浏览器不接受自签名证书。这很好,否则任何人都可以冒充拥有自签名证书的任何域。您需要说服浏览器接受证书,这在其他地方已被广泛讨论过。如果您指的是配置浏览器以接受我的证书,请te,这不是一个选项,因为客户端将被许多非技术用户使用。它必须是服务器/客户端/证书中的配置。自签名证书显然只适用于本地开发/测试。要将其部署到广泛的用户,您必须获得一个真正的证书。您确信这是唯一的问题我们在Chrome&Edge上遇到的lem?SSL配置(即版本)在我们的案例中也是一个问题吗?错误都与CA(证书颁发机构)有关,这显然就是这个问题。