我已經向經紀人和客戶提供了證書。經紀人在 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 庫。
uj5u.com熱心網友回復:
假設您使用 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://www.uj5u.com/qukuanlian/503758.html
