关于Nginx配置SSL证书(Https)和WebSocket的wss

本文介绍了如何在本地环境中使用Nginx配置SSL自签证书以实现Https,并结合WebSocket的wss进行安全连接。首先,通过OpenSSL生成SSL证书,接着配置Nginx以使用这些证书,并修改nginx.conf文件。最后,完成配置后,测试访问确认Nginx成功支持了Https和wss连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. 生成SSL自签证书

       自签证书就是自己生成的证书,免费的,不支持部署浏览器的,支持浏览器的就是收费的,需要购买,这里因为是本地测试,所以就用的自签证书,买的证书可以跳过证书生成部分.

  1.  安装OpenSSL

          OpenSSL是生成SSL的工具,这里是在Win10下安装的,下载的windows 64位的,直接下一步安装.然后在环境变量的path添加OpenSSL安装的bin路径即可 

          下载链接

      2. 开始生成证书

  •  生成RSA私钥

        des3算法,1024位强度,server.key 秘钥文件名

openssl genrsa -des3 -out server.key 1024
  • 生成CSR(证书签名请求)
openssl req -new -key server.key -out server.csr

 注意 :Common Name必须和域名保持一致

 由于是在本机测试所以也没有域名,但是可以通过修改hosts文件模拟域名

 hosts文件在C:\Windo

### WebSocket WSS协议配置SSL证书设置指南 WebSocket Secure (WSS) 是一种基于 SSL/TLS 的安全通信协议,用于加密客户端服务器之间的数据传输。为了正确配置 WSS 协议并设置 SSL 证书,需要从以下几个方面入手: #### 1. **生成或获取 SSL 证书** 在配置 WSS 前,首先需要获得有效的 SSL 证书。可以使用自签名证书进行测试,或者购买受信任的商业证书。 - **生成自签名证书**(适用于测试环境): ```bash keytool -genkeypair -alias mycert -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore mycert.p12 -validity 3650 ``` 上述命令会生成一个名为 `mycert.p12` 的密钥库文件,有效期为 10 年。 - **商业证书申请**:可以通过 Let's Encrypt、DigiCert 等机构申请正式的 SSL 证书。 #### 2. **Spring Boot 项目中的 WSS 配置** 在 Spring Boot 应用中启用 WSS,需确保已添加必要的依赖,并配置 SSL 相关参数。 - 在 `pom.xml` 中添加以下依赖以支持 WebSocket SSL: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> ``` - 配置 SSL: 在 `application.properties` 或 `application.yml` 中指定 SSL 密钥库路径密码: ```properties server.port=8443 server.ssl.key-store=classpath:mycert.p12 server.ssl.key-store-password=your_password server.ssl.key-store-type=PKCS12 server.ssl.key-alias=mycert ``` - 启用 WebSocket 支持: 创建一个配置类来注册 WebSocket 处理器: ```java @Configuration @EnableWebSocketMessageBroker public class WebSocketConfig implements WebSocketMessageBrokerConfigurer { @Override public void registerStompEndpoints(StompEndpointRegistry registry) { registry.addEndpoint("/ws").setAllowedOriginPatterns("*").withSockJS(); } @Override public void configureMessageBroker(MessageBrokerRegistry registry) { registry.enableSimpleBroker("/topic"); registry.setApplicationDestinationPrefixes("/app"); } } ``` #### 3. **Nginx 反向代理配置 WSS** 如果前端请求经过 Nginx 转发到后端服务,则需要在 Nginx配置 WSS 支持。 - 示例 Nginx 配置: ```nginx upstream websocket_backend { server backend_server_ip:8443; } server { listen 443 ssl http2; server_name your_domain; ssl_certificate /path/to/your/fullchain.pem; ssl_certificate_key /path/to/your/privkey.pem; location /ws/ { proxy_pass https://websocket_backend; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 86400s; proxy_ssl_verify on; } } ``` #### 4. **Fleck WebSocket 服务器的 WSS 配置** 对于 .NET 平台上的 Fleck 库,可以在实例化 WebSocketServer 时加载证书。 - 示例代码: ```csharp var server = new WebSocketServer("wss://0.0.0.0:8443"); server.Certificate = new X509Certificate2("path_to_cert.pfx", "password"); server.Start(socket => { socket.OnMessage = message => Console.WriteLine(message); }); ``` #### 5. **防火墙与端口开放** 确保服务器所在的网络环境中,相关端口(如 8443 或 443)已被正确开放[^3]。如果使用的是云服务提供商(如 AWS、阿里云),还需检查其安全组规则是否允许流量通过。 #### 6. **日志与调试** 在部署完成后,建议接入日志框架(如 Log4Net、SLF4J)以便监控连接状态及排查问题。遇到连接失败等问题时,应优先检查 Nginx 错误日志以及后端 WebSocket 服务的日志输出[^4]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shiro to kuro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值