[PYTHON] Crypter ACME avec Alibaba Cloud: concepts liés aux certificats SSL

Dans cet article en plusieurs parties, vous apprendrez à utiliser l'API Let's Encrypt ACME version 2 avec ** Python ** pour les ** certificats SSL **.

À propos de cet article

Let's Encrypt est un sujet populaire et de nombreuses informations à ce sujet sont déjà disponibles en ligne. Cependant, cet article est utile si vous souhaitez en savoir plus sur ces sujets.

  1. Explique comment utiliser Let's Encrypt, ses avantages et comment utiliser l'API ACME v2.
  2. Alibaba Cloud API Gateway et Alibaba Cloud CDN Créez un client automatisé pour demander, vérifier, émettre et installer des certificats SSL sans utiliser plusieurs méthodes manuelles
  3. L'achat d'un certificat SSL pour chaque service pouvant rapidement devenir coûteux, nous avons développé une solution peu coûteuse pour protéger un grand nombre de services cloud.
  4. Contrairement au temps conventionnel requis pour obtenir un certificat commercial, vous pouvez rapidement configurer SSL pour les services.

Lorsque les services cloud deviennent universellement acceptés, API Gateway et CDN Avec des services populaires tels que ja / product / cdn), il est difficile de demander, d'émettre et d'installer un certificat SSL. Dans cet article, j'aimerais vous montrer comment faire cela facilement et correctement. L'accent n'est pas mis sur les certificats SSL de site Web, mais sur les services cloud et les points de terminaison REST difficiles à configurer.

Ces articles se concentrent sur les certificats SSL pour les services que certbot et les produits tiers ne prennent pas en charge les clients Let's Encrypt existants. Par exemple, certbot fournit un excellent support pour automatiser la création et le renouvellement des certificats SSL pour les serveurs Web Apache. Cependant, les serveurs Windows IIS sont peu pris en charge. Dans la dernière partie, nous montrerons la création d'un certificat SSL pour IIS, le regroupant au format PKCS # 12 et l'important dans IIS.

Qu'est-ce qu'un certificat SSL?

Le certificat SSL est le suivant.

1, nom de domaine, nom de serveur, nom d'hôte. 2. Identité organisationnelle telle que le nom et l'emplacement de l'entreprise. Les détails combinés avec le certificat SSL dépendent du type de validation effectuée par l'autorité de certification (CA) avant l'émission du certificat SSL.

Un certificat SSL est un ensemble d'un ou de plusieurs petits fichiers de données qui lie numériquement une clé de chiffrement aux détails de votre organisation. Lorsqu'il est installé sur un serveur Web, il active le cadenas, le protocole https et une connexion sécurisée du serveur Web à votre navigateur. Installé sur des services tels que API Gateway, protège la communication entre les systèmes.

Qu'est-ce que Let's Encrypt?

Selon Wikipedia, Let's Encrypt est un processus automatisé conçu pour éliminer le processus auparavant complexe de création, de vérification, de signature, d'installation et de renouvellement des certificats pour les sites Web sécurisés manuellement. Une autorité de certification qui fournit des certificats X.509 gratuits pour le chiffrement TLS (Transport Layer Security) via. Il a été publié le 12 avril 2016.

En bref, Let's Encrypt propose des certificats SSL gratuits pour les sites Web et de nombreux services cloud tels que API Gateway, CDN et ECS.

Qu'est-ce qu'une autorité de certification (CA)?

Une autorité de certification (CA) est une entité qui signe de manière cryptographique les certificats SSL et garantit leur authenticité. Votre navigateur ou système d'exploitation dispose d'une liste d'autorités de certification de confiance que vous pouvez utiliser pour vérifier les certificats de votre site.

Jusqu'à récemment, la plupart des autorités de certification avaient une opération commerciale qui facturait de l'argent pour leurs services de vérification et de signature. Let's Encrypt a mis ce processus à la disposition des utilisateurs gratuitement en automatisant entièrement le processus et en s'appuyant sur des sponsors et des dons pour financer l'infrastructure nécessaire.

Let's Encrypt est une autorité de certification qui émet des certificats SSL vérifiés par le domaine. Le serveur Let's Encrypt utilise le protocole ACME pour communiquer avec les clients ACME pour demander, émettre, renouveler et révoquer des certificats SSL.

Type de certificat SSL

Il existe de nombreux types de certificats SSL, mais les trois plus courants sont Validé par domaine (DV), Validé par l'organisation (OV) et Validé par extension (EV).

