Comment utiliser le certificat et la clé privée créés par l'authentification BASIC de Docker avec AWS ALB

en premier

Suivez les étapes ci-dessous.

  1. Créez un certificat BASIC sur Amazon Linux avec docker installé
  2. Démarrez ALB en utilisant la clé privée et le certificat émis par l'authentification BASIC

Je vous serais reconnaissant si vous pouviez me faire savoir s'il y a des erreurs de termes ou de reconnaissance.

Étape 1 Créer une certification BASIC

Tout d'abord, réécrivez subjectAltName sur la ligne 253 de openssl.cnf à l'adresse privée de l'instance.

[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ sudoedit /etc/pki/tls/openssl.cnf

Voici ce qui a été affiché avec `` chat '' après la réécriture.

[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ cat -n /etc/pki/tls/openssl.cnf | head -n 255 | tail -n 5
   251
   252  # Include email address in subject alt name: another PKIX recommendation
   253  subjectAltName=IP:xxx.xxx.xxx.xxx
   254  # Copy issuer details
   255  # issuerAltName=issuer:copy

Après cela, créez le répertoire suivant.

[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ mkdir certs

Créez le certificat ci-dessus (domain.crt) et la clé privée (domain.key) dans le répertoire ci-dessus.

Vous serez invité à entrer votre mot de passe.



#### **`Vous serez invité une deuxième fois. Entrez la même valeur.`**
```verifying - enter pem pass phrase

 Cette phrase de passe ne sera plus utilisée.

[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ openssl req -newkey rsa:2048 -keyout certs/domain.key -x509 -days 365 -out certs/domain.crt Generating a 2048 bit RSA private key ........................................................................................+++ ........+++ writing new private key to 'certs/domain.key' Enter PEM pass phrase: Verifying - Enter PEM pass phrase:


 Les éléments suivants sont tous vides et appuyez sur Entrée.

Country Name (2 letter code) [XX]: State or Province Name (full name) []: Locality Name (eg, city) [Default City]: Organization Name (eg, company) [Default Company Ltd]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []: Email Address []:


 Dans ce qui suit, accédez au répertoire certs et supprimez la phrase de passe.
 Si vous ne le faites pas, docker ne démarrera pas avec l'erreur suivante: `` `` msg = "tls: échec de l'analyse de la clé privée" `` ``

#### **`Entrez maintenant la phrase secrète.`**
```enter pass phrase for domain.key


[ec2-user@ip-xxx-xxx-xxx-xxx certs]$ openssl rsa -in domain.key -out new.key Enter pass phrase for domain.key: writing RSA key


 Copiez le certificat.

[ec2-user@ip-xxx-xxx-xxx-xxx certs]$ sudo cp certs/domain.crt /etc/pki/ca-trust/source/anchors/xxx.xxx.xxx.xxx.crt


 Redémarrez.

[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ sudo update-ca-trust enable [ec2-user@ip-xxx-xxx-xxx-xxx ~]$ sudo update-ca-trust [ec2-user@ip-xxx-xxx-xxx-xxx ~]$ sudo service docker restart


 Créer un mot de passe.
 Entrez respectivement le nom d'utilisateur et le mot de passe dans le nom d'utilisateur et le mot de passe.

[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ docker run --entrypoint htpasswd registry:2.6.2 -Bbn username password > auth/htpasswd


 Démarrez le conteneur pour le registre privé.

[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ docker run -d -p 5000:5000
--restart=always
--name registry
-v pwd/auth:/auth
-v pwd/certs:/certs
-e "REGISTRY_AUTH=htpasswd"
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm"
-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd"
-e "REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt"
-e "REGISTRY_HTTP_TLS_KEY=/certs/new.key"
registry:2.6.2


 Assurez-vous de pouvoir vous connecter.

[ec2-user@ip-xxx-xxx-xxx-xxx certs]$ docker login https://xxx.xxx.xxx.xxx:5000 Username: testuser Password: WARNING! Your password will be stored unencrypted in /home/ec2-user/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded


## Étape 2 Démarrez ALB

 Connectez-vous en utilisant aws-cli.
 Les pièces avec la clé d'accès XXX et la clé d'accès secrète YYY suivantes sont
 Vous pouvez vérifier en cliquant sur IAM → Cliquez sur Utilisateur → Cliquez sur Informations d'identification.

[ec2-user@ip-xxx-xxx-xxx-xxx certs]$ aws configure AWS Access Key ID [None]: XXX AWS Secret Access Key [None]: YYY Default region name [None]: ap-northeast-1 Default output format [None]: json


 Accédez au répertoire certs et téléchargez le certificat dans IAM.
 my-secret-sert sera le nom du certificat.

[ec2-user@ip-xxx-xxx-xxx-xxx certs]$ aws iam upload-server-certificate --server-certificate-name my-server-cert
--certificate-body file://domain.crt --private-key file://new.key



 ALB nécessite deux sous-réseaux dans le VPC. Après les avoir créés, accédez à l'écran de la console EC2 et cliquez sur l'équilibreur de charge.
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/0ecc2fad-f91b-a8a4-4463-14b90014a3ee.png)

 Sélectionnez ALB.

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/4d578306-bafd-76d8-81ea-83d005aab6cc.png)

 Sélectionnez HTTPS.
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/f462129a-f025-1031-4330-7babe5fea958.png)

 Dans la sélection VPC, sélectionnez le VPC et le sous-réseau créés précédemment.
 Dans la sélection de certificat par défaut, sélectionnez le certificat téléchargé.

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/82a610d1-98a1-42df-7514-b064cb9dd117.png)

 Définissez le routage comme suit.
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/9b1064ad-1855-2d9d-3680-a6d2ce824106.png)

 L'enregistrement d'une cible vous permet d'enregistrer EC2 dans le sous-réseau sélectionné avec le groupe cible.
 Vérifiez s'il a été créé normalement par le message suivant.

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/7a6c6b97-51ba-7aef-f17d-6ef5b9dbdb6b.png)

