web-dev-qa-db-fra.com

Combien de certificats SSL dont vous avez besoin - ASPnet Core + Apache Inverser le proxy?

Lorsque vous déployez ASPnet Core App sous Linux, vous le faites normalement via le proxy inverse. C'est à dire. Kestrel héberge l'application et Apache gère le trafic Internet public parlant à Kestrel.

Alors Kestrel et Apache nécessitent un certificat SSL pour HTTPS.

Il y a aussi Identity Server 4 Fonction utilisée dans l'application qui nécessite également un certificat.

J'ai déjà utilisé des certificats auto-signés pour Kestrel et Identity Server avant. Mais maintenant je pense - est-ce bon chemin?

Question - est-il plus sécurisé Utiliser 3 certificats différents ou puis-je simplement utiliser un certificat CA pour les 3?

1
Boppity Bop

Il n'y a pas une réponse simple oui/non à cette question, j'ai peur.

Si Kestrel et Apache fonctionnent sur la même boîte, vous utilisez effectivement un certificat uniquement parce que Kestrel s'attend à un. Il ne fournit aucune sécurité et le est-il plus sécurisé? Question n'est pas applicable.

Si Kestrel et Apache sont dans différentes cases, il est légèrement plus complexe. Si les deux cases sont sur un réseau de confiance, vous pouvez discuter de la même manière que ci-dessus - les certificats ne sont là que là-bas car Kestrel s'attend à un.

Si le réseau n'est pas fait confiance, vous aurez maintenant besoin d'une certaine sécurité. Le certificat fournit l'identité de la machine requise pour insixer une connexion TLS. Que vous utilisiez un certificat auto-signé ou un certificat de CA signé pour cela ajoute plus de choix.

  • Si l'application Kestrel utilise un FQDN interne (E.G. app.local) Et l'autorité de certification n'est pas disposée à certifier ces noms (par exemple, une CA commerciale ne le fera pas), vous êtes obligé d'utiliser des certificats auto-signés.
  • Si l'autorité de certification est interne et disposée à certifier les noms locaux, vous pouvez envisager d'utiliser un CA pour le certificat Kestrel.

Ainsi, en supposant que vous puissiez utiliser un certificat de CA pour Kestrel, vous devez vous demander pourquoi vous auriez besoin de le faire:

  • Un certificat signé de CA devient généralement utile dans un scénario unique. Si vous avez un serveur et de nombreuses parties à compter (clients), un certificat émis par CA assure:

    • les partis de comptoir n'ont besoin que de faire confiance à l'autorité de certification et que chaque certificat émis est implicitement fait confiance (un certificat auto-signé doit être approuvé par tous les clients);
    • les partis de comptoir n'ont pas besoin d'examiner les processus de gouvernance et de fonctionnement de chaque serveur qu'ils souhaitent faire confiance car ils peuvent supposer que si la CA l'a certifiée, il est digne de confiance;
    • tout fonctionne après un renouvellement de certificat (comparé à un auto-signé, qui devrait être distribué à tous les clients après le renouvellement);
    • travaux de révocation (il n'y a pas de notion de révocation pour les certificats auto-signés - si le certificat de serveur est compromis, vous devez supprimer le certificat de tous les clients );
  • Toutefois, si vous êtes dans un scénario individuel (comme entre un proxy inverse et un serveur d'applications), une autorité de certification apporte moins d'avantages (les décisions de confiance sont plus faciles, le renouvellement est facile et si le serveur est compromis, vous supprimez simplement. le certificat d'un client). En fait, si vous n'avez pas de CA disponible, les frais généraux de la construction et de la gestion d'un CA juste pour la connexion entre le serveur d'applications et le proxy inverse sont si importants pour ne pas valoir la peine.

Pour ce dernier, le seul inconvénient d'utiliser un certificat auto-signé pourrait être le manque de gestion centrale. Beaucoup d'aide de CAS à la gestion du cycle de vie des certificats émis, même si c'est aussi simple qu'un courrier électronique automatisé vous rappelle que le certificat est sur le point d'expirer ou aussi complexe que les renouvellements automatisés. Un certificat auto-signé est géré par vous. Pour aider à atténuer cela, certaines organisations utilisent des outils de gestion de cycle de vie de certificat pour gérer leurs certificats et si l'outil peut également surveiller un certificat auto-signé, alors cela prend en charge ce problème.

Ainsi, pour résumer, si votre CA fournit un service de gestion de cycle de vie supplémentaire qui vous aide à gérer le certificat, il peut être intéressant d'être envisagé; Mais sinon, dans un scénario individuel tel qu'entre un serveur d'applications et un proxy inverse, cela ne fait pas vraiment de différence si vous utilisez un certificat auto-signé ou un certificat signé de CA.

Si vous descendez de la route d'un certificat de CA émis pour le serveur d'applications, vous avez plus de décisions:

  • Si l'application et le proxy inverse sont sur la même boîte, vous pouvez envisager en toute sécurité en utilisant un certificat entre eux - il est peu probable que vous soyez dans une situation où un service est compromis tandis que l'autre en est encore fait confiance. Vous pouvez supposer que tous les certificats sur une boîte sont compromis si l'un est, il n'ya donc généralement aucun bénéfice réel dans des certificats distincts.

  • Si les applications sont dans différentes cases, vous pourriez être dans une situation où l'une est compromise pendant que l'autre n'est pas. En prévision de ces cas, vous devez avoir un certificat différent sur chaque case.


Notez que, si ce qui précède discute de la communication entre le serveur d'applications et le proxy inverse, vous pouvez essayer le même raisonnement avec Identity Server 4 (tout ce qui peut être).

1
garethTheRed