Reputation: 491
When I do curl https://10.184.96.62:3000/status
, server sends back json data. All good.
Using the below golang code, the application prints :
2019/05/21 18:29:15 Get https://10.184.96.62:3000/status: x509: cannot validate certificate for 10.184.96.62 because it doesn't contain any IP SANs
package main
import (
"log"
"net/http"
)
func main() {
_, err := http.Get("https://10.184.96.62:3000/status")
if err != nil {
log.Fatal(err)
}
}
What am I missing?
Upvotes: 0
Views: 1576
Reputation: 491
The problem was with the certificate I generated. I used openssl
to create a self-signed certificate. As I shared, curl
was able to use it to establish connection with the server. But not the go application.
In some forum I saw a comment that said that getting openssl
to work in this scenario is tricky. So I used this go code to generate the certificate. Using this certificate, go app was also able to make the request with out making any change to the source code I shared in my question.
Hope this helps some one in need.
Upvotes: 0
Reputation: 3042
The problem that the error message indicates is specific to the combination of HTTPS with IP addresses: usually a SSL certificate uses the hostname to check the authenticity of the server. In your case there is no hostname, but a IP address instead. There are two possible solutions to your problem:
subjectAltNames
("Subject Alternative Names" - SAN) field of your certificate (see RFC 5280).Upvotes: 3