SSL/TLS学习(十)

如果有应用程序需要用SSL/TLS来加密websocket连接,可以参考以下的方法。


第一步,下载cmake。

https://cmake.org/download/

百度网盘

https://pan.baidu.com/s/1kXmYALT


第二步,安装OpenSSL。

在OpenSSL的官网上只有源代码下载,并没有编译好的安装包。

https://www.openssl.org/

为了避免搭建编译环境的麻烦可以从wiki上下载编译后好的安装包。

https://wiki.openssl.org/index.php/Binaries

本文以32位版本的1.0.2n为例。

百度网盘

https://pan.baidu.com/s/1htYluYg

用缺省的安装路径和缺省的安装选项,安装完成后OpenSSL会在C盘OpenSSL-Win32目录下。


第三步,选一个库,以libwebsockets为例。

https://libwebsockets.org/

代码在github上

https://github.com/warmcat/libwebsockets/commits/v2.4-stable

百度网盘

https://pan.baidu.com/s/1qd--BDDhJ4EXODKGRwLhdQ

修改后可以在windows中编译的版本

https://pan.baidu.com/s/18nM3LgHmLwigZVMI8u6k3Q

编译libwebsockets需要vs2010。

 

第四步,生成一套证书给websocket。

把下面的内容拷贝到一个文本文件中,并命名为sign.cnf文件,放到C:\OpenSSL-Win32\bin中 。

[san_section]

subjectAltName= @san_names

[san_names]

DNS.1   = mytest

运行如下命令生成证书。

C:\OpenSSL-Win32\bin>openssl genrsa -out cawss.key 2048

C:\OpenSSL-Win32\bin>openssl req -new -x509 -nodes -sha512 -days 7300 -subj "/CN=WSS CA" -key cawss.key -out cawss.cer

C:\OpenSSL-Win32\bin>openssl genrsa -out libwebsockets-test-server.key.pem 2048

C:\OpenSSL-Win32\bin>openssl req -new -nodes -sha512 -key libwebsockets-test-server.key.pem -subj "/CN=mytest" -out libwebsockets-test-server.csr

C:\OpenSSL-Win32\bin>openssl x509 -req -sha512 -days 7300 -in libwebsockets-test-server.csr -set_serial 01 -CA cawss.cer -CAkey cawss.key -extensions san_section -extfile sign.cnf -out libwebsockets-test-server.pem


第五步,导入根证书cawss.cer,并且把libwebsockets-test-server.key.pem和libwebsockets-test-server.pem拷贝到C:\Program Files (x86)\libwebsockets\share\libwebsockets-test-server中。

 

第六步,运行WebSocketServer。

libwebsockets-test-echo.exe -s

有如下提示出现,就说明已经在使用SSL了。

NOTICE:  Using SSL mode

 

第七步,用一个简单的网页来测试WebSocket。

把以下内容拷贝到一个文本文件中,并命名为index.html,放入IIS中。

<!DOCTYPEHTML>

<html>

   <head>

   <meta charset="utf-8">

  <title>newbie(runoob.com)</title>

          <scripttype="text/javascript">

         function WebSocketTest()

         {

            if ("WebSocket" inwindow)

            {

               alert("Your browsersupports WebSocket!");

              

               // open web socket

               var ws = newWebSocket("wss://mytest:7681");

               

               ws.onopen = function()

               {

                  // Web Socket connected,using send() to send data

                  ws.send("senddata");

                 alert("sending...");

               };

               

               ws.onmessage = function (evt)

               {

                  var received_msg = evt.data;

                  alert("receiving...");

               };

               

               ws.onclose = function()

               {

                  // close websocket

                 alert("closing...");

               };

            }

           

            else

            {

              // browser does not support WebSocket

               alert("Your browser doesnot support WebSocket!");

            }

         }

      </script>

       

   </head>

   <body>

  

      <div id="sse">

         <ahref="javascript:WebSocketTest()">run WebSocket</a>

      </div>

     

   </body>

</html>

以上网页内容来自

http://www.runoob.com/html/html5-websocket.html

做了少量修改。

点击runWebSocket后弹出如下窗口,就成功了。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值