J'ai un déploiement nginx de base et un certificat existant émis par let's encrypt via cert-manager. Je pensais que tout était en place pour commencer à utiliser le certificat mais je ne peux pas me connecter sur https.
La connexion à l'IP du LoadBalancer et au domaine fonctionne. La connexion au domaine avec https est impossible. Chrome dit ERR_SSL_PROTOCOL_ERROR
Firefox dit SSL_ERROR_RX_RECORD_TOO_LONG
et SSL Labs dit Assessment failed: No secure protocols supported
. C'est toujours le même problème.
Voici le service :
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: example
labels:
app: example
spec:
type: LoadBalancer
ports:
- name: http
protocol: TCP
port: 80
targetPort: 80
- name: https
protocol: TCP
port: 443
targetPort: 80
selector:
app: example
Voici l'entrée :
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: nginx
namespace: example
annotations:
cert-manager.io/cluster-issuer: letsencrypt-production
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
spec:
tls:
- hosts:
- 'example.com'
secretName: example-production-tls
rules:
- host: example.com
http:
paths:
- path: /
backend:
serviceName: nginx
servicePort: 443
Le certificat est rempli :
kubectl describe secret
...
Data
====
tls.crt: 3574 bytes
tls.key: 1675 bytes
ca.crt: 0 bytes
Et la ressource du certificat est détenue par la bonne entrée. J'ai remplacé mon domaine par "exemple" ci-dessus.
Il semble que tout soit en place mais je ne sais pas pourquoi je ne peux pas me connecter via https. Que puis-je faire pour résoudre ce problème ?
MISE À JOUR : J'ai découvert qu'il me manquait certaines configurations pour mon déploiement et mon image nginx. J'ai suivi toutes les étapes ici : https://kubernetes.io/docs/concepts/services-networking/connect-applications-service/#securing-the-service
Comme auparavant, je peux me connecter à l'IP de LoadBalancer sur 443 et 80, mais la connexion https échoue. Cela fonctionne avec http :
curl http://<EXTERNAL-IP> -k
<html>
<h1>Hello!</h1>
<p>Stay tuned for launch!</p>
</html>
Échec avec https :
curl https://<EXTERNAL-IP> -k
curl: (35) error:1400410B:SSL routines:CONNECT_CR_SRVR_HELLO:wrong version number