单向认证 是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双向认证的握手过程,代表环境搭建成功

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