我已经向经纪人和客户提供了证书。该经纪人的平均价格为172.27.224.1。
当我试图与客户端连接时,会收到以下错误消息:
Error [ERR_TLS_CERT_ALTNAME_INVALID]: Hostname/IP does not match certificate's altnames: IP: 172.27.224.1 is not in the cert's list:
at new NodeError (node:internal/errors:371:5)
at Object.checkServerIdentity (node:tls:297:12)
at TLSSocket.onConnectSecure (node:_tls_wrap:1540:27)
at TLSSocket.emit (node:events:390:28)
at TLSSocket._finishInit (node:_tls_wrap:944:8)
at TLSWrap.ssl.onhandshakedone (node:_tls_wrap:725:12) {
reason: "IP: 172.27.224.1 is not in the cert's list: ",
host: '172.27.224.1',
cert: {
subject: [Object: null prototype] {
C: 'AU',
ST: 'Some-State',
O: '',
OU: '',
CN: '172.27.224.1'
},
issuer: [Object: null prototype] {
C: 'DE',
ST: 'Some-State',
O: '',
OU: '',
CN: '172.27.224.1'
},
[...]
这里有什么错误?ca.crt是自签署证书,为172.27.224.1发行,从172.27.224.1发行。client.crt是从172.27.224.1开始发布的,用于“用户名”。
这不管用吗?
用于生成证书的步骤:
openssl genrsa -des3 -out ca.key 2048
openssl req -new -x509 -days 1826 -key ca.key -out ca.crt
openssl genrsa -out client.key 2048
openssl req -new -out client.csr -key client.key
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 360
我使用客户端node.js v16.13和mqtt库。
发布于 2022-08-29 08:17:39
假设您正在使用OpenSSL创建CA证书,那么您可以这样做:
openssl req -x509 -nodes -newkey rsa:2048 -days 3650 -sha256 \
-keyout ca.key -out ca.crt -reqexts SAN -extensions SAN \
-subj '/CN=Broker Cert' \
-config <(cat /etc/pki/tls/openssl.cnf; printf "[SAN]\nsubjectAltName=IP:172.27.224.1")
这就假设您使用的是存储在openss.cnf
上的/etc/pki/tls/openssl.cnf
文件。
但是通常情况下,最好是创建一个CA证书,然后用它对服务器证书进行签名,因为这样可以使更改变得更容易,并且您不需要在需要更改某些内容时更新所有客户端。它还使颁发客户端证书更加容易。
请仍然使用正在执行SAN规则的编程语言和客户端库的详细信息更新问题。
https://stackoverflow.com/questions/73525517
复制相似问题