通过HTTPS连接TR069服务器(TLS双向认证)
·
单向认证 是SSL/TLS中最常见、最基础的认证模式,TLS还有双向认证,在双向认证中,客户端需要验证服务器的身份,同时服务器也需要验证客户端的身份。双向认证的安全性更好。
1.制作双向认证证书:
1.1 ACS服务器和设备客户端涉及的证书:
| 角色 | 需要预置的证书 | 是否包含私钥 | 主要目的 |
|---|---|---|---|
| 服务器 | 服务器证书链 + 服务器私钥 | 是(服务器私钥) | 证明自己是服务器 |
| 客户端CA的根证书 | 否 | 验证客户端发来的证书是否合法 | |
| 客户端 | 客户端证书链 + 客户端私钥 | 是(客户端私钥) | 证明自己是合法客户端 |
| 受信任的根证书库 | 否 | 验证服务器发来的证书是否合法 |
1.2 制作证书
📜 第一步:创建根CA证书
根CA是整个信任链的起点,我们需要先生成它。
# 1. 生成根CA的私钥 (使用ECC算法,更高效;也可用RSA) # prime256v1 是一种常用的椭圆曲线 [citation:1] openssl ecparam -out ca.key -name prime256v1 -genkey # 2. 生成根CA证书 (自签名,有效期设长一点,比如3650天≈10年) # 期间会提示输入国家、组织等信息,"Common Name" 可以填 "My Custom Root CA" [citation:1][citation:3][citation:5] openssl req -x509 -new -sha256 -days 3650 -key ca.key -out ca.crt
🖥️ 第二步:签发服务器证书
服务器证书的关键是,它的“Common Name”必须是你服务器的域名(如 www.example.com)。
# 1. 生成服务器证书的私钥 openssl ecparam -out server.key -name prime256v1 -genkey # 2. 生成证书签名请求 (CSR) # 这里的 Common Name (CN) 必须填写你的服务器域名,例如 www.myserver.com [citation:1][citation:6] openssl req -new -sha256 -key server.key -out server.csr # 3. 使用根CA的证书和私钥,对服务器CSR进行签名,生成服务器证书 openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365 -sha256
👤 第三步:签发客户端证书
客户端证书的“Common Name”通常用来标识用户或设备,比如用户名 client01 。
# 1. 生成客户端证书的私钥 openssl ecparam -out client.key -name prime256v1 -genkey # 2. 生成客户端的证书签名请求 (CSR) # 这里的 Common Name (CN) 可以填用户名或设备ID,例如 client01 [citation:4] openssl req -new -sha256 -key client.key -out client.csr # 3. 同样使用根CA的证书和私钥,对客户端CSR进行签名,生成客户端证书 openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 365 -sha256
2. 配置ACS Server支持TLS双向认证:

3. 配置TR069客户端支持TLS双向认证:
导入客户端需要的CA、客户端证书、客户端密钥到设备上,然后配置设备的TR069配置:
uci set cwmp.acs.ssl_capath="/etc/icwmpd/ca.crt"
uci set cwmp.cpe.client_cert_path="/etc/icwmpd/client.crt"
uci set cwmp.cpe.client_key_path="/etc/icwmpd/client.key"
4. 查看结果
设备成功上线ACS Server,抓包查看到TLS双向认证的握手过程,代表环境搭建成功

更多推荐
所有评论(0)