I have a Node.js https server that uses a self-signed certificate for authentication. I am using my public ip address (xxx.xxx.xxx.xxx) right now instead of a domain name. To test this, I port forwarded port 8080 on my router, and went to https://xxx.xxx.xxx.xxx:8080 and sure enough, no lock symbol. Chrome recognizes the certificate, and establishes a secure connection.
So if Chrome can see my webservice, why can't Alexa? I basically followed the steps here. I created a new Alexa Skill in the Amazon Developer Portal, created and uploaded my openssl certificate (which was proven to work), and set the endpoint as https://xxx.xxx.xxx.xxx:8080. So Alexa should be able to reach my web service. Instead, I get:
Test Error (when testing in the Amazon Developer Portal)
The remote endpoint could not be called, or the response it returned was invalid.
Card Error (in the Alexa app when asking the Echo to launch the service)
A connection could not be established to Resource [https://xxx.xxx.xxx.xxx:8080], Type [HTTP], Region [NA]