• 第0章:HslCommunication简介
  • V12版本特别说明
  • Java版本特别说明
  • Python版本特别说明
  • 第1章:学前必备基础
    • 基础数据类型的说明
    • 程序的本质
    • Socket长短连接
    • 控制台,winform,wpf
    • 用户界面和后台线程
    • 从代码到面向对象编程
    • 了解和使用反射和表达式树
    • C#语言的利器《泛型》
  • 第2章:HSL基础功能说明
    • 如何安装HSL
    • 如何激活HSL
    • OperateResult类说明
    • HSL扩展方法汇总
    • 日志记录功能
    • 统计日志功能
    • 数据的加密解密
  • 第3章:连接配置及地址说明
    • Modbus地址及特别说明
    • 三菱PLC的连接配置
    • 西门子PLC的连接配置
    • 欧姆龙PLC的连接配置
    • 倍福PLC的连接配置
    • 罗克韦尔PLC一些说明
  • 第4章:读写PLC进阶
    • 快速了解使用HSL
    • 多种数据类型的读写
    • 字符串及中文的读写
    • 原始字节及高性能读写
    • HSL的长短连接实现
    • 实时读取刷新数据
    • 读取上升沿,下降沿
    • 实时曲线的演示
    • 实时判断PLC是否在线
    • PLC判断上位机是否在线
    • 管道的使用以及通信锁
    • 基于HSL扩展自定义协议
    • 使用MQTT中转时读取PLC
    • 正确使用多线程
    • 正确的使用异步
    • 优化串口通信的性能
    • 当使用Lora访问设备时
    • 从云服务器访问本地PLC
    • 另一种MOXA串口驱动
  • 第5章:Mqtt服务器客户端
    • 连接和安全认证
    • 发布订阅模式
    • 远程RPC接口实现及调用
    • 文件传输实现
    • 通过RPC远程读写PLC实现
  • 第6章:HTTP服务器及Websocket
    • HTTP服务器实现及验证
    • 远程RPC接口实现及调用
    • 使用WebApi访问PLC
    • 使用Https服务
    • Websocket实现web数据更新
  • 第7章:其他特殊协议说明
    • SecsGem协议使用
  • 第8章:高级技巧
    • CS架构客户端自动更新实现
    • 运行在Linux上
    • VC++调用HSL实现通信
    • Python调用C#版本HSL
    • 使用证书来控制API接口权限
    • Demo程序实现远程测试调试
    • 安卓手机APP采集
    • 虚拟PLC服务器的妙用
    • 一些辅助调试的属性
    • 一些疑难杂症的经验总结

使用Https服务

如果想要在本章节里的启用Https还是有点麻烦的,如果不怕麻烦,可以参考本文下面的内容,部分内容参考网址: https://blog.csdn.net/shijinglin/article/details/100568360 本文在之上进行了二次加工处理。

安装OpenSSL

网址:https://slproweb.com/products/Win32OpenSSL.html ,登录就可以看到下载地址了,或是直接点击这个连接下载: https://slproweb.com/download/Win64OpenSSL_Light-3_3_1.msi 下载完成之后,双击安装,记住安装的路径就可以了,这么就不进行过多的说明了。

生成证书

接下来要做一个非常重要的步骤,就是生成证书,所以先执行管理员CMD,然后执行下面的命令来找到正确的路径

cd /d C:\Program Files\OpenSSL-Win64\bin

创建CA私钥

openssl genrsa -des3 -out D:\cert\ca.key 4096

输入CA密码,两次后,然后生成CA的自签名证书 (其实CA证书就是一个自签名证书) 期中 -days 为证书有效期(单位:天)

openssl req -new -x509 -days 36500 -key D:\cert\ca.key -out D:\Cert\ca.crt

输入上面设置的CA密码,然后提示让你输入下面的信息:

    
 Country Name (2 letter code) [AU]:                                           CN            --国家
 State or Province Name (full name) [Some-State]:                             CN            --地区
 Locality Name (eg, city) []:                                                 CH            --城市
 Organization Name (eg, company) [Internet Widgits Pty Ltd]:                  公司名称
 Organizational Unit Name (eg, section) []:                                   部门名称
 Common Name (e.g. server FQDN or YOUR name) []:                              域名/IP (应该是服务器的证书所在电脑的ip地址,这里我输入了127.0.0.1)
 Email Address []:                                                            (你的email地址)
    
    

生成客户端证书私钥

openssl genrsa -des3 -out D:\Cert\localhost.key 4096

需要签名的对象(服务端)生成证书签名请求

openssl req -new -key D:\Cert\localhost.key -out D:\Cert\localhost.csr

输入上面设置的客户端密码,然后提示让你输入下面的信息: (这里注意证书签名请求当中的Common Name很关键,必须是url中的ip地址/或域名)

    
Country Name (2 letter code) [AU]:                                      CN
State or Province Name (full name) [Some-State]:                        CN
Locality Name (eg, city) []:                                            CN
Organization Name (eg, company) [Internet Widgits Pty Ltd]:xxx         --组织名称
Organizational Unit Name (eg, section) []:xxx                          --单位、部门,可同组织名称
Common Name (e.g. server FQDN or YOUR name) []:localhost               --很关键,必须是url中的ip地址/或域名  这里我输入的127.0.0.1
Email Address []:

Please enter the following 'extra' attributes 
to be sent with your certificate request   -- 一些额外的信息
A challenge password []: xxx                       --证书交换密码(可省略)
An optional company name []:xx                     --公司名称(可省略)
    
    

用之前创建的CA证书给步骤4.4生成的签名请求进行签名

openssl x509 -req -days 365 -in D:\Cert\localhost.csr -CA D:\Cert\ca.crt -CAkey D:\Cert\ca.key -set_serial 01 -out D:\Cert\localhost.crt

根据提示输入 CA 密码,期中 -days 为证书有效期(单位:天),然后进行合成pfx操作,注意,执行下面的命令后,先输入客户端密码,然后输入两次pfx密钥

openssl pkcs12 -export -out D:\Cert\localhost.pfx -inkey D:\Cert\localhost.key -in D:\Cert\localhost.crt
安装证书

然后选择当前用户,然后一直下一步,直到提示输入密钥,就是 pfx 文件生成时让输入的密钥,就是下图

然后就是一路点击下一步,安装完成后,我们还需要拿到一个指纹数据,如下图:

然后我们还需要拿到一个我们C#程序的GUID信息,例如此处是:

信息都拿到了,然后去执行端口绑定命令,另起一个管理员CMD界面,执行下面的命令,这个port就是我们等会要用的端口12345, certhash就是指纹,appid 就是GUID

    
        netsh http add sslcert ipport=0.0.0.0:12345 certhash=dec44fd70633146ce3f0e0f4b91d42d491f9bf8b appid={3878075b-b8d7-4090-b094-29622581442f} clientcertnegotiation=enable
    
    
启动DEMO程序

准备工作终于全部做完了,现在可以打开demo程序了

然后我们就算用真正的浏览器去打开地址看看,也是可以的了

这时候就算我们用demo自身的客户端去测试也是可以的

本篇文章目录 在线学习人数:0