一、HTTPS配置前准备
1. 必要条件
项目 | 要求 | 检查方法 |
---|---|---|
平台版本 | SkeyeVSS v3.2+ | ./skeye-server --version |
证书格式 | PEM格式 | file server.crt |
端口开放 | 443/TCP | netstat -tuln | grep 443 |
域名绑定 | 有效DNS解析 | nslookup yourdomain.com |
2. 证书获取方式
- 商用证书:DigiCert/Symantec/GeoTrust
- 免费证书:Let’s Encrypt
- 测试证书:OpenSSL自签名(本指南演示)
二、OpenSSL生成测试证书
1. 生成私钥和CSR
# 生成2048位RSA私钥
openssl genrsa -out skeye.key 2048
# 创建CSR(Common Name填写实际域名或IP)
openssl req -new -key skeye.key -out skeye.csr -subj "/C=CN/ST=Beijing/L=Beijing/O=YourCompany/CN=skeye.example.com"
2. 生成自签名证书
# 有效期365天
openssl x509 -req -days 365 -in skeye.csr -signkey skeye.key -out skeye.crt
# 合并证书链(如需)
cat skeye.crt skeye.key > skeye.pem
三、SkeyeVSS HTTPS配置步骤
1. 配置文件修改
<!-- conf/gb28181.xml -->
<GB28181Config>
<SIP>
<EnableHTTPS>true</EnableHTTPS>
<SSLCertFile>/etc/skeye/certs/skeye.pem</SSLCertFile>
<SSLKeyFile>/etc/skeye/certs/skeye.key</SSLKeyFile>
<!-- 密码如有 -->
<SSLKeyPassword>yourpassword</SSLKeyPassword>
</SIP>
</GB28181Config>
2. Nginx反向代理配置(可选)
server {
listen 443 ssl;
server_name skeye.example.com;
ssl_certificate /etc/nginx/certs/skeye.crt;
ssl_certificate_key /etc/nginx/certs/skeye.key;
ssl_protocols TLSv1.2 TLSv1.3;
location / {
proxy_pass http://127.0.0.1:5060;
proxy_set_header Host $host;
}
}
3. 防火墙设置
# 开放HTTPS端口
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
service iptables save
# 或使用firewalld
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
四、HTTPS功能验证
1. SIP信令测试
# 使用openssl测试SIP over TLS
openssl s_client -connect skeye.example.com:5061 -showcerts
# 预期输出应包含:
# SSL handshake completed
# Certificate chain
2. 视频流获取测试
GB/T28181 HTTPS流地址格式:
https://skeye.example.com:443/live/34020000001320000001@34020000002000000001
测试命令:
# 使用ffmpeg测试HTTPS流
ffmpeg -i "https://skeye.example.com/live/34020000001320000001" \
-c copy -f flv -y test.flv
# 使用VLC验证
vlc https://skeye.example.com:443/live/34020000001320000001
五、常见问题解决
1. 证书错误处理
错误提示 | 解决方案 |
---|---|
SSL handshake failed | 检查证书路径权限:chmod 644 skeye.* |
self signed certificate | 客户端添加信任:curl --cacert skeye.crt |
certificate has expired | 更新证书:openssl x509 -enddate -noout -in skeye.crt |
2. 性能优化建议
# conf/tuning.yaml
ssl:
session_cache: on
session_timeout: 10m
buffer_size: 16k
ciphers: "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256"
六、国标级联HTTPS配置
1. 上级平台注册
<!-- 下级平台配置 -->
<RegisterInfo>
<ServerID>34020000002000000002</ServerID>
<Protocol>GB/T28181-2016</Protocol>
<Transport>HTTPS</Transport>
<SIPDomain>skeye.example.com</SIPDomain>
<Port>443</Port>
</RegisterInfo>
2. Wireshark抓包分析
过滤条件:
tcp.port == 443 && (ssl.handshake || ssl.record)
七、生产环境建议
-
证书管理:
- 使用ACME自动续签(Let’s Encrypt)
certbot renew --webroot -w /var/www/skeye
-
安全加固:
ssl_prefer_server_ciphers on; ssl_stapling on; ssl_stapling_verify on;
-
监控指标:
- SSL握手成功率
- 平均加密/解密耗时
- HTTPS流量占比
八、测试报告样例
HTTPS性能测试结果:
测试项 | HTTP | HTTPS | 性能损耗 |
---|---|---|---|
SIP注册 | 120ms | 180ms | +50% |
视频起播 | 1.2s | 1.5s | +25% |
并发路数 | 500 | 420 | -16% |
通过上述配置,SkeyeVSS可实现:
- 符合《GB/T 28181-2016》附录M的TLS安全要求
- 支持国标A级认证检测
- 与企业PKI/CA体系无缝集成