1, domaine validé (CABF OID 2.23.140.1.2.1) -Le type le plus courant, validé en utilisant uniquement le nom de domaine. 2, Organisation vérifiée (CABF OID 2.23.140.1.2.2) -Parce que le nom de l'organisation est attaché au certificat, il nécessite plus de vérification que DV. 3, Extended Validated (CABF OID 2.23.140.1.1) -Il nécessite le plus d'efforts pour être validé par l'autorité de certification et offre la confiance maximale au visiteur (la barre verte est affichée sur le navigateur Web). 4, auto-signature, authentification personnelle, test, signature de code et autres types.

En outre, les certificats SSL peuvent être à un seul domaine, à plusieurs domaines ou à un caractère générique pour chaque type. Il ne s'agit en réalité que d'une fonctionnalité marketing, car tous les certificats SSL prennent en charge un ou plusieurs noms de domaine, y compris les noms de domaine génériques.

Let's Encrypt ne délivre que des certificats SSL DV. Si vous avez besoin d'un certificat SSL OV ou EV, vous devrez utiliser une autorité de certification commerciale telle que Alibaba Cloud SSL Certificate Services (https://www.alibabacloud.com/en/product/certificates). Il n'y a aucune différence dans le certificat autre que la quantité et le type d'informations stockées dans le certificat. Non seulement le nom de domaine, mais également l'heure et le processus que l'autorité de certification termine pour valider l'organisation qui gère le nom de domaine. Pour les services qui offrent des transactions financières, considérez fortement les certificats SSL EV. Les certificats DV sont les meilleurs pour les services tels que les CDN et les passerelles API.

Il n'y a aucune différence dans les types de certificats SSL (DV, OV, EV) pour les serveurs Web et les services cloud. Les clients (navigateurs Web et personnes réelles) peuvent s'en soucier. Si j'étais connecté à une banque et que la banque n'avait qu'un certificat DV SSL, je me demanderais pourquoi. L'important est d'évaluer la valeur de ce que vous protégez et le coût de l'échec de le protéger. Le certificat DV SSL pour le formulaire de contact sur le site Web est parfait. Un certificat EV est nécessaire pour traiter votre carte de crédit. Quiconque envoie de l'argent souhaite être entièrement validé au niveau de la validation étendue, pas seulement la validation du domaine.

Qu'est-ce que ACME?

ACME est une abréviation de "ACME". Abréviation de Automatic Certificate Management Environment. ACME est un protocole de communication permettant aux clients de s'interfacer avec une CA (autorité de certification) pour gérer (émettre, renouveler, révoquer) les certificats SSL.

Le protocole ACME est basé sur la transmission de messages au format JSON via HTTPS. La demande est signée avec une clé privée et authentifiée avec la clé publique correspondante. Cette paire de clés est appelée une clé de compte. Gardez à l'esprit que cette paire de clés est différente de la paire de clés utilisée pour créer une demande de signature de certificat (CSR).

** Clé de compte ** La clé de compte est utilisée pour fournir l'ID du compte demandant le service de certificat. Aucune méthode telle que login / mot de passe n'est utilisée. Il est très important de conserver la paire de clés de votre compte en lieu sûr car la clé de compte est utilisée pour émettre, renouveler et révoquer des certificats SSL. Si vous perdez votre clé de compte, les certificats créés sous ce compte seront mis en attente. Ces certificats ne peuvent être ni renouvelés ni révoqués. Dans ce cas, vous devez créer une nouvelle clé de compte et émettre un nouveau certificat SSL à la place du certificat perdu. Si un tiers malveillant accède à votre clé de compte, vous pouvez modifier l'adresse e-mail de votre contact et révoquer votre certificat. Vous ne pouvez pas émettre un nouveau certificat SSL pour votre domaine car il nécessite une validation HTTP ou DNS de votre nom de domaine.

** Clé de certificat ** Une clé de certificat est une paire de clés utilisée pour signer une CSR (Certificate Signing Request). Ce n'est pas une clé de compte, même si les deux sont des paires de clés. Pour des raisons de sécurité, vous devez éviter de signer votre clé de compte dans CSR. En général, il est courant de créer une nouvelle clé de certificat pour chaque certificat SSL.

** Demande de signature de certificat CSR ** CSR est un fichier (message) envoyé à CA (Certificate Authority - Let's Encrypt) pour demander un certificat SSL. Le CSR contient des détails tels que le nom de l'entreprise, l'emplacement et le nom de domaine de la personne qui demande le certificat SSL. Puisque Let's Encrypt émet uniquement un certificat SSL DV (Domain Validated), seul le nom de domaine est vérifié dans le certificat SSL généré, seul le nom de domaine est décrit et les informations de contact sont décrites. Une adresse e-mail facultative pour est également répertoriée. Les détails tels que le nom et l'emplacement de l'entreprise ne sont pas inclus.

Exemple d'API ACME Python

Dans cette série d'articles, nous allons vous montrer comment utiliser chaque API ACME dans un petit programme Python facile à comprendre. Vous pouvez également utiliser l'API Alibaba Cloud pour automatiser les modifications des enregistrements DNS et utiliser les services Alibaba Cloud (API Gateway et [CDN]( Nous vous montrerons également comment installer un certificat SSL sur https://www.alibabacloud.com/en/product/cdn)) pour avoir un nom de domaine personnalisé pour chaque service protégé par SSL.

L'environnement requis est le suivant. Python 3.6 ou version ultérieure (non compatible avec Python 2)

Plate-forme: testé sur Windows 10

Bibliothèque Python: (version testée)

1, version chiffrée 2.2.2 (27 mars 2018) 2, pyOpenSSL version 18.0.0 (16 mai 2018) 3, demande version 2.19.1 (14 juin 2018)

Programme: (version testée)

1, Version Python pour Windows 3.6.5 (28 mars 2018) 2, [https://slproweb.com/products/Win32OpenSSL.htm](https://www.alibabacloud.com/blog/let%27s-encrypt-acme-on-alibaba-cloud-%E2%80%93 -part-1_593777) l "> OpenSSL version 1.1.1.0h pour Windows (27 mars 2018) Téléchargement: [exemple ACME en Python (Zip-20 Ko)](https://alicloud-common.oss-ap-southeast-1.aliyuncs.com/neoprime_acme_examples_python.zip?spm=a2c65.11461447.0.0.481312958mBJIP&file= neoprime_acme_examples_python.zip)

Remarque: le logiciel antivirus vous avertira de ce téléchargement car il s'agit d'un fichier ZIP contenant le code source Python.

Comment utiliser l'exemple ACME.

  1. Créez un répertoire de travail sur le système. 2, veuillez télécharger le package ci-dessus.
  2. Décompressez le package dans votre répertoire de travail. 4, créez Let's Encrypt Account Key-python make_account_key.py. 5, Afficher les informations de compte --python get_account-info.py.
  3. Lisez la série d'articles et étudiez des exemples de code source.

Aperçu

Une fois que vous avez créé votre clé de compte, votre clé de certificat et votre CSR, vous disposez de tout ce dont vous avez besoin pour demander un certificat SSL via Let's Encrypt. Avant que Let's Encrypt n'émette un certificat SSL, Let's Encrypt doit valider votre demande de certificat en vérifiant que vous gérez votre nom de domaine via un fichier de validation HTTP ou un enregistrement DNS TXT. (Dans la terminologie Let's Encrypt, cela s'appelle une commande). La plupart des services cloud, tels que API Gateway, ne prennent pas en charge la validation basée sur les fichiers HTTP, de sorte que les exemples de cette série d'articles ne prennent en charge que la validation DNS.

Le moment est venu de télécharger la configuration Python, les packages Python requis et le code source des exemples ACME.

[Partie 2 de la série](https://www.alibabacloud.com/blog/let%27s-encrypt-acme-with-alibaba-cloud-api-gateway-and-cdn-%E2%80%93-part- 2_593778? Spm = a2c65.11461447.0.0.481312958mBJIP) crée une clé de compte, une clé de certificat, une demande de signature de certificat (CSR) et commence à travailler sur chaque API ACME en Python.

Recommended Posts

Crypter ACME avec Alibaba Cloud: concepts liés aux certificats SSL
Cryptez ACME avec Alibaba Cloud: créez des points de terminaison, des répertoires et des comptes ACME ACME
Crypter ACME avec Alibaba Cloud: créer une clé de compte, une clé de certificat, une demande de signature de certificat
Crypter ACME avec Alibaba Cloud: créez une requête ACME et signez une charge utile JWS
Comment déployer une application Django dans le cloud Alibaba
Comment déployer une application Web sur Alibaba Cloud en tant que pigiste
Installez Odoo sur une instance Alibaba Cloud ECS
Comment installer Fast.ai sur le GPU Alibaba Cloud et l'exécuter sur un ordinateur portable Jupyter