apache / apache/pulsar-client-node

不使用证书的情况下调用ssl的url,服务无法连接

Ouverte
#382 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
C++
Étoiles
164
Forks
98
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

以下是node代码,在java中是可以通过```
PulsarClient client = PulsarClient.builder().serviceUrl(brokerServerUrl).allowTlsInsecureConnection(true)
.authentication(new IoTAuthentication(iotAccessId, iotSecretKey)).build();
Consumer consumer = client.newConsumer(Schema.STRING).topic(String.format("%s/iot/event", iotAccessId))
.subscriptionName(subscriptionName).subscriptionType(SubscriptionType.Failover)
.autoUpdatePartitions(Boolean.FALSE).subscribe();
```
这种方式来跳过ssl证书的,在下面node中我也加入了tlsAllowInsecureConnection: true,
tlsValidateHostname: false,这两个参数但是无法连接到服务

`const Pulsar = require('pulsar-client');
const crypto = require('crypto');
const iotAccessId = "yGmZyJnpqPPIGwzj1564";
const iotSecretKey="b9fab8817fa64f4ab6424d6a7035d2e7";
const brokerSSLServerUrl = "pulsar+ssl://iot-north-mq.heclouds.com:6651/";
const iotSubscriptionName="yGmZyJnpqPPIGwzj1564-sub";

const token = JSON.stringify({
tenant: iotAccessId,
password: sha256(iotAccessId + sha256(iotSecretKey)).substring(4, 20)
});

(async () => {
try {
console.log("token:", token);
// Create a client
let authenticationToken = new Pulsar.AuthenticationToken({
token: token
});

Pulsar.Client.setLogHandler((level, file, line, message) => {
console.log('[%s][%s:%d] %s', Pulsar.LogLevel.toString(level), file, line, message);
});

const client = new Pulsar.Client({
serviceUrl: brokerSSLServerUrl,
authentication: authenticationToken,
tlsAllowInsecureConnection: true,
tlsValidateHostname: false,
});

console.log("client:", client);

// Create a consumer
const consumer = await client.subscribe({
topic: `${iotAccessId}/iot/event`,
// topic: 'persistent://yGmZyJnpqPPIGwzj1564/iot/event-partition-0',
subscription: iotSubscriptionName,
subscriptionType: 'Failover'
});

console.log("consumer:", consumer);

// Receive the message
const msg = await consumer.receive();
console.log(msg.getData().toString());
consumer.acknowledge(msg);

await consumer.close();
await client.close();
} catch (error) {
console.error("An error occurred:", error.message);
console.error(error.stack);
}
})();

function sha256(data) {
return crypto.createHash('sha256').update(data, 'utf8').digest('hex');
}`

最下面是报错信息```
[INFO][Client:86] Subscribing on Topic :yGmZyJnpqPPIGwzj1564/iot/event
[INFO][ClientConnection:187] [ -> pulsar+ssl://iot-north-mq.heclouds.com:6651] Create ClientConnection, timeout=10000
[INFO][ConnectionPool:124] Created connection for pulsar+ssl://iot-north-mq.heclouds.com:6651-pulsar+ssl://iot-north-mq.heclouds.com:6651-0
[INFO][ClientConnection:403] [10.10.80.213:63773 -> 218.201.45.7:6651] Connected to broker
[ERROR][ClientConnection:1318] [10.10.80.213:63773 -> 218.201.45.7:6651] Connection closed with ConnectError (refCnt: 2)
[INFO][ConnectionPool:141] Remove connection for pulsar+ssl://iot-north-mq.heclouds.com:6651-pulsar+ssl://iot-north-mq.heclouds.com:6651-0
[ERROR][ClientImpl:507] Error Checking/Getting Partition Metadata while Subscribing on persistent://yGmZyJnpqPPIGwzj1564/iot/event -- ConnectError
[INFO][ClientConnection:275] [10.10.80.213:63773 -> 218.201.45.7:6651] Destroyed connection to pulsar+ssl://iot-north-mq.heclouds.com:6651-0
An error occurred: Failed to create consumer: ConnectError
Error: Failed to create consumer: ConnectError
```

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

Commencez par le constructeur du client Node et ses options tlsAllowInsecureConnection et tlsValidateHostname, puis reproduisez l’exemple d’abonnement fourni avec l’URL de service pulsar+ssl et la journalisation du client activée. Comparez l’échec de connexion et l’échec des métadonnées de partition avec le comportement de Java ; c’est terminé lorsque le client Node peut se connecter et créer le consumer sans ConnectError lorsque la validation du certificat est désactivée.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
javascript, node.js
Domaine
distributed-systems
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.