Error, sslv3 alert handshake failure

Dear all, I have the following error in my https request node "sslv3 alert handshake failure" when I inject from TimeStamp.error

I edited the title of your post to describe the error. as 95% of posts are about someone needing help

1 Like

Does the url you are requesting work if you use it in a browser? If yes then post the failing flow here please.

Have you tried a google search for the error message in the original question? I can find lots of results with various suggestions.

For example, using http where you should be using https (or the other way around) in the url.

it's a secured site so 'HTTP' is suppose to be used and the same url works fine with scripting languages for API calls

without passing access token in the url it won't work in browser

Post the failing flow and a code snippet from the working scripting language call.

Here is my python scripting code for POST method,

import requests
import json

#Disable warnings

apic_em_ip = ""

def get_token(url):

#Payload contains authentication information
payload = { "username": "*********", "password": "**********" }

#Header information
headers = {"content-type" : "application/json"}

#Combine URL, API call and parameters variables
response =, data=json.dumps(payload), headers=headers).json()

# Return authentication token from respond body
return response["response"]["serviceTicket"]

def main():

#Assign obtained authentication token to a variable. Provide APIC-EM's URL address
auth_token = get_token(apic_em_ip)
print("Service Ticket:", auth_token)

if name == "main":

I have attached the error flow screenshot along with this reply

And the failing flow?

What is failing flow? what am i suppose to provide.. please explain

I don't think providing a full flow here will be instructive. This will come down to the specific details of the url you are using the in the HTTP Request node.

Have you looked at the google search results for the original error message?

You have a node-red flow that you think should work but doesn't. If possible reduce that to a minimum for test purposes, possibly just an inject node and the request node and a debug node to show the result if necessary. Then mark those nodes and Export them to the clipboard using Ctrl+E or Export from the the menu. Then come back here and import it into a message following the technique described in:

[{"id":"52faf02a.9ab0d","type":"tab","label":"Flow 1","disabled":false,"info":""},{"id":"b2127f29.e8e8b","type":"inject","z":"52faf02a.9ab0d","name":"timestamp","topic":"","payload":"","payloadType":"date","repeat":"10","crontab":"","once":false,"onceDelay":0.1,"x":116,"y":60,"wires":[["8cd17c9c.ac2d"]]},{"id":"8cd17c9c.ac2d","type":"function","z":"52faf02a.9ab0d","name":"spark","func":"msg.headers = {\n\"authorization\": \"Bearer ZjljZTEyOGUtNjExYS00MjEwLWE0MjItNzA0MmQxMDlhN2UzNmJiODJlODgtYzEw_PF84_consumer\",\n\"content-type\": \"application/json\",\n\"cache-control\": \"no-cache\",\n\"verify\":\"False\",\n        }\n\nreturn msg;","outputs":1,"noerr":0,"x":252,"y":100,"wires":[["175a4f2f.18dd61"]]},{"id":"175a4f2f.18dd61","type":"http request","z":"52faf02a.9ab0d","name":"Spark room","method":"GET","ret":"obj","paytoqs":false,"url":"","tls":"","proxy":"","authType":"basic","x":410,"y":100,"wires":[["5d1c613.7d447a"]]},{"id":"5d1c613.7d447a","type":"switch","z":"52faf02a.9ab0d","name":"person check","property":"payload.items[0].personEmail","propertyType":"msg","rules":[{"t":"eq","v":"","vt":"str"},{"t":"neq","v":"","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":600,"y":100,"wires":[["6cf39f92.f8533"],["5fa515d7.05b70c"]]},{"id":"6cf39f92.f8533","type":"debug","z":"52faf02a.9ab0d","name":"","active":true,"tosidebar":true,"console":true,"tostatus":false,"complete":"payload","targetType":"msg","x":801,"y":99,"wires":[]},{"id":"5fa515d7.05b70c","type":"switch","z":"52faf02a.9ab0d","name":"input check ","property":"payload.items[0].text","propertyType":"msg","rules":[{"t":"eq","v":"Get Device Status","vt":"str"},{"t":"neq","v":"Get Device Status","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":111,"y":184,"wires":[["5425180.61a36e8"],[]]},{"id":"5425180.61a36e8","type":"function","z":"52faf02a.9ab0d","name":"apic login","func":"msg.payload = {\"username\": \"*******\", \"password\": \"******\"};\nreturn msg;\n","outputs":1,"noerr":0,"x":324,"y":184,"wires":[["f9b9c7ff.deb0c8"]]},{"id":"f256dd76.f64a9","type":"debug","z":"52faf02a.9ab0d","name":"Output","active":true,"tosidebar":true,"console":true,"tostatus":false,"complete":"payload","targetType":"msg","x":748,"y":183,"wires":[]},{"id":"f9b9c7ff.deb0c8","type":"http request","z":"52faf02a.9ab0d","name":"Ticket","method":"POST","ret":"obj","paytoqs":false,"url":"","tls":"","proxy":"","authType":"basic","x":533,"y":184,"wires":[["f256dd76.f64a9"]]}]

* List item`Preformatted text`Preformatted text

Go back and read how to post it again, it is not currently importable. You can edit the previous post.

The GET is failing, you haven't posted the working python script for the GET.

i'm using post method to pass username and password as parameters to generate access token. followed by post method i can use GET method.

The GET fails because it needs a valid access token. If it works in the script but not in node-red then you are not putting the access token in the header correctly.

yes colin I understand your point, but let me be clear I will be able to generate the access token only by using POST method and it is not working in node-red, only after generating the Access token i shall pass it in header.

Why then, when I asked for a flow to test did you post one that started with the GET? What you need to post here is a flow that shows the error you are getting.
Also, you did not respond to @knolleary's message.

upon searching in google i do see that error is because of SSL certificate validation