## Article de référence
 --Création d'un certificat de serveur avec OpenSSL
https://rfs.jp/server/setting/ssl-openssl.html
 - L'histoire du téléchargement d'un certificat SSL vers ELB en luttant
https://www.simpline.co.jp/tech/%E5%9B%9B%E8%8B%A6%E5%85%AB%E8%8B%A6%E3%81%97%E3%81%AA%E3%81%8C%E3%82%89elb%E3%81%ABssl%E8%A8%BC%E6%98%8E%E6%9B%B8%E3%82%92%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E3%81%97%E3%81%9F/



Recommended Posts

Comment utiliser le certificat et la clé privée créés par l'authentification BASIC de Docker avec AWS ALB
Comment utiliser le framework Java avec AWS Lambda! ??
Comment écrire du code de test avec la certification de base
[Java] Comment obtenir la clé et la valeur stockées dans Map par traitement itératif
Mettez en majuscule uniquement la plage spécifiée avec la sous-chaîne. (Comment utiliser la sous-chaîne)
Comment utiliser PlantUML avec Visual Studio Code (créé le 30 octobre 2020)
[Rails] Comment introduire le kaminari avec Slim et changer le design
Comment utiliser MinIO avec la même fonction que S3 Utiliser docker-compose
Comment utiliser la méthode link_to
Comment utiliser StringBurrer et Arrays.toString.
Comment utiliser la méthode include?
Comment utiliser la méthode form_with
Comment utiliser EventBus3 et ThreadMode
Comment utiliser la classe wrapper
Comment utiliser l'égalité et l'égalité (comment utiliser l'égalité)
Comment utiliser mssql-tools avec Alpine
twitter-4 sélections d'erreurs avec la fonction de connexion Twitter créée par omniauth gem et comment les traiter
Comment déployer sur AWS à l'aide de NUXTJS S3 et CloudFront officiels? Avec docker-compose
Comment utiliser les fichiers args:, environment:, env_file: et .env avec la commande docker-compose
Comment SSH dans Ubuntu à partir d'un terminal avec authentification par clé publique
Utilisez MyBatis pour obtenir une carte avec une clé comme identifiant et une valeur comme entité
Comment définir les tabulations et les espaces pour qu'ils soient visibles à l'aide de la touche de tabulation pour insérer des espaces dans des fichiers Java dans Eclipse
Comment utiliser OrientJS et OrientDB ensemble
[Java] Comment utiliser la classe File
Comment utiliser BootStrap avec Play Framework
[Rails] Comment utiliser la méthode de la carte
[Java] Comment utiliser la méthode toString ()
Etudier comment utiliser le constructeur (java)
[Traitement × Java] Comment utiliser la boucle
Comment configurer et utiliser kapt
[Traitement × Java] Comment utiliser la classe
Comment trouver les dizaines et les unités
[Traitement × Java] Comment utiliser la fonction
Comment supprimer des données avec une clé externe
Comment tester l'étendue privée avec JUnit
Comment utiliser les méthodes substring et substr
[Java] Comment utiliser la classe Calendar
Comment utiliser @Builder et @NoArgsConstructor ensemble
Comment utiliser ToolBar avec la super marge Part1 Définir les caractères et changer les couleurs
[Rails6] Comment connecter la fonction d'affichage générée par Scaffold avec la fonction utilisateur générée par devise
Comment utiliser Eclipse sur mon PC avec 32 bits et 2 Go de mémoire
Comment partager côté hôte (Windows) et côté invité (CentOS 7) avec VirtualBox